Plz

Dependencies:   mbed CANMsg Adafruit_LEDBackpack

Committer:
fconboy
Date:
Wed Jul 24 19:24:25 2019 +0000
Revision:
1:6c993d149edc
Parent:
0:db7d127e9819
Child:
2:36e6eccdfc1e
Changed pin numbers for the AnalogIn pins

Who changed what in which revision?

UserRevisionLine numberNew 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;
fconboy 1:6c993d149edc 5 AnalogIn currentPot(p15);
fconboy 1:6c993d149edc 6 AnalogIn speedPot(p16);
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;
fconboy 1:6c993d149edc 92 // Append message with speed and current potentiometer s.
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 }