Plz
Dependencies: mbed CANMsg Adafruit_LEDBackpack
main.cpp@0:db7d127e9819, 2019-07-24 (annotated)
- Committer:
- StrawberryAubrey
- Date:
- Wed Jul 24 16:36:53 2019 +0000
- Revision:
- 0:db7d127e9819
- Child:
- 1:6c993d149edc
Let's try this
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
StrawberryAubrey | 0:db7d127e9819 | 1 | #include "mbed.h" |
StrawberryAubrey | 0:db7d127e9819 | 2 | #include "CANMsg.h" |
StrawberryAubrey | 0:db7d127e9819 | 3 | |
StrawberryAubrey | 0:db7d127e9819 | 4 | Ticker ticker; |
StrawberryAubrey | 0:db7d127e9819 | 5 | AnalogIn currentPot(A0); |
StrawberryAubrey | 0:db7d127e9819 | 6 | AnalogIn speedPot(A1); |
StrawberryAubrey | 0:db7d127e9819 | 7 | DigitalIn enable(p5); |
StrawberryAubrey | 0:db7d127e9819 | 8 | DigitalOut led1(LED1); |
StrawberryAubrey | 0:db7d127e9819 | 9 | DigitalOut led2(LED2); |
StrawberryAubrey | 0:db7d127e9819 | 10 | CAN can1(p9, p10); |
StrawberryAubrey | 0:db7d127e9819 | 11 | //CAN can2(p30, p29); |
StrawberryAubrey | 0:db7d127e9819 | 12 | |
StrawberryAubrey | 0:db7d127e9819 | 13 | //const uint16_t MY_ID = 0x500; |
StrawberryAubrey | 0:db7d127e9819 | 14 | const uint16_t SIGNAL_ID = 0x501; |
StrawberryAubrey | 0:db7d127e9819 | 15 | const uint16_t BUS_ID = 0x502; |
StrawberryAubrey | 0:db7d127e9819 | 16 | char counter = 0; |
StrawberryAubrey | 0:db7d127e9819 | 17 | Serial pc(USBTX, USBRX); // tx, rx |
StrawberryAubrey | 0:db7d127e9819 | 18 | |
StrawberryAubrey | 0:db7d127e9819 | 19 | CANMsg driverControls; |
StrawberryAubrey | 0:db7d127e9819 | 20 | CANMsg busCurrent; |
StrawberryAubrey | 0:db7d127e9819 | 21 | |
StrawberryAubrey | 0:db7d127e9819 | 22 | //==================================================================== |
StrawberryAubrey | 0:db7d127e9819 | 23 | |
StrawberryAubrey | 0:db7d127e9819 | 24 | void printMsg(CANMessage& msg) |
StrawberryAubrey | 0:db7d127e9819 | 25 | { |
StrawberryAubrey | 0:db7d127e9819 | 26 | pc.printf("-------------------------------------\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 27 | pc.printf(" ID = 0x%.3x\r\n", msg.id); |
StrawberryAubrey | 0:db7d127e9819 | 28 | pc.printf(" Type = %d\r\n", msg.type); |
StrawberryAubrey | 0:db7d127e9819 | 29 | pc.printf(" Format = %d\r\n", msg.format); |
StrawberryAubrey | 0:db7d127e9819 | 30 | pc.printf(" Length = %d\r\n", msg.len); |
StrawberryAubrey | 0:db7d127e9819 | 31 | pc.printf(" Data ="); |
StrawberryAubrey | 0:db7d127e9819 | 32 | pc.printf("-------------------------------------\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 33 | for(int i = 0; i < msg.len; i++) |
StrawberryAubrey | 0:db7d127e9819 | 34 | pc.printf(" 0x%.2X", msg.data[i]); |
StrawberryAubrey | 0:db7d127e9819 | 35 | pc.printf("\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 36 | } |
StrawberryAubrey | 0:db7d127e9819 | 37 | |
StrawberryAubrey | 0:db7d127e9819 | 38 | //===================================================================== |
StrawberryAubrey | 0:db7d127e9819 | 39 | /* |
StrawberryAubrey | 0:db7d127e9819 | 40 | void onCanReceived(CANMessage& msg) |
StrawberryAubrey | 0:db7d127e9819 | 41 | { |
StrawberryAubrey | 0:db7d127e9819 | 42 | can1.read(msg); |
StrawberryAubrey | 0:db7d127e9819 | 43 | pc.printf("-------------------------------------\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 44 | pc.printf("CAN message received\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 45 | pc.printf("-------------------------------------\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 46 | printMsg(msg); |
StrawberryAubrey | 0:db7d127e9819 | 47 | |
StrawberryAubrey | 0:db7d127e9819 | 48 | if (msg.id == MY_ID) { |
StrawberryAubrey | 0:db7d127e9819 | 49 | // extract data from the received CAN message |
StrawberryAubrey | 0:db7d127e9819 | 50 | // in the same order as it was added on the transmitter side |
StrawberryAubrey | 0:db7d127e9819 | 51 | msg >> counter; |
StrawberryAubrey | 0:db7d127e9819 | 52 | msg >> voltage; |
StrawberryAubrey | 0:db7d127e9819 | 53 | pc.printf(" counter = %d\r\n", counter); |
StrawberryAubrey | 0:db7d127e9819 | 54 | pc.printf(" voltage = %e V\r\n", voltage); |
StrawberryAubrey | 0:db7d127e9819 | 55 | } |
StrawberryAubrey | 0:db7d127e9819 | 56 | timer.start(); // to transmit next message in main |
StrawberryAubrey | 0:db7d127e9819 | 57 | } |
StrawberryAubrey | 0:db7d127e9819 | 58 | */ |
StrawberryAubrey | 0:db7d127e9819 | 59 | //====================================================================== |
StrawberryAubrey | 0:db7d127e9819 | 60 | |
StrawberryAubrey | 0:db7d127e9819 | 61 | void send() |
StrawberryAubrey | 0:db7d127e9819 | 62 | { |
StrawberryAubrey | 0:db7d127e9819 | 63 | if(can1.write(driverControls)) |
StrawberryAubrey | 0:db7d127e9819 | 64 | { |
StrawberryAubrey | 0:db7d127e9819 | 65 | led1 = !led1; |
StrawberryAubrey | 0:db7d127e9819 | 66 | } |
StrawberryAubrey | 0:db7d127e9819 | 67 | else |
StrawberryAubrey | 0:db7d127e9819 | 68 | { |
StrawberryAubrey | 0:db7d127e9819 | 69 | led1 = 1; |
StrawberryAubrey | 0:db7d127e9819 | 70 | led2 = 1; |
StrawberryAubrey | 0:db7d127e9819 | 71 | wait(3); |
StrawberryAubrey | 0:db7d127e9819 | 72 | } |
StrawberryAubrey | 0:db7d127e9819 | 73 | } |
StrawberryAubrey | 0:db7d127e9819 | 74 | |
StrawberryAubrey | 0:db7d127e9819 | 75 | int main() |
StrawberryAubrey | 0:db7d127e9819 | 76 | { |
StrawberryAubrey | 0:db7d127e9819 | 77 | ticker.attach(&send, 0.1); |
StrawberryAubrey | 0:db7d127e9819 | 78 | pc.baud(9600); |
StrawberryAubrey | 0:db7d127e9819 | 79 | can1.frequency(1000000); |
StrawberryAubrey | 0:db7d127e9819 | 80 | pc.printf("-------------------------------------\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 81 | printf("Attempting to send a CAN message\n"); |
StrawberryAubrey | 0:db7d127e9819 | 82 | //float signalCurrent = currentPot.read(); |
StrawberryAubrey | 0:db7d127e9819 | 83 | //float signalSpeed = speedPot.read(); |
StrawberryAubrey | 0:db7d127e9819 | 84 | float maxBusCurrent = 1.0; |
StrawberryAubrey | 0:db7d127e9819 | 85 | printf("Current and Speed: %f and %f\n", currentPot.read(), speedPot.read()); |
StrawberryAubrey | 0:db7d127e9819 | 86 | pc.printf("-------------------------------------\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 87 | while(1) { |
StrawberryAubrey | 0:db7d127e9819 | 88 | //printf("Entering transmission main code)\n"); |
StrawberryAubrey | 0:db7d127e9819 | 89 | //pc.printf("-------------------------------------\r\n"); |
StrawberryAubrey | 0:db7d127e9819 | 90 | driverControls.clear(); |
StrawberryAubrey | 0:db7d127e9819 | 91 | driverControls.id = SIGNAL_ID; |
StrawberryAubrey | 0:db7d127e9819 | 92 | // Append message with speed and current potentiometres. |
StrawberryAubrey | 0:db7d127e9819 | 93 | driverControls << currentPot.read(); |
StrawberryAubrey | 0:db7d127e9819 | 94 | driverControls << speedPot.read(); |
StrawberryAubrey | 0:db7d127e9819 | 95 | busCurrent.clear(); |
StrawberryAubrey | 0:db7d127e9819 | 96 | busCurrent.id = BUS_ID; |
StrawberryAubrey | 0:db7d127e9819 | 97 | busCurrent << maxBusCurrent; |
StrawberryAubrey | 0:db7d127e9819 | 98 | if(can1.write(busCurrent)) |
StrawberryAubrey | 0:db7d127e9819 | 99 | { |
StrawberryAubrey | 0:db7d127e9819 | 100 | led2 = !led2; |
StrawberryAubrey | 0:db7d127e9819 | 101 | } |
StrawberryAubrey | 0:db7d127e9819 | 102 | send(); |
StrawberryAubrey | 0:db7d127e9819 | 103 | } |
StrawberryAubrey | 0:db7d127e9819 | 104 | } |