I've made some changes on my RX code to find the problem. By now, my code is like that:
#include <VirtualWire.h>
int redPin = 3;
void setup() {
Serial.begin(9600);
Serial.print("Rx ON");
vw_setup(1200); // Bits per sec
vw_rx_start(); // Start the receiver PLL running
vw_set_rx_pin(11);
pinMode(redPin, OUTPUT);
}
void loop() {
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) {
pulse();
//char redC[3] = {(char)buf[0], (char)buf[1], '\0'};
//long int red = strtol(redC, NULL, 16);
setRed(255);
//analogWrite(redPin, (int)red);
}
}
void pulse() {
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
setRed(fadeValue);
delay(30);
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
setRed(fadeValue);
delay(30);
}
}
void setRed(int value){
analogWrite(redPin, value);
}
When I call the method setRed() with 255 or 0 everything goes fine. But when I call it with any intermediate value, the arduino stops working (the pulse method is not executed). This crash is random, sometimes after 1 execution, other times after 10 executions.