Funkce:
Budeme simulovat volbu programu pomocí potenciometru. Budeme mít 10 režimů, které budeme volit otáčením potenciometru. Číslo programu bude zobrazeno na displeji. Jakmile narazíme na krajní program (0 nebo 9), tak svítí LED a zároveň pípne bzučák.
Potřebné znalosti: ovládání LED, čtení analogové hodnoty z potenciometru, ovládání bzučáku
Programové znalosti: proměnné, pole, funkce
Schéma:
https://www.tinkercad.com/things/c9GrZJ1e49I-mcs-volba-rezimu
Kód:
int PotPin = 0; int LedPin = 9; int BuzzerPin = 10; int lastNum = 0; int disCombination [10][7]= { {1,1,1,1,1,1,0}, {0,1,1,0,0,0,0}, {1,1,0,1,1,0,1}, {1,1,1,1,0,0,1}, {0,1,1,0,0,1,1}, {1,0,1,1,0,1,1}, {1,0,1,1,1,1,1}, {1,1,1,0,0,0,0}, {1,1,1,1,1,1,1}, {1,1,1,0,0,1,1} }; void beep(float time, int freq){ unsigned long duration = time * 1000; // doba trvani v ms unsigned long end_time = millis() + duration; // konecny cas while (millis() < end_time) { digitalWrite(BuzzerPin, HIGH); delayMicroseconds(500000/freq); // 1s deleno polovina frekvence digitalWrite(BuzzerPin, LOW); delayMicroseconds(500000/freq); // 1s deleno polovina frekvence } } void setup() { pinMode(PotPin, INPUT); // nastaveni pinu pro potenciometr na vstup pinMode(LedPin, OUTPUT); // nastaveni pinu pro LED na vystup pinMode(BuzzerPin, OUTPUT); // nastaveni pinu pro bzucaku na vystup for(int i = 2; i < 9; i++){ // nastaveni vsech pinu pro displej na vystup pinMode(i, OUTPUT); } } void loop() { int value = analogRead(PotPin); int num = value/103; for(int i = 2; i < 9; i++){ // nastaveni vsech pinu pro displej na vystup digitalWrite(i, disCombination[num][i-2]); } if((num == 0) || (num == 9))digitalWrite(LedPin, HIGH); else digitalWrite(LedPin,LOW); if(((lastNum != 0) && (num == 0))||((lastNum != 9) && (num == 9))) beep(0.5, 6000); delay(50); lastNum = num; }