Estoy trabajando en un proyecto en el que tengo dos sensores, dos Arduinos (un YUN y un UNO), dos LED y un transmisor / receptor de RF
Es un procedimiento bastante simple: active un sensor de fuerza, envíelo por RF al receptor e ilumine el LED correspondiente. Así que mi diseño se ve así:
Sensor 1 y Sensor 2 --- > Arduino YUN --- > Transmisor de RF - > Inalámbrico
Receptor de RF --- > Arduino UNO --- > LED 1 y LED 2
Entonces, si el Sensor 1 está activado, el LED 1 se enciende y si el Sensor 2 está activado, el LED 2 se enciende.
Hasta ahora puedo enviar la señal y distinguir entre cada sensor al ver el monitor en serie. Si golpeo el sensor 1, el Uno recibe la señal del sensor 1. Lo mismo ocurre con el sensor 2. Solo estoy atascado en cómo hacer que los LED se activen. Intenté el código Serial.read (), así que cada vez que envío el Sensor 1 o el Sensor 2, se lee el código serial y luego el DigitalWrite el led alto. Pero eso no funcionó. Cualquier consejo sería muy apreciado. Aquí está mi código si desea verlo.
Transmisor:
// Transmitter Arduino Yun
#include <VirtualWire.h>
int pin0 = 0;
int pin1 = 1;
void setup()
{
vw_set_ptt_inverted(true); // Required by the RF module
vw_setup(2000); // bps connection speed
Serial.begin (9600);
vw_set_tx_pin(3); // Arduino pin to connect the transmitter data pin
}
void loop()
{
int force = analogRead(pin0); // analog reading from the Force sense resistor
int force1 = analogRead(pin1); // analog reading from the Force1 sense resistor
const char *msg = "Sensor 1";
const char *ms = "Sensor 2";
if (force > 100) {
vw_send((uint8_t *)msg, strlen(msg));
digitalWrite(led_pin, HIGH);
vw_wait_tx(); // We wait to finish sending the message
delay(200); // We wait to send the message again
}
if (force1 > 100) {
vw_send((uint8_t *)ms, strlen(ms));
digitalWrite(led_pin1, HIGH);
vw_wait_tx(); // We wait to finish sending the message
delay(200); // We wait to send the message again
}
}
Y el Receptor:
//Reciever
#include <VirtualWire.h>
const int led_pin = 3;
const int led_pin1 = 4;
char data[20];
void setup()
{
pinMode (3,OUTPUT);
pinMode (4, OUTPUT);
Serial.begin(9600); //Debugging
vw_set_ptt_inverted(true); //Required
vw_setup(2000); //bps
vw_set_rx_pin(2);
vw_rx_start(); //Start receiver
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
int i;
for (i = 0; i < buflen; i++)
{
Serial.write(buf[i]); // The received data is stored in the buffer
// and sent through the serial port to the computer
}
}
if (Serial.available()) {
char ser = Serial.read();
if(ser == 'Sensor 1') {
digitalWrite(led_pin, HIGH);
}
else if(ser == 'Sensor 2') {
digitalWrite(led_pin1, HIGH);
}
}
}
Gracias de nuevo por cualquier información.