Hola amigos.
Tengo dos Xbee comunicando uno coordinador y otro router end, los comunico con el propósito de enviar por puerto serie control de servo y boton de encendido, siendo satisfactoria la comunicación y obedeciendo el router las ordenes de coordinador.
Cuando envío desde el coordinador el carácter “D” para que cuando lo recepcione el router end (receptor) por puerto serie me encienda un led y así es ya que me funciona de maravilla,
lo que pasa y el problema es que cuando mando los datos para gobernar el servo desde el potenciometro del coordinador y en la lectura por puerto serie del receptor coincide el carácter D de la lectura del pontenciometro con el del led me lo enciende y no se como corregir este problema.
Ya que si no voy equivocado la recepción de potenciometro por puerto serie del receptor son todos los caracteres del codigo ascill.
Se puede hacer algún tipo de filtro?
Se puede sustituir un carácter por una palabra para que no coincidan?
Gracias compañeros, al menos por leerme.
COORDINADOR
int val = 0;
byte mapVal = 0;
int potPin = 0;
int botonbuzzer = 5;
void setup()COORDINADOR
int val = 0;
byte mapVal = 0;
int potPin = 0;
int botonbuzzer = 5;
void setup()
{
Serial.begin(19200);
pinMode(potPin, INPUT);
pinMode(botonbuzzer, INPUT);
}
void loop()
{
val = analogRead(potPin);{
mapVal = map(val,0,1023,0,179);
Serial.write(mapVal);
delay(2);
}
{
if(digitalRead(botonbuzzer)== HIGH) {
Serial.print('D'); }
}
}
ROUTER END
#include <Servo.h>
Servo scottServo; // create servo object to control a servo
int servoPin = 9; // analog pin used to connect the potentiometer
int servoValue = 0; // variable to read the value from the analog pin
int buzzer = 5;
void setup()
{
Serial.begin(19200);
scottServo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(buzzer,OUTPUT);
}
void loop()
{
if(Serial.available()> 0)
servoValue = Serial.read();
scottServo.write(servoValue);
if(Serial.read()== 'DZUB') {
digitalWrite(buzzer,HIGH);
delay(10);
digitalWrite(buzzer,LOW); }
}
8)