A lenti programnak az lenne a működése, hogy két véletlen számot generál, a soros monitorra kiírja, majd a felhasználó igen - nem válasszal eldönti, azonos-e a két szám. De a program folyamatosan fut, kiadja sorban a két számot, nem "várja meg" a felhasználó válaszát a soros monitorról. Próbáltam for cikulssal is, de elakadtam. Kerestem példaprogramokat is, de azokban sem találtam meg a megoldást. Mi lehet a gond?
void loop(){
/// véletlenszám generálás
random1 = random(1, 20);
random2 = random(1, 20);
Serial.println();
Serial.println(random1); // első szám kiíratás
Serial.println(random2); // 2. szám kiíratás
Serial.println();
/// soros portrol adatot var
while(!Serial.available()) {}// Itt várakozik amíg a bejövő adat = 0
betu = Serial.read();
if (random1 == random2){
if (betu == 'i'){
Serial.println("Helyes 1");
Serial.println();
}
if (betu == 'n'){
Serial.println("Rossz valasz 2");
Serial.println();
}
}else {
if (betu == 'i') {
Serial.println("Rossz 3.");
Serial.println();
}
if (betu == 'n') {
Serial.println("Helyes válasz 4");
Serial.println();
}
}
}
És vigyáz a blokk kezdő { és végző } zárójelek elhelyezésére!
Ne felejtsd le őket!
Ha kihagyod pl: if(feltétel) Utasítás; // A feltételes elágazás csak erre az 1 sorra érvényes
Utasítások;
/// soros portrol adatot var
if (Serial.available() > 0) {
ez nem vár adatot, csak megnézi, hogy van-e adat?
ennek az if-nek az else ágában kellene lekezelni azt az esetet, ha még nem jött adat, ne generáljon újabb kérdéseket.
(hanem várjon a válaszra)
Magyarázat helyet.
Direkt belinkeltem a Robert által írt „arduino_notebook”-ot!
Ami igen érthetően és tömören, elmagyarázza a „while” utasítás lényegét!
Különben a Cpp rejtelmeiről már írtak több kötetes könyveket!
Amiket szerintem csak a gyakorlás során lehet memorizálni.