serial binding protocol control
Dependencies: C12832 LM75B mbed
Revision 0:399e24bbd6c2, committed 2015-11-07
- Comitter:
- dwijaybane
- Date:
- Sat Nov 07 05:00:41 2015 +0000
- Commit message:
- Initial version
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832.lib Sat Nov 07 05:00:41 2015 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/chris/code/C12832/#7de323fa46fe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LM75B.lib Sat Nov 07 05:00:41 2015 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/neilt6/code/LM75B/#7ac462ba84ac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Nov 07 05:00:41 2015 +0000 @@ -0,0 +1,110 @@ +#include "mbed.h" // Basic Library required for onchip peripherals +#include "LM75B.h" // Library for LM75B I2C based Temperature sensor +#include "C12832.h" // Library for SPI based LCD +#include <cstdlib> +//#include "USBSerial.h" + +/* Create Objects */ +LM75B tmp(p28,p27); // Initialize I2C pins for Temperature Sensor +Serial serial(USBTX,USBRX); +//USBSerial serial; //use this for a virtual com port on D+ & D- +AnalogIn Pot1(p19); // Initialize Pot1 object with Analog input +C12832 lcd(p5, p7, p6, p8, p11); // Initialize lcd object with SPI pins +DigitalOut myled(LED1); +DigitalOut myled1(LED2); +PwmOut r (p23); // Create PWM object r for Red LED pin p23 +PwmOut g (p24); // Create PWM object g for Green LED pin p24 +PwmOut b (p25); // Create PWM object b for Blue LED pin p25 + +char ser_buf[50],i,data_OK; + +void Serial_parser(); +void Serial_get_data(); + +/* Main Program */ +int main() { + float board_temp,cpot,fpot; + + r.period(0.001); // Periods in seconds which is 1KHz PWM freq + r = 1; + g = 1; + b = 1; + + lcd.cls(); // Clear LCD Screen + lcd.locate(0,3); // Start from x=0 and y=3 pixels + lcd.printf("mbed application board!"); // print string on LCD + + serial.attach(&Serial_get_data); + /** + * Configure Terminal at 9600 8N1 configuration + * In linux COM port would be /dev/ttyACM0 + * or to find out use "dmesg" command + */ + while (1) { + board_temp = tmp; // read temperature + fpot = (float)Pot1.read_u16(); + cpot = 3300*(fpot/65535); + serial.printf("pot1:%.2fmV_temperature:%.2fC;",cpot,board_temp); // Display temperature on Terminal + wait(1.0); // 1 sec delay + } +} + +void Serial_parser() // Parser function for Data in the Serial buffer +{ + float Rcnv,Gcnv,Bcnv; + + if(data_OK) { //if everything is ok, data are available + switch (ser_buf[0]) { + case 'L': + if((ser_buf[1]=='O') && (ser_buf[2]=='N')) { //The command for turning led on is "LON + myled = 1; + } + if((ser_buf[1]=='O') && (ser_buf[2]=='F') && (ser_buf[3]=='F')) { //the command for turning led off is "LOFF" + myled = 0; + } + break; + + case 'R': + Rcnv = atof(&ser_buf[1]); + r = 1.0 - (Rcnv/100); + break; + + case 'G': + Gcnv = atof(&ser_buf[1]); + g = 1.0 - (Gcnv/100); + break; + + case 'B': + Bcnv = atof(&ser_buf[1]); + b = 1.0 - (Bcnv/100); + break; + + default: + serial.printf("Command unkonwn \r\n"); + } + data_OK = 0; // we did what we have to do + for(int x=0; x<50; x++) ser_buf[x] = 0; //clear buffer + } +} + + +void Serial_get_data() // Aquiring serial data +{ + if(serial.readable()) { //if data are available - uncomment this for mini usb MBED +// if(serial.available()) { //use this for virtual com port on D+ & D- + + ser_buf[i]=serial.getc(); + + if (ser_buf[i] == '\r') { //if CR is recieved, we ended the sentence + data_OK = 1; //we have something to parse + i=0; //reset the counter + + Serial_parser(); //call the parser function + } else { + serial.putc(ser_buf[i]); + i++; + if(i>50) i=0; //we need only a few characters to turn a led on or off + } + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Nov 07 05:00:41 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/9296ab0bfc11 \ No newline at end of file