• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Funkcja "millis" - kłopot ze zrozumieniem
#1
Witam
proszę o pomoc w zrozumieniu działania funkcji "millis" .
Założyłem sobie do wykonania proste (tak myślałem na starcie) zadanie:
- trzy wyjścia
- jedno wejście
- po podaniu na wejście "H", wystaw kolejno "H" na wyjścia.
Na pierwsze wyjście po 2s i każde następne po kolejnej sekundzie.
Nie chciałem tego robić z wykorzystaniem "delay"  lecz za pomocą "millis".
Efekt mojej twórczości powoduje po podaniu "H" na wejście wystawianie natychmiastowe wystawienie "H" na wszystkich wyjściach.  
Proszę o podpowiedź gdzie popełniam błąd Smile
Kod:
#define L1 2  //blue
#define L2 3  //green
#define L3 4  //red
#define start 8 //sw1

int stateL1 = LOW;
int stateL2 = LOW;
int stateL3 = LOW;

const unsigned long period2 = 2000;
const unsigned long period3 = 3000;
//const unsigned long period4 = 4000;

unsigned long startMillis;
unsigned long current2Millis;
unsigned long current3Millis;
//unsigned long current4Millis;
void setup()
{
  //Serial.begin(9600);
  pinMode(L1, OUTPUT);
  pinMode(L2, OUTPUT);
  pinMode(L3, OUTPUT);
  pinMode(start, INPUT);
  startMillis = millis();  
}

void loop()
{
  if (digitalRead(start) == HIGH) 
  {
    digitalWrite(L1,!digitalRead(L1));
    current2Millis = startMillis; //przepisanie startMillis do current2Millis
         
    if(current2Millis + period2 >=  startMillis)
    {
      digitalWrite(L2,!digitalRead(L2));
      current3Millis = startMillis;   
    }
    
      if(current3Millis + period3 >= startMillis)
      {
        digitalWrite(L3,!digitalRead(L3));
      }
  }
}
 
Odpowiedź
  


Wiadomości w tym wątku
Funkcja "millis" - kłopot ze zrozumieniem - przez sp9svn - 09-02-2019, 23:36

Skocz do:


Przeglądający: 1 gości