Nucleo by Cach
Dependencies: C12832 CANnucleo LM75B mbed
Fork of CANnucleo_Hello by
Revision 10:d295b0df4b82, committed 2016-01-29
- Comitter:
- jcourtois
- Date:
- Fri Jan 29 16:58:28 2016 +0000
- Parent:
- 9:8352cfe17ab1
- Commit message:
- Test
Changed in this revision
diff -r 8352cfe17ab1 -r d295b0df4b82 C12832.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832.lib Fri Jan 29 16:58:28 2016 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/chris/code/C12832/#7de323fa46fe
diff -r 8352cfe17ab1 -r d295b0df4b82 LM75B.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LM75B.lib Fri Jan 29 16:58:28 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/neilt6/code/LM75B/#fc27dc535ea9
diff -r 8352cfe17ab1 -r d295b0df4b82 main.cpp --- a/main.cpp Wed Dec 23 10:38:02 2015 +0000 +++ b/main.cpp Fri Jan 29 16:58:28 2016 +0000 @@ -22,15 +22,17 @@ #include "mbed.h" #include "CAN.h" +#include "C12832.h" +#include "LM75B.h" #define BOARD1 1 // comment out this line when compiling for board #2 #if defined(BOARD1) #define RX_ID 0x100 - #define TX_ID 0x101 + #define TX_ID 0x7FF #else #define RX_ID 0x101 - #define TX_ID 0x100 + #define TX_ID 0x7FF #endif // See wiki page <https://developer.mbed.org/users/hudakz/code/CAN_Nucleo_Hello/> @@ -42,6 +44,15 @@ DigitalOut led(LED1); #endif + DigitalIn fire(D4); + C12832 lcd(D11, D13, D12, D7, D10); + LM75B sensor(D14,D15); + AnalogIn pot1 (A0); + AnalogIn pot2 (A1); + PwmOut r (D5); + PwmOut g (D8); + PwmOut b (D9); + int ledReceived; Timer timer; CAN can(PA_11, PA_12); // CAN Rx pin name, CAN Tx pin name, Automatic recovery from bus-off state enabled by default @@ -57,6 +68,7 @@ * @param * @retval */ + void onMsgReceived() { msgAvailable = true; } @@ -70,7 +82,7 @@ int main() { can.frequency(1000000); // set bit rate to 1Mbps can.attach(&onMsgReceived, CAN::RxIrq); // attach 'CAN receive-complete' interrupt handler - + char buff_2[8]; #if defined(BOARD1) #if defined(TARGET_STM32F103C8T6) led = 0; // turn LED on @@ -85,24 +97,39 @@ led = 0; // turn LED off #endif #endif - + lcd.cls(); while(1) { - if(timer.read() >= 1.0) { // check for timeout + wait (0.1); + lcd.cls(); + lcd.locate(0,3); + lcd.printf("%d %d %d",char(sensor.temp()),char(pot1*255.0), char(pot2*255.0)); + lcd.locate(0,14); + lcd.printf("I:%dF:%dl:%d Data:", rxMsg.id, rxMsg.type, rxMsg.len); + for(int i = 0; i < rxMsg.len; i++) + { + lcd.printf("%x", buff_2[i]); + } + if(fire) { // check for timeout timer.stop(); // stop timer timer.reset(); // reset timer (to avaoid repeated send) counter++; // increment counter txMsg.clear(); // clear Tx message storage txMsg.id = TX_ID; // set ID - txMsg << counter; // append first data item (make sure that CAN message total data lenght <= 8 bytes!) - txMsg << led.read(); // append second data item (make sure that CAN message total data lenght <= 8 bytes!) + txMsg << char(sensor.temp()); // append first data item (make sure that CAN message total data lenght <= 8 bytes!) + txMsg << char(0x00); + txMsg << char(pot1*255.0); // append second data item (make sure that CAN message total data lenght <= 8 bytes!) + txMsg << char(pot2*255.0); can.write(txMsg); // transmit message printf("CAN message sent\r\n"); + + #if defined(TARGET_STM32F103C8T6) led = 1; // turn LED off #else led = 0; // turn LED off #endif + while(fire); } if(msgAvailable) { msgAvailable = false; // reset flag for next use @@ -112,9 +139,19 @@ printf(" Type = %d\r\n", rxMsg.type); printf(" Format = %d\r\n", rxMsg.format); printf(" Length = %d\r\n", rxMsg.len); - printf(" Data ="); + printf(" Data ="); + lcd.locate(0,14); + lcd.printf("I:%dF:%dl:%d", rxMsg.id, rxMsg.type, rxMsg.len); + for(int i = 0; i < rxMsg.len; i++) - printf(" %x", rxMsg.data[i]); + { + lcd.printf(" %x", rxMsg.data[i]); + buff_2[i] = rxMsg.data[i]; + } + r = (rxMsg.data[0]/255.0); + g = (rxMsg.data[1]/255.0); + b = (rxMsg.data[2]/255.0); + if(rxMsg.data[0] == 1) lcd.cls(); printf("\r\n"); if(rxMsg.id == RX_ID) { // if ID matches rxMsg >> counter; // extract first data item