XBee

Hallo,

Ik heb een paar XBees aangeschaft en 2 XBee shields van libelium. Ik heb de eerste tutorial geprobeerd "Physical pixel", en meteen daar al vastgelopen. Ik krijg op de SerialMonitor wel een aantal random nummers binnen, maar de Leds reageren niet. (De XBees maken contact met elkaar volgens X CTU) Beide arduino's heb ik geprogrammeerd met de shields eraf. Shields erop gezet met USB/TX schakeling op TX. Op de arduino's zelf flikkert de TX indicator wel, maar de RX blijft uit. Wat doe ik fout??

Alle suggesties zijn welkom.

groet Ruud

Stap 1 is hier de code laten zien en een link welke libraries. anders moet iedereen die evt wil helpen eerst de juiste library zoeken.....

Sorry, ik hoop dat het zo duidelijker is.

Ik heb de volgende code ingeladen in beide arduino's. De code maakt gebruik van de standaard Software Serial Library

void setup() {
 Serial.begin(9600);
}

void loop() {
 Serial.print('H');
 delay(1000);
 Serial.print('L');
 delay(1000);
}

Ik heb daarbij de tutorial van Libelium gevolgd op http://www.cooking-hacks.com/documentation/tutorials/arduino-xbee-shield

Led op pin 13 ging niet knipperen.

Daarna heb ik het volgende geprobeerd, ook weer met de Software Serial Library de eerste arduino heb ik als volgt geprogrammeerd

boolean Q = false
void setup()
{
Serial.begin(9600);
}
void loop()
{
Q =!Q;
Serial.print(Q);
delay(1000);
}

de ontvangende arduino heb ik als volgt geprogrammeerd

int p;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if(Serial.available()>0)
  {
    p = Serial.read();
    Serial.println(p);
  }
  if (p = 0)
  {
    digitalWrite(13, HIGH);
  }
    else 
    if(p = 1)
    {
    digitalWrite(13, LOW);
    }
  }

De ontvangende arduino reageert niet. Zoals ik al eerder schreef de XBees maken contact volgens de X-CTU. Op de zender arduino flikkert de TX wel RX niet. Wat doe ik verkeerd?

groet Ruud

Ik denk dat jij een paar stapjes terug moet om eerst C een beetje te leren....

if (p = 1)

is altijd waar. Immers p wordt op 1 gezet.

Als je een LED wil laten knipperen.... moet je wel een HIGH resp LOW naar de LED schrijven... Zie het blink programma

en behalve deze zitten er nog wel meer fouten in.... pinMode?

Qua programmering ben ik eruit.
Voor de uitzendende arduino heb ik de volgende sketch geschreven

const int analogInPin = A0;
int sensorValue = 0;
 int led = 9;       
int brightness = 0;   


void setup()  { 
pinMode(led, OUTPUT);
  Serial.begin(9600);
} 

void loop()  { 
    sensorValue = analogRead(analogInPin); 
 //  brightness =sensorValue; 
   brightness = map(sensorValue, 0, 600, 0, 255);
  if(brightness < 6)
   brightness = 0;
   

Serial.write(brightness);
analogWrite(led, brightness);
                            
}

en voor de ontvangende arduino heb ik deze sketch geschreven

int incomingByte = 0;	
int led = 9;
int brightness = 0;    
void setup() {
	Serial.begin(9600);	
  pinMode(led, OUTPUT);        
          
}

void loop() {

	
	if (Serial.available() > 0) {
		incomingByte = Serial.read();
}
		Serial.print("I received: ");
		Serial.println(incomingByte);

analogWrite(led, incomingByte);
	
}

Op beide arduino’s zit een led op pin 9.

Zo kan ik zien dat er een groot tijdsverschil zit tussen het oplichten van de led op de eerste arduino en de led op de tweede arduino. Nou weet ik wel dat dit een XBee probleem is, en dat dit niet echt op dit forum hoort, maar als er iemand is die ervaring heeft met dit probleem hoor ik het graag, of anders een verwijzing naar een forum voor XBee’s.

groet
Ruud

Oplossing gevonden :slight_smile: De zender verstuurt nu de ruwe data van analogIn direct naar de ontvanger en remapped het daarna pas voor de eigen led

void loop()  { 
    sensorValue = analogRead(analogInPin); 
    Serial.write(sensorValue);
 //  brightness =sensorValue; 
   brightness = map(sensorValue, 0, 600, 0, 255);
  if(brightness < 6)
   brightness = 0;
   
  // set the brightness of pin 9: 
//Serial.write(brightness);
analogWrite(led, brightness);

en in de ontvanger heb ik de if(Serial.available()>0) veranderd in while(Serial available()>0)

En werkt het perfect.