Xbee receiver

Dependencies:   C12832 mbed

Committer:
nnoitre
Date:
Wed Mar 23 13:02:24 2016 +0000
Revision:
2:d7d8778f9780
Parent:
1:30d319218526
Commentaar

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nnoitre 0:b78d22fdc409 1 #include "mbed.h"
nnoitre 1:30d319218526 2 #include "C12832.h"
nnoitre 0:b78d22fdc409 3
nnoitre 0:b78d22fdc409 4 DigitalOut myled1(LED1);
nnoitre 0:b78d22fdc409 5 DigitalOut myled2(LED2);
nnoitre 0:b78d22fdc409 6 DigitalOut myled3(LED3);
nnoitre 0:b78d22fdc409 7 DigitalOut myled4(LED4);
nnoitre 0:b78d22fdc409 8
nnoitre 1:30d319218526 9 Serial xbee(p9,p10);
nnoitre 1:30d319218526 10 //DigitalOut nReset(p30); //reset pin of the xbee
nnoitre 1:30d319218526 11
nnoitre 1:30d319218526 12 C12832 lcd(p5, p7, p6, p8, p11); //Used for the LCD
nnoitre 0:b78d22fdc409 13
nnoitre 1:30d319218526 14 char a;
nnoitre 1:30d319218526 15 int ID=0b00000001;
nnoitre 1:30d319218526 16 int ACK;
nnoitre 1:30d319218526 17 int teller;
nnoitre 1:30d319218526 18 char received[7];
nnoitre 1:30d319218526 19 int check;
nnoitre 1:30d319218526 20 int i;
nnoitre 2:d7d8778f9780 21 int Checksum;
nnoitre 2:d7d8778f9780 22 // methode zenden
nnoitre 1:30d319218526 23 void send(){
nnoitre 1:30d319218526 24 xbee.putc(0x7E);
nnoitre 2:d7d8778f9780 25 xbee.putc(ID);
nnoitre 1:30d319218526 26 xbee.putc(received[1]);
nnoitre 1:30d319218526 27 xbee.putc(ACK);
nnoitre 2:d7d8778f9780 28 xbee.putc(Checksum);
nnoitre 1:30d319218526 29 xbee.putc(0x7E);
nnoitre 1:30d319218526 30 }
nnoitre 0:b78d22fdc409 31
nnoitre 1:30d319218526 32 int main(){
nnoitre 2:d7d8778f9780 33 xbee.baud(57600); //xbee klaarzetten
nnoitre 2:d7d8778f9780 34 while(1){
nnoitre 0:b78d22fdc409 35 if(xbee.readable()) { //Checks if the data is readable
nnoitre 2:d7d8778f9780 36 xbee.gets(received,8); //laad het frame in de array in
nnoitre 2:d7d8778f9780 37 check=(received[1]+received[2]+received[3]+received[4])%255; //checksum berekeken
nnoitre 2:d7d8778f9780 38 if(received[2]==ID){ //als de boodschap voor deze module bedoeld is
nnoitre 2:d7d8778f9780 39 if(received[0]==0x7E){ //als de startflag ontvangen is
nnoitre 1:30d319218526 40 myled1=!myled1;
nnoitre 2:d7d8778f9780 41 if(received[6]==0x7E){ //als de eindflag ontvangen is
nnoitre 2:d7d8778f9780 42 myled2=!myled2;
nnoitre 2:d7d8778f9780 43 if(check==received[5]) {//als de checksum klopt
nnoitre 2:d7d8778f9780 44 myled3=!myled3;
nnoitre 2:d7d8778f9780 45 teller++;
nnoitre 2:d7d8778f9780 46 lcd.cls();
nnoitre 2:d7d8778f9780 47 lcd.printf("%d",teller);
nnoitre 2:d7d8778f9780 48 ACK=0b00001111; //ack als ack instellen
nnoitre 2:d7d8778f9780 49 Checksum=(ID+received[1]+ACK)%255; //nieuwe checksum berekenen
nnoitre 2:d7d8778f9780 50 send(); //verzenden
nnoitre 2:d7d8778f9780 51 while(i<5){ //array leegmaken
nnoitre 2:d7d8778f9780 52 received[i]=0;
nnoitre 2:d7d8778f9780 53 i++;
nnoitre 2:d7d8778f9780 54 }
nnoitre 2:d7d8778f9780 55 i=0;
nnoitre 2:d7d8778f9780 56 }
nnoitre 2:d7d8778f9780 57 if(received[5]!=check){ //als de checksum niet klopt
nnoitre 2:d7d8778f9780 58 myled4=!myled4;
nnoitre 2:d7d8778f9780 59 ACK=0b11110000; //ack als NACK instellen
nnoitre 2:d7d8778f9780 60 Checksum=(ID+received[1]+ACK)%255; //nieuwe checksum berekenen
nnoitre 2:d7d8778f9780 61 send(); //verzenden
nnoitre 2:d7d8778f9780 62 while(i<5){ //array leegmaken
nnoitre 2:d7d8778f9780 63 received[i]=0;
nnoitre 2:d7d8778f9780 64 i++;
nnoitre 2:d7d8778f9780 65 }
nnoitre 2:d7d8778f9780 66 i=0;
nnoitre 2:d7d8778f9780 67 }
nnoitre 1:30d319218526 68 }
nnoitre 1:30d319218526 69 }
nnoitre 0:b78d22fdc409 70 }
nnoitre 0:b78d22fdc409 71 }
nnoitre 0:b78d22fdc409 72 }
nnoitre 1:30d319218526 73 }