Feladatok
Óra A mikrokontrollerből egy órát kell kialakítani. Az óra rendelkezhet speciális funkciókkal: –Másodpercek kijelzése számokkal –Riasztás ledek használatával –Stopper funkció –Tized, századmásodperces stopper –Ébresztés, időtartam mérés (3 perces óra) –Sakkóra funkció: két stopper méri az egyes sakkozók gondolkodási idejét, ami előre megszabott (leesik a zászló)
Bármilyen óraprogram lelke az időzítő ciklus A _delay_ms(1) 1 ezredmásodperces késleltetést okoz. (elvileg) –# include –Megkeresni és megnézni a delay.h állományt, megnézni a _delay_ms eljárást! (winavr könyvtár) delay_1s(void) zj uint8_t i; //i 8 bites unsigned integer típusú változó for (i=0; i<100; i++) _delay_ms(10); //100x10=1000 zj
A legegyszerűbb óra: egy led másodpercenként felvillan! Az LCD-re és a soros portra csak karaktereket tudunk írni. (char típus) A soros portról karaktert tudunk olvasni. A string egy char tömb! Pld: void sendString(char s[ ]) zj int i=0; while (i<64) zj if (s[i]==‘\0’) break; //a nulladik karakter a tömb hossza? sendChar(s[i++]); zj
Stringből szám: ‘125’ string –> 125 integer: Atoi int i; i=atoi(‘125’) –> i=125 lesz. atof: valós szán ‘-1.24’ stringből valós számot csinál Valós változóból string: dtostrf utasítás (adc.h, voltmérő) –Utána nézni, hogyan –Egész számból string? Írjon C-programot, ami bekér egy stringet majd sorban kiírja a betűit! Írjon C-programot, amiben bemutatja a fenti utasítások használatát.
Stopper:Nyomógombra indul és áll meg. Az értéket kiírja valahová. Soros port, LCD, hétszegmensű kijelző… Hogyan lehetne számolni az ezred és századmásodperceket? uint_16 ezred, szazad, tized, sec,i; while(indito_nincs_lenyomva) zj while (gomb_nincs_lenyomva) //gomb_nincs _lenyomva for(sec=0; sec<60;sec++) zj for(tized=0; tized<10;tized++) zj for (szazad=0; szazad<10;szazad++) zj for (ezred=0; ezred<10;ezred++) zj _delay_ms(1); zj
Amikor a gombot lenyomjuk megáll a számlálás, az ezred, század, tized és sec értékeket valahogy ki kell küldeni soros portra vagy az lcd-re. Ezek egész típusú számok, stringgé kell alakítani! Kis erőlködéssel a leden vagy a C-porton is ki lehet küldeni a 0-9 számokat. További feladatok: A receiveString függvény megírása. Ha a feszültség csökken a pot. méternél, gyulladjanak fel ledek, ha a feszültség nő, aludjanak el ismét. (egyszerű szabályozás)