Arduino programozás segítség

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Köszi!
De:???
Magyarázatot is szeretnék kérni hozzá!
Amik ujjak benne:
unit16_t
Erről valami olyat oévastam hogy igy a változo értéke proci váltásával is azonos lett. De nem értettem igazán. Igy jo hogy előkerült.
Akkor a void oda ide ben a "_" van jeletősége?
Meg a felülírással mi a gond??
A pillanatnyi értékhez nem ez kell?
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

A címtől eltérő és célzott kérdésem lenne.
Böngészve a forum tartalmában, talaltam olyat hogy jo pár éve volt Bascom tanfolyam.
Ez még mindíg létezik?
Mi az a tudásszint ami már megfelelő alapokkal bír ilyen nekifutásnak??
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduino programozás segítség

Hozzászólás Szerző: kapu48 »

„Magyarázatot is szeretnék kérni hozzá!
Amik ujjak benne:
unit16_t
Erről valami olyat olvastam hogy így a változó értéke proci váltásával is azonos lett. De nem értettem „
Igen mivel én már leginkább a fejlettebb 32bites ARM procikat használom ehhez vagyok szokva.
„igazán. Igy jo hogy előkerült.
Akkor a void oda ide ben a "_" van jelentősége?”
Igen ezek új változók nevei. „_” csak lustaság a részemről, adhatsz nekik bármilyen tetszőleges neveket
„Meg a felülírással mi a gond??”
Mivel a loop folyamatosan fut ezért, minden körben beszorozza neked:
elorre= (elorre*inpl); // Mos te ezt egyenlővé teszed a szorzattal
vissza=(vissza*inpl); // Mos te ezt egyenlővé teszed a szorzattal
A megszakítás növeli a beszorzott értékeket: elorre++, vissza++ számlálókat.
Amik ezután már tovább szorzódnak, és teljesen fals eredményeket kapsz!
„A pillanatnyi értékhez nem ez kell? „
Azt hiszem magadtól is rájöttél, hogy nem?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduino programozás segítség

Hozzászólás Szerző: kapu48 »

A bascom tanfolyam tudtommal jogi visszaélések miatt, kikerült a projektből!
Erről bővebben ROBERT nyilatkozhat!
Pedig nagyon szuper volt, és nagyon hiányzik!

Szégyellje magát! Aki miatt ezt nélkülöznünk kel! :twisted:
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Ok! Most így már sokkal tisztábban látom a kodod.
Köszönöm.
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Játszadozom a gondolattal, hogy nekiállok tft-n megjeleníteni dolgokat. Csak hát ez már nem olyan egyszerű, mint a karakteres lcd. Fórumon kutakodtam de nem találtam kiindulási alapot. Tudtok e olyan dokumentációt ami segíthet nekem a kezdő lépésektől indulva. Kijelzőt még nem vettem, esetleg tanács hogy milyet. Uno lapkám van!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino programozás segítség

Hozzászólás Szerző: Robert »

UNO - kicsi. A grafikus kijelző az UNO memóriájának >80%át megeszi és a flashból is 15...20k-t.
Megismerni én a 2.4"-t szoktam javasolni - touch-l.

De nézd meg a Nextionokat is (soros kommunikációs).
Drágább, de töredék idő rá fejleszteni!
http://www.tavir.hu - a gazda :)
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Kód: Egész kijelölése

TWI COM MASTER */

#include<Wire.h>
#include<LiquidCrystal.h>

LiquidCrystal lcd(4,5,6,7,8,9);


byte A;  
byte B;
byte C;
byte D;

byte Val[4];

void setup(){

Wire.begin();
lcd.begin(20,4);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Val1");
lcd.setCursor(0,1);
lcd.print("Val2");
lcd.setCursor(0,2);
lcd.print("Val3");
lcd.setCursor(0,3);
lcd.print("Val4");
}

void loop(){
Wire.requestFrom(2,4);

Val[0]=Wire.read();
Val[1]=Wire.read();
Val[2]=Wire.read();
Val[3]=Wire.read();

A=Val[0];
B=Val[1];
C=Val[2];
D=Val[3];

switch (A){
case 0:{
lcd.setCursor(5,0);
lcd.print(A);
break;}

case 1:{
lcd.setCursor(5,0);
lcd.print(A);
break;}
}

switch (B){
case 0:{
lcd.setCursor(5,1);
lcd.print(B);
break;}

case 1:{
lcd.setCursor(5,1);
lcd.print(B);
break;}
}

switch (C){
case 0:{
lcd.setCursor(5,2);
lcd.print(C);
break;}

case 1:{
lcd.setCursor(5,2);
lcd.print(C);
break;}
}

switch (D){
case 0:{
lcd.setCursor(5,3);
lcd.print(D);
break;}

case 1:{
lcd.setCursor(5,3);
lcd.print(D);
break;}
}


}
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Kód: Egész kijelölése

include<Wire.h>

int EI=2;
int HI=3;
int F1=10;
int F2=11;
int F3=12;
int F4=13;
int KF=14;
int UF=15;

byte A;
byte B;
byte C;
byte D;

char outData[4];

void setup(){

Wire.begin(2);

Wire.onReceive(data);


pinMode(EI,INPUT);
pinMode(HI,INPUT);
pinMode(F1,INPUT);
pinMode(F2,INPUT);
pinMode(F3,INPUT);
pinMode(F4,INPUT);
pinMode(KF,INPUT);
pinMode(UF,INPUT);

}


void loop(){


if(digitalRead(EI)==LOW&&digitalRead(HI)==LOW){
delay(3);
A=0;
}
if(digitalRead(EI)==HIGH&&digitalRead(HI)==LOW){
delay(3);
A=1;
}

if(digitalRead(EI)==LOW&&digitalRead(HI)==HIGH){
delay(3);
A=2;
}

if(digitalRead(F1)==LOW&&digitalRead(F2)==LOW&&digitalRead(F3)==LOW&&digitalRead(F4)==LOW){
delay(3);
B=0;
}
if(digitalRead(F1)==HIGH&&digitalRead(F2)==LOW&&digitalRead(F3)==LOW&&digitalRead(F4)==LOW){
delay(3);
B=1;
}
if(digitalRead(F1)==LOW&&digitalRead(F2)==HIGH&&digitalRead(F3)==LOW&&digitalRead(F4)==LOW){
delay(3);
B=2;
}
if(digitalRead(F1)==LOW&&digitalRead(F2)==LOW&&digitalRead(F3)==HIGH&&digitalRead(F4)==LOW){
delay(3);
B=3;
}
if(digitalRead(F1)==LOW&&digitalRead(F2)==LOW&&digitalRead(F3)==LOW&&digitalRead(F4)==HIGH){
delay(3);
B=4;
}

if(digitalRead(KF)==HIGH){
delay(3);
C=1
}
else{C=0;}


if(digitalRead(UF)==HIGH){
delay(3);
D=1;
}
else{D=0;}

}

void data(){

Wire.write(outData);
}
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Üdv mindenkinek!
Help me!

Valamiért nem jön össze a masteren....
Az első változó megkapja az értéket de a többi már nem...
Mi az oka???


Típus konverzio??


Nem tudok rájönni.....
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Helyesbitek. Slavenel a char tömb elemei:
A,B,C,D
char outData[]={A,B,C,D};
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

Az outData változó bytben is próbáltam küldeni.
Annyi már lejött az egészből hogy a slaveban van hiba.
Mert ha a outData tömböt a küldéskor az indexét léptetem. Akko el is megy minden adat csak a masteren nem tudom akkor feldolgozni.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduino programozás segítség

Hozzászólás Szerző: kapu48 »

Nem töltöd fel, sehol értékel a tömbödet: char outData[4]; ? Üres marad!
Mit küldesz?

Nem adod át a tömb hosszát: Wire.write(outData,?); ?
Ha pointerrel hívod meg, kéri a méretet is:
// must be called in:
// slave tx event callback
// or after beginTransmission(address)
size_t TwoWire::write(const uint8_t *data, size_t quantity);
Helyesen: Wire.write(outData,4);
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

De feltöltöm!!
Azért írtam a helyesbítést.. két kommentel a slave code alatt.
Mert a slave codebol kimaradt véletlen.
Avatar
Verjoz
SzínkódFestő
Hozzászólások: 99
Csatlakozott: 2018. március 13. kedd, 7:18

Re: Arduino programozás segítség

Hozzászólás Szerző: Verjoz »

De én így küldtem char ként
Wire.write(outData);
byte ként

Wire.write(outData);
Válasz küldése