Salve,
ho un piccolo problema per quanto riguarda la comunicazione di comandi tramite gli rf links e virtual wire.
Premetto che ho cercato, ma non ho trovato risposte, quindi chiedo il vostro aiuto...
Vi spiego brevemente ciò che dovrei fare:
-un telecomando con una 15ina di tasti, ai quali è associato un messaggio (es. button1 deve inviare "led1on", button2 deve inviare "led1off", ecc...)
-un ricevitore che in base al messaggio recepito attivi o disattivi un'uscita, ed in alcuni casi incrementi o decrementi una variabile.
il codice (di test) che uso è questo:
TX
#include <VirtualWire.h>
int btn = 2;
void setup()
{
pinMode(btn,INPUT);
vw_setup(2000); // Bits per sec
}
void loop()
{
if (digitalRead(btn) == HIGH) {
const char *msg = "ciao";
digitalWrite(13, true); // Flash a light to show transmitting
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, false);
delay(200);
}
}
e fin quì ok...
RX
#include <VirtualWire.h>
//#include <ShiftRegLCD.h>
//ShiftRegLCD lcd(2, 4, TWO_WIRE);
boolean mx = false;
void setup()
{
pinMode(10, OUTPUT);
// Serial.begin(9600); // Debugging only
//lcd.print("begin:");
// Initialise the IO and ISR
vw_setup(2000); // Bits per sec
vw_set_rx_pin(8);
vw_rx_start();
delay(2000); // Start the receiver PLL running
//lcd.clear();
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Non-blocking
{
int i;
// digitalWrite(13, true); // Flash a light to show received good message
// Message with a good checksum received, dump it.
//Serial.print("Got: ");
for (i = 0; i < buflen; i++)
{
// lcd.print(buf[i]);
// lcd.print(" ");
}
//Serial.println("");
// digitalWrite(13, false);
if ((char *)buf=="ciao") {
mx=true;
} else {
mx=false;
}
}
if (mx==true) {
digitalWrite(10,1);
} else {
digitalWrite(10,0);
}
}
ecco, quì nasce il problema... se io uso il display lcd, tutto ok, mi scrive ciao, ma quando comparo il messaggio "ciao" con quello arrivato dal TX, il led non si accende, e la variabile mx (booleana) non cambia stato.
ve ne sarei grato se riusciste ad aiutarmi...
Ciao, UP2