Plz
Dependencies: mbed CANMsg Adafruit_LEDBackpack
Diff: main.cpp
- 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