16-09-2020, 19:55
(Ten post był ostatnio modyfikowany: 16-09-2020, 20:00 przez Jarewa0606.)
Najprościej najszybciej dodać dodatkowo flagi
przed setup
bool flaga1=false;
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
last_millis = millis();
flaga1 = true;
}
if( millis() >= (last_millis + opoznienie1 + czas1) && flaga1)
{
//tutaj wyłączamy urządzenia kanału 1
digitalWrite(13, HIGH);
flaga1=false;
}
else if( millis() >= (last_millis + opoznienie1))
{
//tutaj uruchamiamy urządzenia dla kanału 1
digitalWrite(13, LOW);
}
i tak osobno dla każdego kanału
Po prostu twoje if( millis() >= (last_millis + opoznienie1 + czas1)) po uruchomieniu jest spełnione zawsze bez względu na przycisk....
if( millis() >= (last_millis + opoznienie2 + czas2))
{
//tutaj wyłączamy urządzenia kanału 2
digitalWrite(12, HIGH);
}
else if( millis() >= (last_millis + opoznienie2))
{
//tutaj uruchamiamy urządzenia dla kanału 2
digitalWrite(12, LOW);
}
ten zapis jest nie poprawny
przed setup
bool flaga1=false;
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
last_millis = millis();
flaga1 = true;
}
if( millis() >= (last_millis + opoznienie1 + czas1) && flaga1)
{
//tutaj wyłączamy urządzenia kanału 1
digitalWrite(13, HIGH);
flaga1=false;
}
else if( millis() >= (last_millis + opoznienie1))
{
//tutaj uruchamiamy urządzenia dla kanału 1
digitalWrite(13, LOW);
}
i tak osobno dla każdego kanału
Po prostu twoje if( millis() >= (last_millis + opoznienie1 + czas1)) po uruchomieniu jest spełnione zawsze bez względu na przycisk....
if( millis() >= (last_millis + opoznienie2 + czas2))
{
//tutaj wyłączamy urządzenia kanału 2
digitalWrite(12, HIGH);
}
else if( millis() >= (last_millis + opoznienie2))
{
//tutaj uruchamiamy urządzenia dla kanału 2
digitalWrite(12, LOW);
}
ten zapis jest nie poprawny
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.