mám dotaz a nemohu nikde najít vysvětlení.
Příklad : potřebuji jednou za vteřinu zavolat program- např. Generator, který pomocí přerušení po dobu 50ms spočítá impulzy.
pak se vrátí a toto číslo zobrazí. Ale nefunguje delay, kdy chci blikat LED 500/500.
pokud zakomentuju řádek generator(), tak to funguje
Kód: Vybrat vše
//
#define GEN 2 // vstup pin2 = int0
#define LED 5 // info LED
int pulse; // citac impulzu
//=============================================================================
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
attachInterrupt(0, count_pulse, FALLING);
}
//=============================================================================
void loop() {
Serial.print("counter : ");
generator();
digitalWrite(LED,HIGH); delay(500); // tyto dva radky nahrazuji skutecny kod, kde
digitalWrite(LED,LOW); delay(500); // je na nekolika mistech pouzito delay()
Serial.println(pulse);
}
//=============================================================================
void generator() {
pulse=0;
interrupts(); // povoli preruseni
delay(50); // doba detekce pulzu 50ms
noInterrupts(); // zakaze preruseni
return pulse;
}
//=============================================================================
void count_pulse()
{ pulse++; }
//=============================================================================
//=============================================================================