Projet S5 info - Advanced version

Dependencies:   XBeeLib mbed-rtos mbed

Fork of Capteurs-Beginner by Vincent Belanger

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "rtos.h"
00003 #include "XBeeLib.h"
00004  
00005 using namespace XBeeLib;
00006  
00007 Serial pc(USBTX, USBRX);
00008  
00009 XBeeZB* xbee;
00010 
00011 AnalogIn GP2D12(p15);
00012 DigitalIn capteur_1(p23);
00013 DigitalIn capteur_2(p24);
00014 DigitalIn capteur_3(p25);
00015 DigitalIn capteur_4(p26);
00016 DigitalIn capteur_5(p27);
00017 DigitalIn capteur_6(p28);
00018  
00019 Mutex capt_lock;
00020  
00021 bool capt_1;
00022 bool capt_2;
00023 bool capt_3;
00024 bool capt_4;
00025 bool capt_5;
00026 bool capt_6;
00027  
00028 uint16_t GP2D12_value;
00029  
00030 /* lecture des capteurs à partir des broches du mbed : p15, p16, p17, 19, 20 21*/
00031  
00032 void lecture_capteurs (void const *args){
00033     capt_lock.lock();
00034     
00035     capt_1=capteur_1.read();
00036     capt_2=capteur_2.read();
00037     capt_3=capteur_3.read();
00038     capt_4=capteur_4.read();
00039     capt_5=capteur_5.read();
00040     capt_6=capteur_6.read();
00041     
00042     GP2D12_value = GP2D12.read_u16();
00043     
00044     capt_lock.unlock();
00045 }
00046  
00047 void send_data_to_coordinator(const uint8_t* data)
00048 { 
00049     const TxStatus txStatus = xbee->send_data_to_coordinator(data, 2);
00050 }
00051  
00052 void envoi_donnees (void const *args) {
00053     capt_lock.lock();
00054     uint8_t data[2];
00055     data[0] = (capt_1 << 7) | (capt_2 << 6) | (capt_3 << 5) | (capt_4 << 4) | (capt_5 << 3) | (capt_6 << 2);
00056     data[1] = (GP2D12_value & 0xFF00) >> 8;
00057 
00058     capt_lock.unlock();
00059 
00060     send_data_to_coordinator(data);
00061 } 
00062  
00063 int main (void) {
00064     xbee = new XBeeZB(p13, p14, NC, NC, NC, 9600);
00065     
00066     RtosTimer readTimer(lecture_capteurs, osTimerPeriodic);
00067     RtosTimer sendTimer(envoi_donnees, osTimerPeriodic);
00068     
00069     readTimer.start(10);
00070     sendTimer.start(10);
00071     
00072     wait(osWaitForever);
00073 }
00074