Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of HelloWorld by
Revision 32:bcfe51898e7c, committed 2017-10-01
- Comitter:
- kkalsi
- Date:
- Sun Oct 01 18:28:14 2017 +0000
- Parent:
- 30:5881c661b0bb
- Commit message:
- transmit
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Sep 30 18:43:25 2017 +0000
+++ b/main.cpp Sun Oct 01 18:28:14 2017 +0000
@@ -6,10 +6,15 @@
Serial xbee_routeur(p13,p14);
Serial pc(USBTX, USBRX); // tx, rx
DigitalOut rst1(p8); //Digital reset for the XBee, 200ns for reset
-MMA8452Q mma8452(p9,p10,0x1d);
-DigitalIn btn(p15);
+DigitalIn btn(p15); //Bouton read
+//MMA8452Q mma8452(p9,p10,0x1d);
LocalFileSystem local("local"); // Create the local filesystem under the name "local"
+DigitalOut myled(LED1);
+Ticker sample;
+int currentStateButton;
+int previousStateButton;
+int validationStateButton;
uint16_t panId; // panId
uint8_t panId_LSB;
@@ -20,31 +25,53 @@
void seperatePanId(void);
void ReadFile (void);
-void setPanId(void);
-void sauvegarder(void);
+void envoyer_tramme(char commande[], uint8_t data[], uint8_t length_MSB, uint8_t length_LSB, uint8_t API_frame_name);
+void transmisson(uint8_t data[], uint8_t length_MSB, uint8_t length_LSB, uint8_t API_frame_name);
+void initialisation_xbee(void);
+void readBtn(void);
int main() {
ReadFile();// when you run first time without this line, the setup file is on created
-
wait(1);
-
seperatePanId(); // séparé msb et lsb du panId
+ /*
pc.printf("panId lsb : %x\n\r",panId_LSB);
pc.printf("panId msb : %x\n\r",panId_MSB);
pc.printf("panId : %x\n\r",panId);
pc.printf("url: %s\n\r",URL);
+ */
- setPanId(); // set panId to Xbee
+ initialisation_xbee();
+
+ char commande0[2] = {'I','D'};
+ uint8_t data0[2] = {panId_MSB, panId_LSB};
+ envoyer_tramme(commande0, data0, 0x00, 0x06, 0x09);
+
+ char commande1[2] = {'S','C'};
+ uint8_t data1[2] = {0x09};
+ envoyer_tramme(commande1, data1, 0x00, 0x05, 0x09);
- wait_ms(500);
+ /*
+ char commande2[2] = {'W','R'};
+ uint8_t data2[10] = {};
+ envoyer_tramme(commande2, data2, 0x00, 0x04, 0x09);
+ */
+ /*
+ char commande3[2] = {'A','C'};
+ uint8_t data3[2] = {};
+ envoyer_tramme(commande3, data3, 0x00, 0x04, 0x09);
+ */
- sauvegarder();
+ sample.attach(&readBtn,0.05);
while(1)
{
+
+
+ //myled = 1;
if(xbee_routeur.readable())
{
pc.putc(xbee_routeur.getc());
@@ -54,37 +81,117 @@
{
xbee_routeur.putc(pc.getc());
}
+
+ }
+}
+
+void readBtn(void)
+{
+ uint8_t data4[2];
+ currentStateButton = btn.read(); // lecture courante numérique button
- /*
- xbee_routeur.putc(0x7E); // start delimiter
- xbee_routeur.putc(0x00); // length 1/2
- xbee_routeur.putc(0x10); // legth 2/2
- xbee_routeur.putc(0x10); // Frame type
- xbee_routeur.putc(0x01); // Frame id
- xbee_routeur.putc(0x00); // 64-bit adress (broadcast)
- xbee_routeur.putc(0x00); // 64-bit adress (broadcast)
- xbee_routeur.putc(0x00); // 64-bit adress (broadcast)
- xbee_routeur.putc(0x00); // 64-bit adress (broadcast)
- xbee_routeur.putc(0x00); // 64-bit adress (broadcast)
- xbee_routeur.putc(0x00); // 64-bit adress (broadcast)
- xbee_routeur.putc(0x00); // 64-bit adress (broadcast)
- xbee_routeur.putc(0x00); // 64-bit adress (broadcast)
- xbee_routeur.putc(0xFF); // 16-bit adress (broadcast)
- xbee_routeur.putc(0xFE); // 16-bit adress (broadcast)
- xbee_routeur.putc(0x00); // Broadcast radius
- xbee_routeur.putc(0x00); // options
-
- xbee_routeur.putc(0x23);
- xbee_routeur.putc(0x45);
-
- long sum = 0xFF - ((0x10 + 0x01 + 0xFF + 0xFF + 0xFE + 0x23 + 0x45 + 1) & 0xFF); // calcul du checksum
- xbee_routeur.printf("%x \n", sum);
- xbee_routeur.putc(sum); // checksum
-
- wait(1);
- */
+ if(previousStateButton != currentStateButton) // détection de changement d'état pour bouton
+ {
+ wait_ms(50);
+
+ validationStateButton = btn.read(); // nouvelle lecture apres stabilisation button
+
+ if(currentStateButton == validationStateButton)
+ {
+ if(previousStateButton != currentStateButton)
+ {
+ if(currentStateButton == 1)
+ {
+ data4[0] = 0x01;
+ }
+ else
+ {
+ data4[0] = 0x00;
+ }
+ transmisson(data4, 0x00, 0x0F, 0x10);
+ }
+ }
+ }
+ previousStateButton = validationStateButton; // mise a jour de l'état précédente button 1
+}
+
+void initialisation_xbee(void)
+{
+ xbee_routeur.baud(9600); //set baud rate
+ rst1 = 0; // xbee reset
+ wait_ms(400);
+ rst1 = 1;
+ xbee_routeur.printf("+++");
+ wait_ms(500);
+}
+
+void transmisson(uint8_t data[], uint8_t length_MSB, uint8_t length_LSB, uint8_t API_frame_name)
+{
+ int sum = 0;
+
+ xbee_routeur.putc(0x7E); // start delimiter
+ xbee_routeur.putc(length_MSB); // MSB length
+ xbee_routeur.putc(length_LSB); // LSB length
+ xbee_routeur.putc(API_frame_name); // API frame name
+ xbee_routeur.putc(0x01); // Frame Id
+ xbee_routeur.putc(0x00); // 64-bit address (broadcast)
+ xbee_routeur.putc(0x00); //
+ xbee_routeur.putc(0x00); //
+ xbee_routeur.putc(0x00); //
+ xbee_routeur.putc(0x00); //
+ xbee_routeur.putc(0x00); //
+ xbee_routeur.putc(0x00); //
+ xbee_routeur.putc(0x00); //
+ xbee_routeur.putc(0xFF); // 16-bit address (broadcast)
+ xbee_routeur.putc(0xFE); // 16-bit address (broadcast)
+ xbee_routeur.putc(0x00); // Broadcast radius
+ xbee_routeur.putc(0x00); // Options
+
+ uint16_t length = length_MSB;
+ length = (length << 8) + length_LSB;
+ //pc.printf("length : %x\n\r",length);
+
+ for (int i = 0 ; i < length - 14; i++)
+ {
+ xbee_routeur.putc(data[i]); // API frame name
+ //pc.printf("data %d : %x\n\r",i,data[i]);
+ sum = sum + data[i];
}
+ sum = sum + API_frame_name + 0x01 + 0xFF +0xFE;
+ char checksum = (0xFF - (sum & 0xFF));
+ //pc.printf("checksum : %x\n\r",checksum);
+ xbee_routeur.putc(checksum); // checksum
+}
+
+
+void envoyer_tramme(char commande[], uint8_t data[], uint8_t length_MSB, uint8_t length_LSB, uint8_t API_frame_name)
+{
+ int sum = 0;
+
+ xbee_routeur.putc(0x7E); // start delimiter
+ xbee_routeur.putc(length_MSB); // MSB length
+ xbee_routeur.putc(length_LSB); // LSB length
+ xbee_routeur.putc(API_frame_name); // API frame name
+ xbee_routeur.putc(0x01); // Frame Id
+ xbee_routeur.putc(commande[0]); // Commande lettre 1
+ xbee_routeur.putc(commande[1]); // Commande lettre 2
+
+ uint16_t length = length_MSB;
+ length = (length << 8) + length_LSB;
+ //pc.printf("length : %x\n\r",length);
+
+ for (int i = 0 ; i < length - 4; i++)
+ {
+ xbee_routeur.putc(data[i]); // API frame name
+ //pc.printf("data %d : %x\n\r",i,data[i]);
+ sum = sum + data[i];
+ }
+
+ sum = sum + API_frame_name + 0x01 + commande[0]+ commande[1];
+ char checksum = (0xFF - (sum & 0xFF));
+ //pc.printf("checksum : %x\n\r",checksum);
+ xbee_routeur.putc(checksum); // checksum
}
void seperatePanId(void)
@@ -101,46 +208,33 @@
fclose(set);
}
-void sauvegarder(void)
-{
- xbee_routeur.putc(0x7E); // start delimiter
- xbee_routeur.putc(0x00); // MSB length
- xbee_routeur.putc(0x04); // LSB length
- xbee_routeur.putc(0x09); // AT COMMAND queue
- xbee_routeur.putc(0x41); // Frame Id
- xbee_routeur.putc(0x57); // 'W' Two ASCII characters that identify the AT Command (ID)
- xbee_routeur.putc(0x52); // 'R'
-
- uint8_t checksum = (0xFF - ((0x09 + 0x41 + 0x57 + 0x52) & 0xFF));
- pc.printf("checksum : %x\n\r",checksum);
- xbee_routeur.putc(checksum); // checksum
-}
+
+
+
+
+
+
+
+
+
+
+
+
-void setPanId(void)
-{
- xbee_routeur.baud(9600); //set baud rate
- rst1 = 0; // xbee reset
- wait_ms(400);
- rst1 = 1;
-
- xbee_routeur.putc(0x2B); // +
- xbee_routeur.putc(0x2B); // +
- xbee_routeur.putc(0x2B); // +
- xbee_routeur.putc(0x7E); // start delimiter
- xbee_routeur.putc(0x00); // MSB length
- xbee_routeur.putc(0x06); // LSB length
- xbee_routeur.putc(0x08); // AT command
- xbee_routeur.putc(0x01); // Frame Id
- xbee_routeur.putc(0x49); // 'I' Two ASCII characters that identify the AT Command (ID)
- xbee_routeur.putc(0x44); // 'D'
- xbee_routeur.putc(panId_MSB); // MSB du panId
- xbee_routeur.putc(panId_LSB); // LSB du panId
-
- uint8_t checksum = (0xFF - ((0x08 + 0x01 + 0x49 + 0x44 + panId_MSB + panId_LSB) & 0xFF));
- pc.printf("checksum : %x\n\r",checksum);
- xbee_routeur.putc(checksum); // checksum
-}
+
+
+
+
+
+
+
+
+
+
+
+
+
// SPI COMMUNICATION
/*
