Plz

Dependencies:   mbed CANMsg Adafruit_LEDBackpack

Files at this revision

API Documentation at this revision

Comitter:
StrawberryAubrey
Date:
Wed Jul 24 16:36:53 2019 +0000
Child:
1:6c993d149edc
Commit message:
Let's try this

Changed in this revision

CANMsg.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CANMsg.lib	Wed Jul 24 16:36:53 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/hudakz/code/CANMsg/#5017a65ff423
--- /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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Jul 24 16:36:53 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file