Vše funguje, jak má, dokud jsou všechny příkazy analogWrite v hlavní smyčce v komentech. Jakmile jsou aktivní, sketch způsobí po prvním stisknutí VOL+ zamrznutí klonu Arduina Uno. Kde je chyba???
![Naštvaný :x](./images/smilies/icon_mad.gif)
![Naštvaný :x](./images/smilies/icon_mad.gif)
![Naštvaný :x](./images/smilies/icon_mad.gif)
Zkusil jsem pro kontrolu digitalWrite, které normálně funguje.
Řádka "Serial.println(svitivost); // pro debuggovací účely" se ještě provede a vypíše "1", takže havárie nastane někdy potom a před dalším provedením cyklu.
Kód: Vybrat vše
#include <IRremote.h>
// pin 2 ... IČ senzor
// pin 11 ... diody
IRrecv irrecv(2);
decode_results results;
long rozsvitit=16754775; // VOL+
long zhasnout=16769055; // VOL-
int svitivost=0;
unsigned long cas=0;
int pokynDioda=0;
void setup()
{
pinMode(11, OUTPUT);
analogWrite(11, svitivost);
pinMode(2, INPUT);
irrecv.enableIRIn();
// debugging
Serial.begin(9600);
}
void loop()
{
// nejdrive nacist signal
if(irrecv.decode(&results))
{
irrecv.resume();
if(results.value == zhasnout) pokynDioda=0;
if(results.value == rozsvitit) pokynDioda=1;
}
// dioda
if(pokynDioda==1)
{
// rozsvitit
if(svitivost==254) {
svitivost++;
analogWrite(11, svitivost);
cas=millis();
}
if(svitivost<254) {
svitivost++;
analogWrite(11, svitivost);
}
}
Serial.println(svitivost); // pro debuggovací účely
if (svitivost==255)
{
if ((cas+5000)<millis()) {
pokynDioda=0;
}
}
if(pokynDioda==0)
{
// zhasnout
if(svitivost>0) {
svitivost--;
analogWrite(11, svitivost);
}
}
delay(100);
}