Plz

Dependencies:   mbed CANMsg Adafruit_LEDBackpack

Revision:
0:db7d127e9819
Child:
1:6c993d149edc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jul 24 16:36:53 2019 +0000
@@ -0,0 +1,104 @@
+#include "mbed.h"
+#include "CANMsg.h"
+
+Ticker ticker;
+AnalogIn currentPot(A0);
+AnalogIn speedPot(A1);
+DigitalIn enable(p5);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+CAN can1(p9, p10);
+//CAN can2(p30, p29);
+
+//const uint16_t MY_ID = 0x500;
+const uint16_t SIGNAL_ID = 0x501;
+const uint16_t BUS_ID = 0x502;
+char counter = 0;
+Serial pc(USBTX, USBRX); // tx, rx
+
+CANMsg driverControls;
+CANMsg busCurrent;
+
+//====================================================================
+
+void printMsg(CANMessage& msg)
+{
+    pc.printf("-------------------------------------\r\n");
+    pc.printf("  ID      = 0x%.3x\r\n", msg.id);
+    pc.printf("  Type    = %d\r\n", msg.type);
+    pc.printf("  Format  = %d\r\n", msg.format);
+    pc.printf("  Length  = %d\r\n", msg.len);
+    pc.printf("  Data    =");
+    pc.printf("-------------------------------------\r\n");
+    for(int i = 0; i < msg.len; i++)
+        pc.printf(" 0x%.2X", msg.data[i]);
+    pc.printf("\r\n");
+}
+
+//=====================================================================
+/*
+void onCanReceived(CANMessage& msg)
+{
+    can1.read(msg);
+    pc.printf("-------------------------------------\r\n");
+    pc.printf("CAN message received\r\n");
+    pc.printf("-------------------------------------\r\n");
+    printMsg(msg);
+ 
+    if (msg.id == MY_ID) {
+        // extract data from the received CAN message 
+        // in the same order as it was added on the transmitter side
+        msg >> counter;
+        msg >> voltage;    
+        pc.printf("  counter = %d\r\n", counter);
+        pc.printf("  voltage = %e V\r\n", voltage);
+    }
+    timer.start(); // to transmit next message in main
+}
+*/
+//======================================================================
+
+void send()
+{
+    if(can1.write(driverControls))
+        {
+            led1 = !led1;
+        } 
+    else
+        {
+            led1 = 1;
+            led2 = 1;
+            wait(3);
+        }
+}
+
+int main()
+{
+    ticker.attach(&send, 0.1);
+    pc.baud(9600);
+    can1.frequency(1000000);
+    pc.printf("-------------------------------------\r\n");
+    printf("Attempting to send a CAN message\n");
+    //float signalCurrent = currentPot.read();
+    //float signalSpeed = speedPot.read();
+    float maxBusCurrent = 1.0;
+    printf("Current and Speed: %f and %f\n", currentPot.read(), speedPot.read());
+    pc.printf("-------------------------------------\r\n");
+    while(1) {
+        //printf("Entering transmission main code)\n");
+        //pc.printf("-------------------------------------\r\n");
+        driverControls.clear();
+        driverControls.id = SIGNAL_ID;
+        // Append message with speed and current potentiometres.
+        driverControls << currentPot.read();
+        driverControls << speedPot.read();
+        busCurrent.clear();
+        busCurrent.id = BUS_ID;
+        busCurrent << maxBusCurrent;
+        if(can1.write(busCurrent))
+        {
+            led2 = !led2;
+        }
+        send();  
+    }
+}
\ No newline at end of file