Go Down

Topic: VirtualWire and AnalogWrite problems (Read 1 time) previous topic - next topic

carlosraniery

Dears,

I'm trying to change the color of a RGB led wirelessly but with no success. It seems to be a problem when using both VirtualWire and AnalogWrite together, but I've no idea on how to solve it. When I receive the hex code 00 (led off) or FF (led full on) everything works fine, but when I receive any intermediate value my arduino stops working (i.e., the analogwrite stops working and the serial.println too). The following code is running on an Arduino Nano V3. Thanks for any suggestions.

Code: [Select]

#include <VirtualWire.h>

int redPin = 3;
int greenPin = 6;
int bluePin = 5;

void setup() {
  Serial.begin(9600);
  Serial.print("Rx ON");
 
  vw_setup(2000); // Bits per sec
  vw_rx_start();    // Start the receiver PLL running
  vw_set_rx_pin(11);

  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen)) {
 
    char redC[3] = {(char)buf[0], (char)buf[1], *"\0"};
    long int red = strtol(redC, NULL, 16);
    analogWrite(redPin, red);
   
    char greenC[3] = {(char)buf[2], (char)buf[3], *"\0"};
    long int green = strtol(greenC, NULL, 16);
    analogWrite(greenPin, green);

    char blueC[3] = {(char)buf[4], (char)buf[5], *"\0"};
    long int blue = strtol(blueC, NULL, 16);
    analogWrite(bluePin, blue);
   
    Serial.print("Red: ");
    Serial.println(red);

    Serial.print("Green: ");
    Serial.println(green);

    Serial.print("Blue: ");
    Serial.println(blue);

  }
}


johnwasser

Since you don't use pins 9 or 10 for PWM you should be OK.

"Caution: VirtualWire takes over Arduino Timer1, and this will affect the PWM capabil- ities of the digital pins 9 and 10."

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

carlosraniery

Yeap, I've heard that.

Do you have any other idea why this strange behaviour is happening?

johnwasser

Looks like the only thing that would cause the sketch to stop is not receiving any more messages.  Have you checked the transmitter to be sure it's still working?
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

carlosraniery

Yes, I've checked the transmitter and it continues to working.

On the receiver side, if I reset the arduino or close and open the serial console, everything comes back until it receives any intermediate value.

Go Up