Eindprogramma met alle functies

Dependencies:   DS1307 EthernetInterface TextLCD WebSocketClient mbed-rtos mbed

Fork of Hoofdprogramma by Pieter Essers

Hoofdprogramma.cpp

Committer:
R0375604
Date:
2014-11-27
Revision:
1:386b4ee674e3
Parent:
0:f99036b05ce9
Child:
2:52f7cccebdea

File content as of revision 1:386b4ee674e3:

#include "mbed.h"
#include "TextLCD.h"

// Declaratie van de Pinnen & variabelen
AnalogIn Temp1(p20);
AnalogIn Temp2(p19);
AnalogIn Temp3(p18);  

DigitalIn Druk1(p11); // temp1
DigitalIn Druk2(p12); // temp2
DigitalIn Druk3(p13); // temp3
DigitalIn Down(p14); // up
DigitalIn Up(p15); // down

DigitalOut Relais(p29); // pin voor de Relais

PwmOut Servo(p21); // servo motor
PwmOut R(p22); // RGB => Rood
PwmOut G(p23); // RGB => Groen
PwmOut B(p24); // RGB => Blauw
PwmOut LedB(p25); // Blauwe Led als relais Uit is (Te warm)
PwmOut LedG(p26); // Groene Led als relais Uit is (Temp GOED)

TextLCD lcd(p5, p6, p7, p8, p9, p10);

float InstelTemp1 = 22; // De Gewenste Temperatuur
float InstelTemp2 = 22;
float InstelTemp3 = 22;

float temp1 = 0;
float temp2 = 0;
float temp3 = 0;

int main()
{
    R.period_ms(20.0f);  // 20 msecond period
    G.period_ms(20.0f);  // 20 msecond period
    B.period_ms(20.0f);  // 20 msecond period
    LedB.period_ms(20.0f);  // 20 msecond period
    LedG.period_ms(20.0f);  // 20 msecond period
    
    lcd.cls(); // LCD Clearen
    
     while(1) 
    {
        float temp1 = 0;
        float temp2 = 0;
        float temp3 = 0;
 //------------- Gewenste TEMP instellen ------------------------------------       
        while(Druk1) // Gewenste Temp1 Instellen
        {
            lcd.locate(0,0);
            lcd.printf("Instel Temp1 = ");
            lcd.locate(0,1);
            lcd.printf("%4.1f C ",InstelTemp1);  
            if(Down)
            {
                InstelTemp1 += 0.5;
                lcd.locate(0,0);
                lcd.printf("Instel Temp1 = ");
                lcd.locate(0,1);
                lcd.printf("%4.1f C ",InstelTemp1);
                wait(0.5);
            }
            else if(Up)
            {
                InstelTemp1 -= 0.5; 
                lcd.locate(0,0);
                lcd.printf("Instel Temp1 = ");
                lcd.locate(0,1);
                lcd.printf("%4.1f C ",InstelTemp1);
                wait(0.5);          
            }
        }
        lcd.cls(); // LCD Clearen
        while(Druk2) // Gewenste Temp2 Instellen
        {
            lcd.locate(0,0);
            lcd.printf("Instel Temp2 = ");
            lcd.locate(0,1);
            lcd.printf("%4.1f C ",InstelTemp2);            
            if(Down)
            {
                InstelTemp2 += 0.5;
                lcd.locate(0,0);
                lcd.printf("Instel Temp2 = ");
                lcd.locate(0,1);
                lcd.printf("%4.1f C ",InstelTemp2);
                wait(0.5);
            }
            else if(Up)
            {
                InstelTemp2 -= 0.5; 
                lcd.locate(0,0);
                lcd.printf("Instel Temp2 = ");
                lcd.locate(0,1);
                lcd.printf("%4.1f C ",InstelTemp2);
                wait(0.5);          
            }
        }
        lcd.cls(); // LCD Clearen
        while(Druk3) // Gewenste Temp3 Instellen
        {
            lcd.locate(0,0);
            lcd.printf("Instel Temp3 = ");
            lcd.locate(0,1);
            lcd.printf("%4.1f C ",InstelTemp3);  
            if(Down)
            {
                InstelTemp3 += 0.5;
                lcd.locate(0,0);
                lcd.printf("Instel Temp3 = ");
                lcd.locate(0,1);
                lcd.printf("%4.1f C ",InstelTemp3);
                wait(0.5);
            }
            else if(Up)
            {
                InstelTemp3 -= 0.5; 
                lcd.locate(0,0);
                lcd.printf("Instel Temp3 = ");
                lcd.locate(0,1);
                lcd.printf("%4.1f C ",InstelTemp3);
                wait(0.5);           
            }
        }
 //------------------------------------------------------------------------------------ 
        lcd.cls(); // LCD Clearen      
        for(int t=0; t<100; t++) // Inlezen van de Temperatuur
        {
            temp1 = temp1 +Temp1.read(); // Temp1 inlezen
            temp2 = temp2 +Temp2.read(); // Temp2 inlezen
            temp3 = temp3 +Temp3.read(); // Temp3 inlezen
        }  
        
        temp1 = (temp1*3.3) - 3; // Bewerking voor de Temp in graden te bekomen.
        temp2 *= 3.3;
        temp3 *= 3.3;
//-------------- LCD Printen----------------------------------------------------------       
        lcd.locate(0,0); // De ingelezen Temperatuur op de LCD zetten
        lcd.printf("Temperatuur 1 = ");
        lcd.locate(0,1);
        lcd.printf("%4.1f C ",temp1); 
        wait(1.5);
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("Temperatuur 2 = ");
        lcd.locate(0,1);
        lcd.printf("%4.1f C ",temp2); 
        wait(1.5);
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("Temperatuur 3 = ");
        lcd.locate(0,1);
        lcd.printf("%4.1f C ",temp3); 
        wait(1.5);
//-----------// RGB => Temperatuur 1// ------------------------------------------------------------ 
        if(temp1 > InstelTemp1 + 2) // Temp is te HOOG => Blauwe led
        {
            R.write(0.00f);  // 0% duty cycle  
            G.write(0.00f);  // 0% duty cycle
            B.write(0.50f);  // 50% duty cycle
        }
        else if (temp1 < InstelTemp1 - 2) // Temp is te LAAG => Rode led
        {
            R.write(0.50f);  // 50% duty cycle  
            G.write(0.00f);  // 0% duty cycle
            B.write(0.00f);  // 0% duty cycle
        }
        else // Temp is te GOED => Groene led
         {
            R.write(0.00f);  // 0% duty cycle  
            G.write(0.50f);  // 50% duty cycle
            B.write(0.00f);  // 0% duty cycle
        }
//-----------// Relais => Temperatuur 2// ------------------------------------------------------------  
        if(temp2 > InstelTemp2 + 2) // Temp is te HOOG => Blauwe led
        {
            Relais = 0; // Temp is te HOOG dus moet afkoelen (Niet verwarmen)
            LedB.write(0.50f);  // 50% duty cycle  
            LedG.write(0.00f);  // 0% duty cycle
            
        }
        else if (temp2 < InstelTemp2 - 2) // Temp is te LAAG => Blauwe led
        {
            Relais = 1; // Temp is te LAAG Dus verwarmen
        }
        else // Temp is te GOED => Groene led
        {
            Relais = 0; // Tem is GOED dus niets doen
            LedB.write(0.00f);  // 0% duty cycle  
            LedG.write(0.50f);  // 50% duty cycle
        }    
//-----------// Servo => Temparatur 3 // ------------------------------------------------------------ 
        if(temp3 > InstelTemp3 + 2) // Temp is te HOOG => Servo Rechts
        {
            Servo = (170 * 0.000511 + 0.026); // rechts
            wait(2);
        }
        else if (temp3 < InstelTemp3 - 2) // Temp is te LAAG => Servo Links
        {
            Servo = (7 * 0.000511 + 0.026); // links 7
            wait(2);
        }
        else // Temp is te GOED => Servo Midden
        {
            Servo = (90 * 0.000511 + 0.026); // rust
            wait(2);
        }
//------------------------------------------------------------------------------           
    }
}