Wireless
Dependencies: C12832 MMA7660 RPCInterface TextLCD mbed
Fork of RPC_Serial by
Diff: main.cpp
- Revision:
- 2:f1553e2737c9
- Parent:
- 1:e245b0b4d96c
diff -r e245b0b4d96c -r f1553e2737c9 main.cpp --- a/main.cpp Wed May 13 07:42:37 2015 +0000 +++ b/main.cpp Wed May 20 08:24:08 2015 +0000 @@ -1,90 +1,137 @@ -//Uses the measured z-acceleration to drive leds 2 and 3 of the mbed - #include "mbed.h" -//accelerometer header file -#include "MMA7660.h" -//LCD screen header file -#include "C12832.h" //include PRPC command file #include "SerialRPCInterface.h" +//LCD include +#include "TextLCD.h" -//default pin connections for LCD -C12832 lcd(p5, p7, p6, p8, p11); -//default pins for accelerometer -MMA7660 MMA(p28, p27); -// -float X = 0; -float Y = 0; -float Z = 0; -float ai1=0; -float ai2=0; -int alarm1 = 0; -int alarm2 = 0; -RPCVariable<float> rpc_ai1(&ai1,"ai1"); +SerialRPCInterface SerieleInterface(USBTX, USBRX); +Serial uart(p9, p10); //tx, rx +DigitalOut myled1(LED1); +DigitalOut myled2(LED2); +DigitalOut Pulsout(p28); +DigitalOut Transmit(p8); +AnalogIn Signaalsterkte(p19); +AnalogIn LDRin(p20); +DigitalIn Modepin(p11); +PwmOut PWMLed(p21); +TextLCD lcd(p30, p29, p28, p27, p26, p25, TextLCD::LCD20x4); // rs, e, d4-d7 -RPCVariable<float> rpc_ai2(&ai2,"ai2"); - -RPCVariable<int> rpc_alarm1(&alarm1,"alarm1"); -RPCVariable<int> rpc_alarm2(&alarm2,"alarm2"); -AnalogIn pot2(p19); -DigitalOut led(LED1); -AnalogIn pot1(p20); -DigitalOut led2(LED2); +char Mode; +float signaal; +int LDR; +char dataRX; +char crcRX; +char adresRX; +int dataOK; +int counter; +int sturen; +char adresTX; +char dataTX; +char crcTX; +int PWMLabview; +int timer; -RPCVariable<float> RPCX(&X, "X"); -RPCVariable<float> RPCY(&Y, "Y"); -RPCVariable<float> RPCZ(&Z, "Z"); -SerialRPCInterface SerieleInterface(USBTX, USBRX); -DigitalOut connectionLed(LED1); -//pwm led 1 and 2 -PwmOut Zaxis_p(LED2); -PwmOut Zaxis_n(LED3); -//pwm signals for RGB LED -PwmOut r (p23); -PwmOut g (p24); -PwmOut b (p25); -int main() { +RPCVariable<int> rpc_LDR(&LDR,"LDR"); +RPCVariable<float> rpc_signaal(&signaal,"signaal"); +RPCVariable<int> rpc_PWMLabview(&PWMLabview,"PWMLabview"); + +//Prototypes functies +char receive (char adreskarakter); +void transmit(char adresTX, char dataTX); - //clear lcd screen - lcd.cls(); - //update axis period - r.period(0.001); - //test connection to board - if (MMA.testConnection()) - connectionLed = 1; +//******************************************** +//*******************Main********************* +//******************************************** +int main() +{ + PWMLed.period_us(10); + uart.baud(4800); + if (Modepin) + { + myled1 = 1; + myled2 = 0; + Mode = 1; + } + else + { + myled1 = 0; + myled2 = 1; + Mode = 0; + } + lcd.cls(); + timer = 1000; + while (1) + { + //Pin aan GND is Labview + if(Mode == 1) + { + transmit('J',LDRin * 255); + } + else //Labview + { + signaal = (Signaalsterkte * 207); + if(signaal >= 100) + { + signaal = 100; + } + LDR = receive('J'); + + if(timer == 1000) + { + lcd.locate(0,0); + lcd.printf("Signaal: %.0f%c",signaal, 37); + lcd.locate(0,1); + lcd.printf("LDR: %i ",LDR); + timer = 0; + } + timer ++; + } + } +} + +char receive (char adreskarakter) +{ + if(uart.readable()) { + if (counter == 0) + { + adresRX = (uart.getc()); + + if(adresRX == adreskarakter) + { + counter ++; + } + else + { + counter = 0; + } + + } + else if (counter == 1) + { + dataRX = (uart.getc()); + counter ++; + } + else if (counter == 2) + { + crcRX = (uart.getc()); + counter = 0; + } + + if(adresRX == adreskarakter && (adresRX xor dataRX) == crcRX) + { + dataOK = int(dataRX); + } + } + return dataOK; +} + +void transmit(char adresTX, char dataTX) +{ + Transmit = 1; - while(1) { - Zaxis_p = MMA.z(); - Zaxis_n = -MMA.z(); - r = MMA.x(); - g = MMA.y(); - b = MMA.z(); - lcd.locate(0,0); - lcd.printf("X as : %.2f", MMA.x()); - lcd.locate(0,10); - lcd.printf("Y as : %.2f", MMA.y()); - lcd.locate(0,20); - lcd.printf("Z as : %.2f", MMA.z()); - X = MMA.x(); - Y = MMA.y(); - Z = MMA.z(); - ai1 = pot2; - ai2 = pot1; - if(pot2 > 0.3) { - led = 1; - alarm1 = led; - } else { - led = 0; - alarm1 = led; - } - if(pot1 > 0.7) { - led2 = 1; - alarm2 = led2; - } else { - led2 = 0; - alarm2 = led2; - } - } + crcTX = (adresTX xor dataTX); + uart.printf("%c%c%c", adresTX, dataTX, crcTX); -} \ No newline at end of file + Transmit = 0; +}