Main code of our project.

Dependencies:   TextLCD mbed PID

Revision:
5:e9766e0573d0
Parent:
4:886ce7eefa6e
Child:
6:756d44ed75a5
--- a/main.cpp	Sun Oct 07 02:25:50 2018 +0000
+++ b/main.cpp	Tue Oct 09 10:34:34 2018 +0000
@@ -5,16 +5,23 @@
 
 TextLCD             lcd(D2, D3, D4, D5, D6, D7); // rs, e, d4-d7
 Serial              pc(USBTX, USBRX); // tx, rx
-//PwmOut              pwm1(D9);
-DigitalOut          relaySync(D8);
+PwmOut              pwmDC(D9);
+PwmOut              pwmSY(D13);
+DigitalOut          relay1(D8);
+DigitalOut          relay2(D14);
+DigitalOut          relay3(D11);
+DigitalOut          relay4(D12);
 
 AnalogIn            syncPin(A0);
 AnalogIn            gridPin(A1);
 AnalogIn            differentialPin(A2);
+AnalogIn            potarDC(A3);
+AnalogIn            potarSY(A4);
 
 const float         sqrt2 = 1.414213562;
 
 Timeout             timeout;
+Ticker              tickerPWMDC;
 volatile bool       looping = false;
 volatile bool       synchronized = false;
 volatile bool       mainLoop = true;
@@ -31,6 +38,7 @@
 float getVolageReadedMax(AnalogIn ana_pin);
 float getFrequency(AnalogIn ana_pin);
 void displayLCD(float syncRMS, float gridRMS, float syncFreq, float gridFreq);
+void tickerPWMDCfunction();
 
 
 
@@ -50,15 +58,17 @@
 int main() {
     float syncRMS, gridRMS, syncFreq, gridFreq;
     
-    relaySync = 1;//Relay off=1, on=0
+    relay1 = 1;//Relay off=1, on=0
+    relay2 = 1;//Relay off=1, on=0
+    relay3 = 1;//Relay off=1, on=0
+    relay4 = 1;//Relay off=1, on=0
+    
     while(mainLoop){
-        //measure and calculate desired value
-        syncRMS = getVolageRMS(syncPin);
-        gridRMS = getVolageRMS(gridPin);
-        syncFreq = getFrequency(syncPin);
-        gridFreq = getFrequency(gridPin);
-        //display values on LCD
-        displayLCD(syncRMS, gridRMS, syncFreq, gridFreq);
+        pwmDC.period(0.001f);
+        pwmDC.write(0.04f);
+        pwmSY.period(0.001f);
+        pwmSY.write(0.04f);
+        tickerPWMDC.attach(&tickerPWMDCfunction, 0.1);
         
         //manual synchronisation
         while(!synchronized){
@@ -81,6 +91,10 @@
                         pc.printf("SYNCHONIZATION OK\r\n\n");
                         lcd.locate(0,1);//(col,row)
                         lcd.printf("SYNC OK ");
+                        relay1 = 0;//Relay off=1, on=0 // to hear the noise
+                        relay2 = 0;//Relay off=1, on=0 // to hear the noise
+                        relay3 = 0;//Relay off=1, on=0 // to hear the noise
+                        relay4 = 0;//Relay off=1, on=0 // to hear the noise
                         synchronized = true;
                         mainLoop = false;
                     }
@@ -89,10 +103,8 @@
         }
     }
     
+
     
-    // specify period first
-    //pwm1.period(0.1f);      // 4 second period
-    //pwm1.write(0.50f);      // 50% duty cycle, relative to period
 
 }
 
@@ -111,6 +123,19 @@
 }
 
 // #############################################################################
+// ISR to update pwmDC with potarDC
+void tickerPWMDCfunction(){
+    float valuePotar1;
+    float valuePotar2;
+    valuePotar1 = potarDC.read();
+    pwmDC.write(valuePotar1);
+    valuePotar2 = potarSY.read();
+    pwmSY.write(valuePotar2);
+    //lcd.locate(12,0);//(col,row)
+    //lcd.printf("%f",valuePotar);
+}
+
+// #############################################################################
 float getVolageRMS(AnalogIn ana_pin){
     float v1;//readed voltage
     float v1Max = 0;//max readed voltage