Wireless

Dependencies:   C12832 MMA7660 RPCInterface TextLCD mbed

Fork of RPC_Serial by Jonathan Caes

Files at this revision

API Documentation at this revision

Comitter:
Bramvr
Date:
Wed May 20 08:24:08 2015 +0000
Parent:
1:e245b0b4d96c
Commit message:
Wireless

Changed in this revision

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r e245b0b4d96c -r f1553e2737c9 TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Wed May 20 08:24:08 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
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;  
+}