jdeš na to ze špatné strany. Máš aktivovanej watchdog? jestli jo, tak se nevynuluje časovač watchdogu a arduino se ti resetuje.
a nebo se děje něco jinýho. Je potřeba si doplnit hlášky na sériovej port, tj nebo aspoň blikání led po každým průchodu smyčkou..
#include <IRremote2.h>
int pruchodu=0; //pocet pruchodu main loop
const int LED_PIN=13; //standartní led arduino
bool ledState; //aktuální stav LEDky
const int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
Serial.begin(115200);
irrecv.enableIRIn();
Serial.println("startuju komunikaci po resetu");
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH); //rozsvítí led na desce
}
void loop(){
if (irrecv.decode(&results)){
Serial.println(results.value, HEX);
irrecv.resume();
}
pruchodu=pruchodu+1
Serial.print("pruchodu bez resetu "); // tyhle dva řádky případně zakomentovat, pokud to bude zdržovat běh programu
Serial.println(pruchodu);
ledState = !ledState; //změní stav LED
digitalWrite(LED_PIN, ledstate); //zhasne, rozsviti při každým průchodu smyčky
}
doporučuju napřed zkusit jenom tu LED, a sledovat, jestli to bude vůbec pozorovatelný, jak bliká bez příjmu signálu a jak se signálem. pokud zůstane na 1s zhasnutá a pak se vypíše na serial hláška o restartu, tak je to jasný.
Další možnost je, že přeteče buffer pro sériovej port, a proto se to kousne, takže nevypisovat na sériovej port, ale třeba blikat ledkou, tj to blikání led přemístit k tomu if... odesílání na sériovej port něco trvá, a procesor pak nemusí mít čas na další věci.
Je potřeba zkusit pochopit, co se v tom krámu děje, a zjistit, co je špatně. Další věc je chyba v knihovně, je fakt, že obvykle nikdo tlačítko tak dlouho nedrží, a nechápu, proč bys je měl držet tak dlouho ty. Stačí do programu napsat, že když je přijato třeba zesílit a pak to fffff, tak se krok změní na 1dB, když přide třetí ffffff tak změnit krok třeba na 3dB a potom se hlasitost změní po 10 ti opakováních o 30dB, po dvaceti, když odečtu ty první 4, tak to bude skoro 60dB což by pro tvoje výkony zesilovačů mohlo být už uchem znatelný A když to přestřelíš, stačí zmáčknout krátce - a nebo přidržet jenom chvilku... Takže možná neřešit blbiny, ale řešit komfort ovládání. Držet ovladač 10s pro nějakou větší změnu hlasitosti nepovažuju za smysluplný, stejně tak je potřeba udělat akceleraci i u enkodéru, aby si se u toho neutočil k úplné smrti, i když máš luxusní encodér, a jeho klapání si náležitě užíváš Tam se dá použít to, že když se pootočí zprudka, tak se přepne do hrubšího kroku, a když pomali, tak jde po jednom. Ostatně to je implementovaný v každým autorádiu...
Ještě mě napadlo někde do smyčky dát třeba delay(10) nebo třeba delay(100) , aby se poznalo, jak si knihovna poradí s tímhle, protože procesor bude muset dělat i jiný věci, než číst z DO.