Pour analyser issues d'un xbee s1 côté base recevant une donnée analogique d'un autre xbee, copier ce code dans processing :
/*
XBee coté capteur à configurer en commande AT :
D02 (I/O O est configurée en entrée)
IR64 (période d'echantillonnage de 100 ms)
Penser à mettre Vref à 3,3V avec un Xbee S1.
côté Base : se mettre en mode API 1 avec X-CTU
Ce sketch permet d'analyser la trame et affiche la tension numérisée sur l'entrée 0
*/
import processing.serial.*;
Serial myPort; // Create object from Serial class
int val = 0; // Data received from the serial port
int[] data = new int [30];
void setup()
{
size(200, 200);
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
textAlign(CENTER, CENTER);
textSize(40);
fill(255,0,0);
}
void draw()
{
background(val/4);
text (val,100,100);
if ( myPort.available() >=14) {
if (myPort.read()==0x7E){
println("start : 7E");
int lh = myPort.read();
int lb = myPort.read();
println("longueur MSB :"+hex(lh,2));
println("longueur LSB :"+hex(lb,2));
int longueur = lh*255 + lb;
for (int i = 0; i<longueur ; i++){
data[i]=myPort.read();
}
println("API identifier :"+hex(data[0],2));
println("Adresse 16 bits MSB :"+hex(data[1],2));
println("Adresse 16 bits LSB :"+hex(data[2],2));
println("Digital Channel Mask H :"+hex(data[3],2));
println("Digital Channel Mask L :"+hex(data[4],2));
println("Analog Channel Mask H :"+hex(data[5],2));
println("Analog Channel Mask L :"+hex(data[6],2));
println("Digital Samples :"+hex(data[7],2));
println("Analog samples H :"+hex(data[8],2));
println("Analog samples L :"+hex(data[9],2));
int checksum = myPort.read();
println ("Checksum :"+hex(checksum,2));
val = data[8]*255+data[9];
println();
}
}
}
Aucun commentaire:
Enregistrer un commentaire