• 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
#3
Thumbs Up 
Witam kaczakat, witam wszystkich
Kaczakat - bardzo dziękuję za pomoc i natchnienie - rozwiązałem swój problem, chwilę to zajęło.
Do rozwiązania doszedłem trochę inną ścieżką ale, podkreślę raz jeszcze; z Twoją pomocą.
Dołożyłem jeszcze blok odpowiedzialny za wyłączanie, oraz zmieniłem kolejność działania:
Kod:
const int L1 = 2;//blue
const int L2 = 3;//green
const int L3 = 4;//red
#define start 8 //sw1

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

int czyH = 0;
int czyL = 0;

const unsigned long t1 = 2000;
const unsigned long t2 = 4000;
const unsigned long t3 = 6000;

unsigned long czasHigh = 0;
unsigned long czasLow = 0;
unsigned long czasL3 = 0;

void setup()
{
 //Serial.begin(9600);
 pinMode(L1, OUTPUT);
 pinMode(L2, OUTPUT);
 pinMode(L3, OUTPUT);
 pinMode(start, INPUT);
}

void loop()

{
//check start
 if((digitalRead(start)==LOW)&&(czyH==0))
 {
  return;
 }
 unsigned long currentMillis = millis();  
//go start  
 if((digitalRead (start) == HIGH) && (czyL==0))
   {
   czyH=1;  
 
   if (czasHigh == 0)
     {
     czasLow = 0;
     czasHigh = currentMillis;
     }
             
   if (currentMillis - czasHigh >= t1)
     {
     digitalWrite(L1,HIGH);
     digitalWrite(L2,HIGH);
     }

   if (currentMillis - czasHigh >= t3)
     {
     digitalWrite(L3,HIGH);
     }
 }
//end
 if((digitalRead (start) == LOW)||(czyL==1))
   {
   delay(5);
   if((digitalRead(start) == HIGH) && (czyL==0))
     {
     return;
     }
     
     czyL = 1;
     czasHigh = 0;
 
     if (czasLow == 0)
     {
     czasLow = currentMillis;
     }
             
     if (currentMillis - czasLow >= t1)
     {
     digitalWrite(L1,LOW);
     digitalWrite(L3,LOW);
     //czyL=0;
     }
     if (currentMillis - czasLow >= t3)
     {
     digitalWrite(L2,LOW);
     czyL=0;
     }
 }  
}


Płenta:
- wiem że mogę na Was liczyć
- "szpej" działa
- pora teraz na "wygłaskanie"

Pzdr
Grzegorz 
sp9svn
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Funkcja "millis" - kłopot ze zrozumieniem - przez sp9svn - 13-02-2019, 20:37

Skocz do:


Przeglądający: 1 gości