G7 / Mbed 2 deprecated 000_XBee_send_backup

Dependencies:   mbed

Fork of XBee_write by Alex Louden

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "main.h"
00002 
00003 //XBee B med bargraph og digitale innganger + potmeter
00004 
00005 Serial xbee(p9, p10);
00006 Serial pc(USBTX, USBRX);
00007 DigitalOut rst(p11);
00008 DigitalOut myled(LED1);
00009 DigitalOut myled2(LED2);
00010 DigitalIn sb(p8);
00011 BusIn bryter[8] = {p12, p13, p14, p15, p16, p17, p18, p19};
00012 DigitalOut leds[8] = {p21, p22, p23, p24, p25, p26, p27, p28};
00013 char check_array_a[8] = {0, 0, 0, 0, 0, 0, 0, 0};
00014 char digital_in_array[8] =  {0, 0, 0, 0, 0, 0, 0, 0};
00015 
00016 AnalogIn ain(p20);
00017 char recievedmessage[8];
00018 
00019 void read_command();
00020 void reset();
00021 void check_digital_in();
00022 void get_array();
00023 void send_array(char *arr_name);
00024 
00025 int main()
00026 {
00027     reset();
00028     while(1) {
00029         read_command();
00030         get_array();
00031         check_digital_in();
00032         send_array(digital_in_array);
00033     }
00034 }
00035 
00036 void read_command()
00037 {
00038     if (xbee.readable()) {
00039         //Henter kommando og eventuell info for LEDs
00040         //xbee.gets(recievedmessage, sizeof(recievedmessage));
00041         //xbee.scanf("%s", recieveptr);
00042         for (uint8_t i = 0; i <= 7; i++) {
00043             if (xbee.readable()) {
00044                 //recievedmessage[i] = xbee.getc();
00045                 check_array_a[i] = xbee.getc();
00046                 pc.printf("\n\n %d Sjekk verdi pa bryter nr: %d", i, check_array_a[i]);
00047 
00048             } else {
00049                 recievedmessage[i] = NULL;
00050             }
00051             wait_ms(5);
00052         }
00053 
00054         //Tømmer bufferet i tilfelle det dukker opp input som ikke hører hjemme
00055         while (xbee.readable()) {
00056             xbee.getc();
00057             wait_ms(5);
00058         }
00059     }
00060 }
00061 
00062 void check_digital_in() //sjekker om lokal digital input er satt til 1 og lagrer verdier i array
00063 {
00064     for (int a=0; a<=7; a++) {
00065         if (bryter[a] != 0) {
00066             digital_in_array[a] = 1;
00067             //bryter_nr[a] = a;
00068             //xbee.putc(x);
00069         } else {
00070             digital_in_array[a] = 0;
00071         }
00072     }
00073 }
00074 
00075 void reset()
00076 {
00077     // reset the xbees (at least 200ns)
00078     rst = 0;
00079     wait_ms(1);
00080     rst = 1;
00081     wait_ms(1);
00082 }
00083 
00084 void get_array() //Leser array sendt fra xbee og lagrer dette lokalt
00085 {
00086     for (int b=0; b<=7; b++) {
00087         //if (check_array_a[b] != 0) {
00088         if ((recievedmessage[b] == b) && (b !=0)) {
00089             check_array_a[b] = 1;
00090         }
00091         pc.printf("\n Lest fra array, nr: %d er verdi: %d", b, check_array_a[b]);
00092         wait(1.5);
00093         //}
00094     }
00095 }
00096 
00097 void send_array(char *arr_name) //sender over hele arrayet
00098 {
00099     for (int c=0; c<=7; c++) {
00100         //if (check_array[c] !=0) {
00101         //xbee.printf("%c", c);
00102         //xbee.printf("%c", check_array[c]);
00103         xbee.putc(arr_name[c]);
00104     }
00105     pc.printf("\n array sendt \n");
00106 }