Kód: Vybrat vše
#define TLACITKO 2 // pin pro TLACITKO
#define LED1 10 // pin pro LED1 zelená
#define LED2 11 // pin pro LED2 červená
byte mode = 0; // 0 - Vypnuto, 1 - Zapnuto, 2 - Blikání rychlé, 3 - Blikání pomalé, 4 - Blikání střídavé
unsigned long aktualniMillis; //aktualní čas
unsigned long predchoziMillis1; // předchozí čas pro rychle blikání
unsigned long predchoziMillis2; // předchozí čas pro pomalé blikání
unsigned long predchoziMillis3; // předchozí čas pro střídavé blikání
boolean led1svetlo; // pomocná hodnota proměnné led1svetlo
boolean led2svetlo; // pomocná hodnota proměnné led2svetlo
void setup() {
pinMode(LED1, OUTPUT); // pin pro LED1 nastaven jako výstup
pinMode(LED2, OUTPUT); // pin pro LED2 nastaven jako výstup
pinMode(TLACITKO, INPUT_PULLUP); // pin pro TLACITKO nastaven jako vstup
digitalWrite(TLACITKO,HIGH); //
Serial.begin(9600); // konfigurace rychlosti seriového portu
while (!Serial) { ; // čekaní na připojení seriového portu, pry nezbytné pouze u desky Leonardo
}
Serial.println("Seriovy port aktivni"); // První výpis na seriový port
}
void loop(){
if ((digitalRead(TLACITKO)) == LOW) // tady se přečte stav tlačítka
{
mode++; // přičte k MODE hodnotu 1
if (mode > 4) mode = 0; // když je mode větší jak 4 tak ho vynuluje
delay(200); // prodleva proti záchvěvům tlačítka 200ms
}
if(mode == 0) {
// ******* LED1, LED2 vypnuto ********
led1svetlo = false; // zhasni LED1
led2svetlo = false; // zhasni LED2
Serial.println("LED1,LED2 vypnuto"); // výpis na seriový monitor
}
if(mode == 1) {
// ******* LED1, LED2 zapnuto ********
led1svetlo = true; // rožni LED1
led2svetlo = true; // rožni LED2
Serial.println("LED1,LED2 zapnuto"); // výpis na seriový monitor
}
if(mode == 2) {
// ******* LED1,LED2 blikání rychlé *******
aktualniMillis = millis(); //podívám se na hodinky - aktuální čas
if(aktualniMillis - predchoziMillis1 > 200) { // nejprve si zjistím jestli je čas něco provést, uběhlo už 200ms od poslední akce?
if (led1svetlo) {
led1svetlo = false; // zhasnu LED1
led2svetlo = false; // zhasnu LED2
} else {
led1svetlo = true; // rožnu LED1
led2svetlo = true; // rožnu LED2
}
predchoziMillis1 = aktualniMillis; // v tento čas jsem provedl poslední akci
}
Serial.println("LED1,LED2 blikání rychlé"); // výpis na seriový monitor
}
if(mode == 3) {
// ******* LED1,LED2 blikání pomalé *******
aktualniMillis = millis(); //podívám se na hodinky - aktuální čas
if(aktualniMillis - predchoziMillis2 > 500) { // nejprve si zjistím jestli je čas něco provést, uběhlo už 500ms od poslední akce?
if (led1svetlo) {
led1svetlo = false; // zhasnu LED1
led2svetlo = false; // zhasnu LED2
} else {
led1svetlo = true; // rožnu LED1
led2svetlo = true; // rožnu LED2
}
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
}
Serial.println("LED1,LED2 blikání pomalé"); // výpis na seriový monitor
}
if(mode == 4) {
// ******* LED1,LED2 blikání střídavé *******
aktualniMillis = millis(); //podívám se na hodinky - aktuální čas
if(aktualniMillis - predchoziMillis3 > 300) { // nejprve si zjistím jestli je čas něco provést, uběhlo už 300ms ?
led1svetlo = !led1svetlo; // do hodnoty led1svetlo zapíšu její negovanou hodnotu, svítila-li LED1 tak zhasne, byla-li zhaslá rožne se
led2svetlo = !led1svetlo; // do hodnoty led2svetlo zapíšu negovanou hodnotu led1svetlo, pokud LED1 svítí chci LED2 zhaslou a naopak
predchoziMillis3 = aktualniMillis; // v tento čas jsem provedl poslední akci
Serial.println("LED1,LED2 blikání střídavé"); // výpis na seriový monitor
}
}
digitalWrite(LED1,led1svetlo); // aktualizace stavu LED1, zápis proměnné na výstupní pin 10
digitalWrite(LED2,led2svetlo); // aktualizace stavu LED2, zápis proměnné na výstupní pin 11
}