Nous pouvons simuler avec une carte arduino une trame API issue d'un xbee série 1 côté base recevant une donnée analogique d'un End device. La donnée analogique est une valeur aléatoire entre 200 et 212. Copier ce code et le téléverser dans une carte UNO.
int data [30];
int drapeau=0;
int periode=100;
int k=0;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
data[0] = 0x7e; //start
data[1] = 0x00; // longueur MSB
data[2] = 10; // longueur LSB
data[3] = 0x00; // API identifier
data[4] = 0x00; // adresse 16 bits MSB
data[5] = 0x00; // adresse 16 bits LSB
data[6] = 0x43; // digital channel mask H
data[7] = 0x00; // digital channel mask L
data[8] = 0x00; // analog channel mask H
data[9] = 0x02; // analog channel mask L
data[10] = 0x00; // digital samples
data[11] = 0x00; // analog sample H
data[12] = 0x00; // analog sample L
data[13] = 0; //checksum
}
void loop() {
if (millis()%periode<drapeau){
for (int i=0;i<=10;i++){
Serial.write(data[i]);
}
//k++;
//int val = 512+200*sin(6.28*0.1*k*periode/1000);
int val=random(200,212);
data[11]=highByte(val);
data[12]=lowByte(val);
data[13]=calculeChecksum(data);
Serial.write(data[11]);
Serial.write(data[12]);
Serial.write(data[13]);
}
drapeau = millis()%periode;
delay(2);
}
int calculeChecksum(int donnee[] ){
int somme = 0;
for (int i=3;i<=12;i++){
somme+=donnee[i];
}
return somme %(16*16);
}
Aucun commentaire:
Enregistrer un commentaire