Stránka 13 z 27
Re: Mini CNC osa Z
Napsal: 04 říj 2019, 16:16
od Hanz
dobrý den, pořád se mi nedaří dát dohromady bod
1) Zkontroluji zda-li je čas bliknout diodama
nachystáno jsem měl tohle :
Kód: Vybrat vše
if (millis() > (posledniBlik3 + 500)) { // zkontroluji, zda-li je čas bliknout diodama
digitalRead(!LED1); // nacteni hodnoty stavu LED1 a její negace
if(digitalRead(LED2) == HIGH) // sviti-li LED
digitalWrite(LED2, LOW); // zhasni LED
else // nesviti-li LED
digitalWrite(LED2, HIGH); // rozsvit LED
}
{
posledniBlik3 = millis(); // uložím si čas, kdy jsem tohle provedl
}
ale jak čtu blbě a taky to nejelo
Re: Mini CNC osa Z
Napsal: 04 říj 2019, 18:10
od kiRRow
potřebuji znát stav první led .... takže udělám si proměnou typu boolean led1State ... do ní zapíšu výsledek digitalRead z led1...
pak pomocí digitalWrite zapíšu na tu samou ledku co jsem četl !led1State (negovaný stav té ledky) ... v momentě kdy udělám toto, budu mít na výstupu led1 negovanou hodnotu led1State ... takže v podstatě tuto hodnotu mohu zapsat do led2 pomocí digitalWrite, ale tentokrát normálně.
spustí se program, obě ledky jsou zhaslé, tedy 0
do led1State se načte 0
na led1 se zapíše negovaná hodnota tedy 1, led svítí
na led2 se zapíše normální hodnota, tedy 0 a je zhaslá
do led1State se načte 1
na led1 se zapíše negovaná hodnota tedy 0, led zhasne
na led2 se zapíše normální hodnota, tedy 1 a led se rožne
a furt dokolečka
Re: Mini CNC osa Z
Napsal: 04 říj 2019, 18:59
od kiRRow
Jinak mám stále pocit že nevíš co vlastně děláš.
Kód: Vybrat vše
digitalRead(!LED1); // nacteni hodnoty stavu LED1 a její negace --> hodnotu jsi sice načetl, ale vůbec nikde jsis ji neuložil ... a ten vykřičník tam taky není správně ... předpokládám, že do LED1 jsi pomocí #define uložil hodnotu 10, toto není to co chceš negovat, tohle je číslo pinu ...
// tady chybí zápis pro uložení načtené negované hodnoty do LED1
if(digitalRead(LED2) == HIGH) // sviti-li LED --> máš sledovat stav LED1 a né LED2 ... utekla složená závorka ?
digitalWrite(LED2, LOW); // zhasni LED --> ano
else // nesviti-li LED --> ne ... chybí tady složené závorky } else { , to ani nemůže jít zkompilovat
digitalWrite(LED2, HIGH); // rozsvit LED --> ano
}
ale jak jsem psal výše ... dá se to udělat i jednodušeji nakonec.
Re: Mini CNC osa Z
Napsal: 05 říj 2019, 18:16
od Hanz
dobrý den, zatím se mi povedlo jen to, že se ledky místo střídavého blikání, blikají stejně, ale i to je vlastně úspěch
co mě nepustí ?
Kód: Vybrat vše
int Tlacitko = 7;
#define LED1 10 // zelená Led
#define LED2 11 // červená Led
boolean Svetla; // stav proměnné Svetla tj. LOW / HIGH
boolean Blik1;
boolean Blik2;
boolean Blik3;
long posledniBlik1;
long posledniBlik2;
long posledniBlik3;
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);
}
void loop() {
// zapne nebo vypne LED v závislosti na stavu proměné Svetla
digitalWrite(LED1, Svetla);
digitalWrite(LED2, Svetla);
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(200); // prodleva proti záchvěvům tlačítka
}
if (mode == 0) Svetla = 0; //Vypni světla
if (mode == 1) Svetla = 1; //Zapni světla
if (mode == 2) Svetla = Blik1; // Rychlé blikání - Svetla zavisí na stavu promené Blik
if (mode == 3) Svetla = Blik2; // Pomalé blikání - Svetla zavisí na stavu promené Blik
if (mode == 4) Svetla = Blik3; // Střídavé blikání
// časovač pro blikání 1 rychlé *************************************
if ((millis() - posledniBlik1) > 80) // když celkový počet milisekund
// minus počet milisekund při poslednim "bliku" je vetši jak 200
// tady můžete nastavit rychlost blikání v počtu milisekund
{
Blik1 = !Blik1; // Blik se rovná negaci Blik (neguje proměnou)
posledniBlik1 = millis(); // zapiš poslední blik
}
// časovač pro blikání 2 pomalé ************************************
if ((millis() - posledniBlik2) > 600) // když celkový počet milisekund
// minus počet milisekund při poslednim "bliku" je vetši jak 400
// tady můžete nastavit rychlost blikání v počtu milisekund
{
Blik2 = !Blik2; // Blik2 se rovná negaci Blik (neguje proměnou)
posledniBlik2 = millis(); // zapiš poslední blik2
}
// časovač pro blikání 3 střídavé ************************************
if (millis() > (posledniBlik3 + 300)) // zkontroluji, zda-li je čas bliknout diodama
{
digitalRead(LED1); // nacteni hodnoty stavu LED1
digitalWrite(LED1,!Blik3); // uložení stavu do proměnné
Blik3 = !Blik3; // negace stavu proměnné LED1
if(digitalRead(LED1) == HIGH) // sviti-li LED1
digitalWrite(LED1, LOW); // zhasni LED1
else digitalWrite(LED1, HIGH); // nesviti-li LED1 rozsvit LED1
posledniBlik3 = millis(); // uložím si čas, kdy jsem tohle provedl
}
}
zkoušel jsem časovač 3 jakoby přidat pro LED2 a změnit pomocí "!" stavy, ale opět bez úspěchu, v podstatě to blikalo stejně se slabým probliknutím u LED2.
Re: Mini CNC osa Z
Napsal: 06 říj 2019, 05:28
od kiRRow
Ten kód je slátanina několika různých kódů do hromady ... uplně na to zapomeň. Bijou se ti tam příkazy mezi sebou o ovládání LEDek ... Tvůj blik zapisuje do LEDek napřímo přes piny a zároveň v loopu se furt zapisuje do pinů LEDek hodnota svetla
Re: Mini CNC osa Z
Napsal: 06 říj 2019, 17:44
od Hanz
dobrý den, ano střídavé blikání bylo přidáno z jiného sketche, jak píše kiRRow. Nedalo mi to a tak jsem se zaměřil na hodnotu Svetla, o které taky píše. Napadlo mě, že když rozdělím proměnnou Svetla na Svetla pro LED1 a Svetla1 pro LED2 a dosadím ke každému stisku tlačítka tj. mode 1 až mode 4, mohlo by to fungovat. Musel jsem vytvořit i nový stav Blik3 pro případnou změnu času blikání. Tady je plně funkční výsledek :
Kód: Vybrat vše
int Tlacitko = 7;
#define LED1 10 // zelená Led
#define LED2 11 // červená Led
boolean Svetla; // stav proměnné Svetla tj. LOW / HIGH
boolean Svetla1;
boolean Blik1;
boolean Blik2;
boolean Blik3;
long posledniBlik1;
long posledniBlik2;
long posledniBlik3;
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);
}
void loop() {
// zapne nebo vypne LED v závislosti na stavu proměné Svetla
digitalWrite(LED1, Svetla);
digitalWrite(LED2, Svetla1);
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(250); // prodleva proti záchvěvům tlačítka
}
if (mode == 0) Svetla = 0, Svetla1 = 0; // Vypni světla
if (mode == 1) Svetla = 1, Svetla1 = 1; // Zapni světla
if (mode == 2) Svetla = Blik1, Svetla1 = Blik1; // Rychlé blikání - Svetla zavisí na stavu promené Blik1
if (mode == 3) Svetla = Blik2, Svetla1 = Blik2; // Pomalé blikání - Svetla zavisí na stavu promené Blik2
if (mode == 4) Svetla = Blik3, Svetla1 = !Blik3; // Střídavé blikání - Svetla zavisí na stavu promené Blik3
// časovač pro blikání 1 rychlé *************************************
if ((millis() - posledniBlik1) > 300) // když celkový počet milisekund
// minus počet milisekund při poslednim "bliku" je vetši jak 300
// tady můžete nastavit rychlost blikání v počtu milisekund
{
Blik1 = !Blik1; // Blik se rovná negaci Blik (neguje proměnou)
posledniBlik1 = millis(); // zapiš poslední blik
}
// časovač pro blikání 2 pomalé ************************************
if ((millis() - posledniBlik2) > 600) // když celkový počet milisekund
// minus počet milisekund při poslednim "bliku" je vetši jak 600
// tady můžete nastavit rychlost blikání v počtu milisekund
{
Blik2 = !Blik2; // Blik2 se rovná negaci Blik (neguje proměnou)
posledniBlik2 = millis(); // zapiš poslední blik2
}
// časovač pro blikání 3 střídavé ************************************
if ((millis() - posledniBlik3) > 200) // když celkový počet milisekund
// minus počet milisekund při poslednim "bliku" je vetši jak 200
// tady můžete nastavit rychlost blikání v počtu milisekund
{
Blik3 = !Blik3; // Blik2 se rovná negaci Blik (neguje proměnou)
posledniBlik3 = millis(); // zapiš poslední blik2
}
}
Začátky jsou těžké, ale stojí to zato ! Je to super ! a moc, moc děkuju kiRRow, gilhad a jiným, že mě podporujete Děkuju
Co Vy nato ?
Re: Mini CNC osa Z
Napsal: 08 říj 2019, 16:19
od kiRRow
Absolutní děs a hrůza ten kód. Ani mi neděkuj, nemáš totiž vůbec zač, protože jsem tě vůbec nic nenaučil.
Re: Mini CNC osa Z
Napsal: 11 říj 2019, 15:23
od Hanz
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
}
}
Re: Mini CNC osa Z
Napsal: 11 říj 2019, 15:57
od kiRRow
tak postupně od shora ...
Kód: Vybrat vše
int Tlacitko = 7; // pin pro tlačítko - #define Tlacitko 7 - není nutno aby si tohle procesor pamatoval
int led1 = 10; // pin pro led1 zelená - #define led1 10 - není nutno aby si tohle procesor pamatoval
int led2 = 11; // pin pro led2 červená - #define led2 11 - není nutno aby si tohle procesor pamatoval
int mode = 0; // 0 - Vypnuto, 1 - Zapnuto, 2 - Blikání rychlé, 3 - Blikání pomalé, 4 - Blikání střídavé - Tady to je správně ... tohle se bude v průbehu programu měnit a proto je důležité si alokovat a držet hodnotu v paměti
Kód: Vybrat vše
/*Tohle celé můžeš vymazat*/
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
/*neplní to vůbec žádnou funkci*/
... mno a pak začíná ten mazec ... správně jako programátor bys měl minimálně začít stím, že přestaneš dělat to, že v jednom ifu na tvrdo zapisuješ na výstupní piny buď LOW nebo HIGH, zatím co druhý if dělá to, že si uloží stav do proměné, kterou jsis (chválím) správně nadefinoval a po skončení ifu tuto hodnotu z proměné zapíšeš na výstupní pin.
Popere se ti to pak, když v proměnné led1svetlo budeš mít uloženo HIGH a zároveň bude mode = 0 ... ten program doběhne k if(mode == 0) a nastaví výstupní piny na LOW pak přeskočí if(mode == 1), přeskočí if(mode == 2) a skočí na příkaz digitalWrite(led1, led1svetlo); a jelikož je v led1sveto = HIGH, tak se ti ta ledka rožne ... respektive zůstane ti svítit, protože ten procesor tam doběhne tak rychle, že ani nestihne zhasnout
Napsáno by to mělo být tak, že v každém if se nastaví led1svetlo a led2svetlo ... a až po posledním ifu se tento stav z proměnných zapíše do výstupních pinů
Re: Mini CNC osa Z
Napsal: 16 říj 2019, 17:41
od Hanz
dobrý den, provedeny úpravy ve sketchi
Kód: Vybrat vše
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í
unsigned long predchoziMillis4; // předchozí čas pro střídavé blikání
boolean led1svetlo; // pomocná hodnota led1svetlo
boolean led2svetlo; // pomocná hodnota led2svetlo
#define Tlacitko 7 // pin pro tlačítko
#define led1 10 // pin pro led1 zelená
#define 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(200); // prodleva proti záchvěvům tlačítka
}
if(mode == 0) {
// ******* led1, led2 vypnuto ********
led1svetlo = false; //zhasni led1
Serial.println("led1 nesvítí");
led2svetlo = false; //zhasni led2
Serial.println("led2 nesvítí");
}
if(mode == 1) {
// ******* led1, led2 svítí ********
led1svetlo = true; //rožni led1
Serial.println("led1 svítí");
led2svetlo = true; //rožni led2
Serial.println("led2 svítí");
}
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 > 200) { // pokud zhasnout uběhlo už 200ms od poslední akce?
predchoziMillis1 = aktualniMillis; // v tento čas jsem provedl poslední akci
led1svetlo = false ; //zhasni led1
Serial.println("led1 rychle VYP");
}
}else if(aktualniMillis - predchoziMillis1 > 200) { // pokud zhasnout uběhlo už 200ms od poslední akce?
predchoziMillis1 = aktualniMillis; // v tento čas jsem provedl poslední akci
led1svetlo = true; //rozsviť led1
Serial.println("led1 rychle ZAP");
}
// ******* 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 > 200) { // pokud zhasnout uběhlo už 200ms od poslední akce?
predchoziMillis2 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = false; //zhasni led2
Serial.println("led2 rychle 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 = true; // rozsviť led2
Serial.println("led2 rychle ZAP");
}
}
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 = false; //zhasni led1
Serial.println("led1 pomalu 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 = true; //rozsviť led1
Serial.println("led1 pomalu ZAP");
}
// ******* 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 = false; //zhasni led2
Serial.println("led2 pomalu 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 = true; // rozsviť led2
Serial.println("led2 pomalu ZAP");
}
}
if(mode == 4) {
// ******* led1 bliká střídavě *******
aktualniMillis = millis(); //podívám se na hodinky - aktuální čas
if(led1svetlo){ // potřebuju led1 zhasnout nebo rosvítit?
if(aktualniMillis - predchoziMillis3 > 300) { // pokud zhasnout uběhlo už 300ms od poslední akce?
predchoziMillis3 = aktualniMillis; // v tento čas jsem provedl poslední akci
led1svetlo = false; //zhasni led1 zelená
Serial.println("led1 střídavě VYP");
}
}else if(aktualniMillis - predchoziMillis3 > 300) { // pokud zhasnout uběhlo už 300ms od poslední akce?
predchoziMillis3 = aktualniMillis; // v tento čas jsem provedl poslední akci
led1svetlo = true; //rožni led1 zelená
Serial.println("led1 střídavě ZAP");
}
// ******* led2 bliká střídavě *******
aktualniMillis = millis(); //podívam se na hodinky - aktuální čas
if(led2svetlo){ // potřebuju led2 zhasnout nebo rosvítit?
if(aktualniMillis - predchoziMillis4 > 300) { // pokud zhasnout uběhlo už 300ms od poslední akce?
predchoziMillis4 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = false; //rožni led2 červená
Serial.println("led2 střídavě VYP");
}
}else if(aktualniMillis - predchoziMillis4 > 300) { // pokud zhasnout uběhlo už 300ms od poslední akce?
predchoziMillis4 = aktualniMillis; // v tento čas jsem provedl poslední akci
led2svetlo = true; //zhasni led2 červená
Serial.println("led2 střídavě ZAP");
}
}
digitalWrite(led1,led1svetlo); // aktualizace stavu led1, zápis stavu proměnné na výstupní pin 10
digitalWrite(led2,led2svetlo); // aktualizace stavu led2, zápis stavu proměnné na výstupní pin 11
}
pokoušel jsem se o střídavé blikání. To se mi povedlo, když jsem v aktualizaci stavu proměnné na pinu 11 negoval proměnnou led2svetlo. No, ale ve všech if se to negovalo taky. Přidal jsem predchoziMillis4, doufám že správně