Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Arduino timer

Zdravím.
Zkouším timer a asi jsem nepochopil princip

Timer

#include "Timer.h"
  
Timer t;
int pin = 2;
int pin1 = 13;
 
void setup()
{
  Serial.begin(9600);
  pinMode(pin1,INPUT_PULLUP);
  pinMode(pin,INPUT_PULLUP);
  pinMode(pin, OUTPUT); 
}
 
 
void loop()
{
  if (digitalRead(pin1)== LOW){  
    t.pulse(pin, 10 * 10 * 1000, LOW);
    Serial.println("hups");
 }
t.update();  
Serial.println("ja si dělam co chci");
}

Co je špatně?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak to poslední funguje jak má :-) už se mi to podařilo udělat i pomocí threadu if(myThread.should… nový
kikoš 08.02.2016 11:32
kikoš
Tak pouzivaj radsej to posledni, je to asi bezpecnejsie. Ked spustas thread mechanickym tlacitkom,… nový
MM.. 08.02.2016 11:43
MM..
JJ, děkují ;-) poslední
kikoš 08.02.2016 13:56
kikoš

Tak pouzivaj radsej to posledni, je to asi bezpecnejsie.

Ked spustas thread mechanickym tlacitkom, tak musis aspon urobit delay(10) na debouncing. A samozrejme ze musis aj pamata stav, aby si ten thread nevytvoril 1000x (co sice nemusis vidiet hned, ale za urcitych okolnosti to potom moze uplne rohdoit cely system) T.j. napr.
if(digitalRead(pin) == HIGH && stav == 0)
{
spust thread
stav = 1;
delay(10); // debouncing
}

if(digitalRead(pin) == LOW && stav == 1)
{
stav = 0;
delay(10); // debouncing
}

Nevyhoda takehoto jednoducheho debouncingu je to ze to zastavi cele arduino na 10ms, ale je to takto najjednoduchsie.
Ked na to nemyslis a mas tam napr. debug vystup tak ten urobi opozdenie kludne aj 10ms a myslis si ze vsetko je super aj bez debouncingu a raz vyhodis ten debug vystup a zistis ze zrazu to blbne :)

Zpět do poradny Odpovědět na původní otázku Nahoru