dobrý den, pokud předchozí sketch byl "absolutní děs a hrůza" tak jsem zvědavý, co napíšete o předělaném sketchi, který je funkční a dělá totéž co ten předešlý. Ano je delší, ano dá se zkrátit, / zjednodušit /...budete namítat. No učím se, učím se sám, učím se podle tutoriálu a podle článků na netu / tak, jako mnoho dalších / a jde mi to pomalu - to vím.
A proto jsem dlouho vydýchával " ! pochvalu " za minulý sketch. Proto jsem rád a vždycku budu rád a děkovat tomu, kdo mi jen trochu pomůže. A tady je další můj výtvor, stejný, předělaný :
Tlačítko, 2x led a variace blikání s millis + seriový monitor
Kód: Vybrat vše
unsigned long aktualniMillis; //aktualní čas
unsigned long predchoziMillis1; // předchozí čas
unsigned long predchoziMillis2; // předchozí čas
boolean led1svetlo; // proměnná pro stav led1
boolean led2svetlo; // proměnná pro stav led2
int Tlacitko = 7; // pin pro tlačítko
int led1 = 10; // pin pro led1 zelená
int led2 = 11; // pin pro led2 červená
int mode = 0; // 0 - Vypnuto, 1 - Zapnuto, 2 - Blikání rychlé, 3 - Blikání pomalé, 4 - Blikání střídavé
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(Tlacitko, INPUT);
digitalWrite(Tlacitko,HIGH);
// konfigurace rychlosti seriového portu
Serial.begin(9600);
while (!Serial) { ; // čekaní na připojení seriového portu, pry nezbytné pouze u desky Leonardo
}
// První výpis na seriový port
Serial.println("Seriovy port aktivni");
}
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 vynuluj
delay(300); // prodleva proti záchvěvům tlačítka
}
if (mode == 0); // Vypni led
if (mode == 1); // Zapni led
if (mode == 2); // Rychlé blikání led
if (mode == 3); // Pomalé blikání led
if (mode == 4); // Střídavé blikání led
if(mode == 0) {
// ******* led1, led2 blikání vypnuto *******
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
}
if(mode == 1) {
// ******* led1, led2 blikání zapnuto *******
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
}
if(mode == 2) {
// ******* led1 bliká rychle *******
aktualniMillis = millis(); //podívám se na hodinky - aktuální čas
if(led1svetlo){ // potřebuju led1 zhasnout nebo rosvítit?
if(aktualniMillis - predchoziMillis1 > 300) { // pokud zhasnout uběhlo už 300ms od poslední akce?
predchoziMillis1 = aktualniMillis; // v tento čas jsem provedl poslední akci
led1svetlo = LOW; //zhasni led1
Serial.println("led1 VYP");
}
}else if(aktualniMillis - predchoziMillis1 > 300) { // pokud zhasnout uběhlo už 300ms od poslední akce?
predchoziMillis1 = aktualniMillis; // v tento čas jsem provedl poslední akci
led1svetlo = HIGH; //rozsviť led1
Serial.println("led1 ZAP");
}
digitalWrite(led1, led1svetlo); //aktualizace stavu led1
// ******* led2 bliká rychle *******
aktualniMillis = millis(); //podívam se na hodinky - aktuální čas
if(led2svetlo){ // potřebuju led2 zhasnout nebo rosvítit?
if(aktualniMillis - predchoziMillis2 > 300) { // pokud zhasnout uběhlo už 300ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = LOW; //zhasni led2
Serial.println("led2 VYP");
}
}else if(aktualniMillis - predchoziMillis2 > 300) { // pokud zhasnout uběhlo už 300ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = HIGH; // rozsviť led2
Serial.println("led2 ZAP");
}
digitalWrite(led2, led2svetlo); // aktualizace stavu led2
}
if(mode == 3) {
// ******* led1 bliká pomalu *******
aktualniMillis = millis(); //podívám se na hodinky - aktuální čas
if(led1svetlo){ // potřebuju led1 zhasnout nebo rosvítit?
if(aktualniMillis - predchoziMillis1 > 500) { // pokud zhasnout uběhlo už 500ms od poslední akce?
predchoziMillis1 = aktualniMillis; // v tento čas jsem provedl poslední akci
led1svetlo = LOW; //zhasni led1
Serial.println("led1 VYP");
}
}else if(aktualniMillis - predchoziMillis1 > 500) { // pokud zhasnout uběhlo už 500ms od poslední akce?
predchoziMillis1 = aktualniMillis; // v tento čas jsem provedl poslední akci
led1svetlo = HIGH; //rozsviť led1
Serial.println("led1 ZAP");
}
digitalWrite(led1, led1svetlo); //aktualizace stavu led1
// ******* led2 bliká pomalu *******
aktualniMillis = millis(); //podívam se na hodinky - aktuální čas
if(led2svetlo){ // potřebuju led2 zhasnout nebo rosvítit?
if(aktualniMillis - predchoziMillis2 > 500) { // pokud zhasnout uběhlo už 500ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = LOW; //zhasni led2
Serial.println("led2 VYP");
}
}else if(aktualniMillis - predchoziMillis2 > 500) { // pokud zhasnout uběhlo už 500ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = HIGH; // rozsviť led2
Serial.println("led2 ZAP");
}
digitalWrite(led2, led2svetlo); // aktualizace stavu led2
}
if(mode == 4) {
// ******* led1 bliká střídavě *******
aktualniMillis = millis(); //podívám se na hodinky - aktuální čas
if(led2svetlo){ // potřebuju led3 zhasnout nebo rosvítit?
if(aktualniMillis - predchoziMillis2 > 200) { // pokud zhasnout uběhlo už 200ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = LOW; //zhasni led1
Serial.println("led1 VYP");
}
}else if(aktualniMillis - predchoziMillis2 > 200) { // pokud zhasnout uběhlo už 200ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = HIGH; //rozsviť led1
Serial.println("led1 ZAP");
}
digitalWrite(led1, !led2svetlo); //aktualizace stavu led1 a její negace oproti led2
// ******* led2 bliká střídavě *******
aktualniMillis = millis(); //podívam se na hodinky - aktuální čas
if(led2svetlo){ // potřebuju led3 zhasnout nebo rosvítit?
if(aktualniMillis - predchoziMillis2 > 200) { // pokud zhasnout uběhlo už 200ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = LOW; //zhasni led2
Serial.println("led2 VYP");
}
}else if(aktualniMillis - predchoziMillis2 > 200) { // pokud zhasnout uběhlo už 200ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = HIGH; // rozsviť led2
Serial.println("led2 ZAP");
}
digitalWrite(led2, led2svetlo); // aktualizace stavu led2
}
}