• 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
Problem z resetem timera
#1
Witam,

Jestem początkujący w kwestii Arduino Leonardo i programowania.
Mój problem polega na tym, że nie potrafię zresetować czasu "delay"
Potrzebuje programu: 

Po wciśnięciu przycisku (pin 2) włącza się stan wysoki na pinie 5 i 6, gdy przycisk przyjmie stan "LOW" odlicza się czas i zmienia się stan LOW na pinach 5 i 6. Gdy w czasie odliczania czasu zostanie wciśnięty ponownie przycisk (pin 2) odliczany czas resetuje się i zaczyna odliczać gdy przycisk zmieni położenie "LOW".

Mój błędny program: 

Kod:
void setup() {

 
 pinMode(2, INPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
 // put your setup code here, to run once:

 digitalWrite(3, HIGH);
 digitalWrite(4, HIGH);

}

void loop() {
 
 
 if(digitalRead(2) == HIGH)
 {digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
    if(digitalRead(2) ==LOW)
     {delay(5*60*1000);
     
     digitalWrite(5, LOW);
     digitalWrite(6, LOW);
     digitalWrite(3, HIGH);
     digitalWrite(4, HIGH);
     }
     
 }
 // put your main code here, to run repeatedly:

}


Przepraszam jak wybrałem zły dział i jeśli zrobiłem jakieś błedy.
 
Odpowiedź
#2
Nie do końca kojarzę o co ci chodzi spróbuj tego i powiedz co jest nie tak .

Kod:
long ms = 0;
long lms = 0;


void setup() {
  
  Serial.begin(9600);

pinMode(2, INPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);

digitalWrite(3, HIGH);
digitalWrite(4, HIGH);

}

void loop() {
  
  Serial.println((ms-lms)/1000);
  
  ms = millis();

if(digitalRead(2) == HIGH){
  
   if ( ms - lms > 6000 ){
  
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
   }

}
  
if(digitalRead(2) == LOW){lms = ms ;}
    
     if ( ms - lms < 6000 ){
    
     digitalWrite(5, LOW);
     digitalWrite(6, LOW);
     digitalWrite(3, HIGH);
     digitalWrite(4, HIGH);
    
     }
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości