Communicate with danBed via UART

Dependencies:   mbed

Committer:
DaniusKalv
Date:
Thu Feb 12 12:34:29 2015 +0000
Revision:
0:fc1ff02f51e1
Child:
1:1d18a2a3e9a0
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DaniusKalv 0:fc1ff02f51e1 1 #include "mbed.h"
DaniusKalv 0:fc1ff02f51e1 2 #include <string>
DaniusKalv 0:fc1ff02f51e1 3
DaniusKalv 0:fc1ff02f51e1 4 PwmOut RED(LED1);
DaniusKalv 0:fc1ff02f51e1 5 PwmOut BLUE(LED2);
DaniusKalv 0:fc1ff02f51e1 6 PwmOut GREEN(LED3);
DaniusKalv 0:fc1ff02f51e1 7 DigitalOut RGB(LED4);
DaniusKalv 0:fc1ff02f51e1 8
DaniusKalv 0:fc1ff02f51e1 9 //Serial pc(p28, p27);
DaniusKalv 0:fc1ff02f51e1 10 Serial pc(USBTX, USBRX);
DaniusKalv 0:fc1ff02f51e1 11
DaniusKalv 0:fc1ff02f51e1 12 void receive();
DaniusKalv 0:fc1ff02f51e1 13 char temp[100];
DaniusKalv 0:fc1ff02f51e1 14
DaniusKalv 0:fc1ff02f51e1 15 int main() {
DaniusKalv 0:fc1ff02f51e1 16
DaniusKalv 0:fc1ff02f51e1 17 RED = 1;
DaniusKalv 0:fc1ff02f51e1 18 GREEN = 1;
DaniusKalv 0:fc1ff02f51e1 19 BLUE = 1;
DaniusKalv 0:fc1ff02f51e1 20 RGB = 0;
DaniusKalv 0:fc1ff02f51e1 21
DaniusKalv 0:fc1ff02f51e1 22 pc.baud(115200);
DaniusKalv 0:fc1ff02f51e1 23
DaniusKalv 0:fc1ff02f51e1 24 pc.printf("\r\nWelcome to danBed communication v1.0!");
DaniusKalv 0:fc1ff02f51e1 25 pc.printf("\r\nWrite 'Labas' to continue...\r\n");
DaniusKalv 0:fc1ff02f51e1 26
DaniusKalv 0:fc1ff02f51e1 27 GET:
DaniusKalv 0:fc1ff02f51e1 28 receive();
DaniusKalv 0:fc1ff02f51e1 29 string labas = "Labas";
DaniusKalv 0:fc1ff02f51e1 30
DaniusKalv 0:fc1ff02f51e1 31 if (temp == labas) pc.printf("\r\nLabas!!!\r\n");
DaniusKalv 0:fc1ff02f51e1 32 else{
DaniusKalv 0:fc1ff02f51e1 33 pc.printf("\r\nTry again! Type 'Labas'...\r\n");
DaniusKalv 0:fc1ff02f51e1 34 goto GET;
DaniusKalv 0:fc1ff02f51e1 35 }
DaniusKalv 0:fc1ff02f51e1 36
DaniusKalv 0:fc1ff02f51e1 37 delete &labas;
DaniusKalv 0:fc1ff02f51e1 38
DaniusKalv 0:fc1ff02f51e1 39 while(1) {
DaniusKalv 0:fc1ff02f51e1 40
DaniusKalv 0:fc1ff02f51e1 41 receive();
DaniusKalv 0:fc1ff02f51e1 42 char buffer[20];
DaniusKalv 0:fc1ff02f51e1 43 float value;
DaniusKalv 0:fc1ff02f51e1 44
DaniusKalv 0:fc1ff02f51e1 45 //sscanf(temp,"%s %f", buffer, &value);
DaniusKalv 0:fc1ff02f51e1 46 for(int j = 0; j < 10; j++) pc.printf("\r\n%i", buffer[j]);
DaniusKalv 0:fc1ff02f51e1 47
DaniusKalv 0:fc1ff02f51e1 48 if(buffer == "RGB"){
DaniusKalv 0:fc1ff02f51e1 49 RGB = value;
DaniusKalv 0:fc1ff02f51e1 50 if(value == 1) pc.printf("\r\nRGB turned ON\r\n");
DaniusKalv 0:fc1ff02f51e1 51 else pc.printf("\r\nRGB turned OFF\r\n");
DaniusKalv 0:fc1ff02f51e1 52 }
DaniusKalv 0:fc1ff02f51e1 53 else if(buffer == "RED"){
DaniusKalv 0:fc1ff02f51e1 54 RED = value;
DaniusKalv 0:fc1ff02f51e1 55 pc.printf("\r\nRED value %0.2f\r\n", value);
DaniusKalv 0:fc1ff02f51e1 56 }
DaniusKalv 0:fc1ff02f51e1 57 else if(buffer == "GREEN"){
DaniusKalv 0:fc1ff02f51e1 58 GREEN = value;
DaniusKalv 0:fc1ff02f51e1 59 pc.printf("\r\nGREEN value %0.2f\r\n", value);
DaniusKalv 0:fc1ff02f51e1 60 }
DaniusKalv 0:fc1ff02f51e1 61 else if(buffer == "BLUE"){
DaniusKalv 0:fc1ff02f51e1 62 BLUE = value;
DaniusKalv 0:fc1ff02f51e1 63 pc.printf("\r\nBLUE value %0.2f\r\n", value);
DaniusKalv 0:fc1ff02f51e1 64 }
DaniusKalv 0:fc1ff02f51e1 65 else pc.printf("\r\nCommand not recognised!\r\n");
DaniusKalv 0:fc1ff02f51e1 66 //else if(receiver == "RED"){
DaniusKalv 0:fc1ff02f51e1 67 //pc.gets(
DaniusKalv 0:fc1ff02f51e1 68 }
DaniusKalv 0:fc1ff02f51e1 69 }
DaniusKalv 0:fc1ff02f51e1 70
DaniusKalv 0:fc1ff02f51e1 71 void receive(){
DaniusKalv 0:fc1ff02f51e1 72 memset(temp, 255, sizeof(temp));
DaniusKalv 0:fc1ff02f51e1 73 char c;
DaniusKalv 0:fc1ff02f51e1 74
DaniusKalv 0:fc1ff02f51e1 75 int i = 0;
DaniusKalv 0:fc1ff02f51e1 76
DaniusKalv 0:fc1ff02f51e1 77 while(true){
DaniusKalv 0:fc1ff02f51e1 78 if(pc.readable()){
DaniusKalv 0:fc1ff02f51e1 79 c = pc.getc();
DaniusKalv 0:fc1ff02f51e1 80 if (c == 13){
DaniusKalv 0:fc1ff02f51e1 81 temp[i] = 0;
DaniusKalv 0:fc1ff02f51e1 82 break;
DaniusKalv 0:fc1ff02f51e1 83 }
DaniusKalv 0:fc1ff02f51e1 84 else temp[i] = c;
DaniusKalv 0:fc1ff02f51e1 85 pc.putc(c);
DaniusKalv 0:fc1ff02f51e1 86 i++;
DaniusKalv 0:fc1ff02f51e1 87 }
DaniusKalv 0:fc1ff02f51e1 88 }
DaniusKalv 0:fc1ff02f51e1 89 }