pines

Dependencies:   HMC5883L111 RF24 RF24Network mbed motoresDC

Fork of RF24Network_Send by Akash Vibhute

Revision:
4:6341e80540be
Parent:
3:d605536db315
--- a/main.cpp	Thu Nov 05 05:59:18 2015 +0000
+++ b/main.cpp	Fri Jun 10 22:16:34 2016 +0000
@@ -1,14 +1,20 @@
+#define MAPLE_MINI
+#include "pines.h"
 #include "mbed.h"
+#include <HMC5883L.h>
 #include <RF24Network.h>
 #include <RF24.h>
+#include <motoresDC.h>
 
-Serial pc(USBTX, USBRX);
+Serial pc(TX3_PIN, RX3_PIN);
+HMC5883L brujula;
+InterruptIn boton(PB_8);
 
-#define nrf_CE      D9
-#define nrf_CSN     D10
-#define spi_SCK     D3
-#define spi_MOSI    D4
-#define spi_MISO    D5
+//motores       D27   D31    D30    D26   D29    D28     
+MotoresDC carro(PWM_L, CTRL1_L, CTRL2_L, PWM_R, CTRL1_R, CTRL2_R);
+
+PwmOut led(PB_1);
+DigitalOut status(PB_2);
 
 RF24 radio(spi_MOSI, spi_MISO, spi_SCK, nrf_CE, nrf_CSN );
 
@@ -17,66 +23,115 @@
 
 // Address of our node
 const uint16_t this_node = 01;
-
 // Address of the other node
 const uint16_t other_node = 00;
-
 // How often to send payload packet to the other unit
 const unsigned long interval = 100; //ms
-
 // When did we last send?
 unsigned long last_sent;
 Timer t;
-
 // How many have we sent already
 unsigned long packets_sent;
 Timer t_packet;
-
 // Structure of our payload
 struct payload_t 
 {
     unsigned long ms;
     unsigned long counter;
+    double heading;
 };
 
-
-int main()
+volatile double heading;
+volatile unsigned int flag = 0;
+// functions
+void toggle(void)
 {
-    pc.baud(921600);
+    flag = 1;
+    heading = brujula.getHeading();
+}
+
+void initP()
+{
+    led = 1;
+    boton.fall(toggle);
+    brujula.init();
+    carro.conducir(1);
     wait_ms(1000);
-
-    pc.printf("mBed RF24Network node: Tx\n");
+    carro.conducir(0);
+    led = 0;
+    wait_ms(500);
+    led = 1;
     radio.begin();
     network.begin(/*channel*/ 90, /*node address*/ this_node);
+    carro.conducir(-1);
     wait_ms(2000);
     t.start();
     t_packet.start();
+    status = 0;
+    led = 0;
+    carro.conducir(0);
+}
+
+void checkMessage()
+{
+    while ( network.available() ) 
+        {
+            // If so, grab it and print it out
+            RF24NetworkHeader header_rx;
+            payload_t payload_rx;
+            network.read(header_rx,&payload_rx,sizeof(payload_rx));
+            carro.conducir(payload_rx.heading / 360.0);
+            status = abs(payload_rx.heading) < 5.0 ? 1 : 0;
+        }
+}
+//------
+
+bool sendMessage(double angulo)
+{
+    led = !led;
+            t.reset();
+
+            payload_t payload_tx;
+            payload_tx.ms = t_packet.read_ms();
+            payload_tx.counter = packets_sent++;
+            payload_tx.heading = angulo;
+            
+            RF24NetworkHeader header_tx(/*to node*/ other_node);
+            bool ok = network.write(header_tx,&payload_tx,sizeof(payload_tx));    
+            flag = 0;
+            led = 0;     
+            return ok;
+}    
+int main()
+{   
+    initP();
+    
+    
     while(1) 
     {
         // Pump the network regularly
         network.update();
-
+        checkMessage();
         /* If it's time to send a message, send it! */
+        double angulo = brujula.getHeading();
+        led = angulo / 360.0;
         unsigned long now = t.read_ms();
-        if ( now >= interval  ) 
+        if ( (now - last_sent) > interval  ) 
         {
-            t.reset();
-
-            pc.printf("Sending...");
-            payload_t payload_tx;
-            payload_tx.ms = t_packet.read_ms();
-            payload_tx.counter = packets_sent++;
-
-
-            RF24NetworkHeader header_tx(/*to node*/ other_node);
-            bool ok = network.write(header_tx,&payload_tx,sizeof(payload_tx));
-            if (ok)
-                pc.printf("ok.\n");
-            else
-                pc.printf("failed.\n");
+            last_sent = now;
+            bool ok = sendMessage(angulo);
         }
-
-
+        
+        /*
+        if(abs(angulo) < 4)
+        {
+            led = 1;
+        }
+        else
+        {
+            led = 0;
+        }
+        */
     }
 
 }
\ No newline at end of file