Alles wat we gepland hadden zit in het programma.

Dependencies:   DS1307 EthernetInterface TextLCD WebSocketClient mbed-rtos mbed

Fork of Hoofdprogramma by Bjorn Vranken

Hoofdprogramma.cpp

Committer:
R0375604
Date:
2014-12-15
Revision:
4:15258c48d16f
Parent:
3:b2001b7e5c24
Child:
5:1c493bae26fc

File content as of revision 4:15258c48d16f:

// Pieter Essers & Bjorn Vranken GROEP5
// Digitale Temp Meting en aansturingen via 
// RGB LED // SERVO // RELAIS
#include "mbed.h"
#include "TextLCD.h"
#include "ds1307.h"

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

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

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

PwmOut Servo(p21); // servo motor
PwmOut R(p23); // RGB => Rood
PwmOut G(p24); // RGB => Groen
PwmOut B(p22); // 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); // LCD
DS1307 my1307(p28,p27); // start DS1307 class and give it pins for connections of the DS1307 device

int sec;
int min;
int hours;
int day;
int date;
int month;
int year;

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

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

//int teller = 0; // om een wachtlus te maken.
void test_rw(int test) // Test voor de RTC
{
} 
int main()
{
    lcd.cls(); // LCD Clearen 
    R.period_ms(20.0f);  // 20 msecond period (50Hz)
    G.period_ms(20.0f);  // 20 msecond period (50Hz)
    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) 
    {
        my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
        
        float temp1 = 0;
        float temp2 = 0;
        float temp3 = 0;
 //------------- De Tijd op de LCD printen ------------------------------------ 
 //------------- Enkel laten zien wanneer je op drukknop drukt-----------------
        while(Up)
        {
            my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
            wait(0.5);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("%d:%d:%d",hours,min,sec);
            lcd.locate(0,1);
            lcd.printf("%d/%d/%d",date,month,year);
        }
 //------------- 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);           
            }
        }
 //------------------------------------------------------------------------------------      
        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 *= 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// WAARSCHUWIGS SIGNAAL-------------------------------------------------------- 
        if(temp1 > InstelTemp1 + 2) // Temp is te HOOG => Rode led OPGEPAST TE WARM ------ InstelTemp1 + 1 < temp1 <= InstelTemp1 + 1,5 
        {
            R.write(0.50f);  // 50% duty cycle  LED GAAT GW AAN
            G.write(0.00f);  // 0% duty cycle
            B.write(0.00f);  // 0% duty cycle
        }                
        else if (temp1 < InstelTemp1 - 2) // Temp is te LAAG => Blauwe led LET OP TE KOUD
        {
            R.write(0.00f);  // 50% duty cycle  
            G.write(0.00f);  // 0% duty cycle
            B.write(0.50f);  // 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// Moet met een transistor----------------------------------  
        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 => Rode led
        {
            Relais = 1; // Temp is te LAAG Dus verwarmen
            wait(0.5);
            LedB.write(0.00f);  // 0% duty cycle  
            LedG.write(0.00f);  // 0% duty cycle
        }
        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);  // 100% duty cycle
        }    
//-----------// Servo => Temparatur 3 // ------------------------------------------------------------ 
        if(temp3 > InstelTemp3 + 2) // Temp is te HOOG => Servo Rechts
        {
            Servo = (170 * 0.000511 + 0.026); // rechts
        }
        else if (temp3 < InstelTemp3 - 2) // Temp is te LAAG => Servo Links
        {
            Servo = (7 * 0.000511 + 0.026); // links 7
        }
        else // Temp is te GOED => Servo Midden
        {
            Servo = (90 * 0.000511 + 0.026); // rust
        }
//--------------------------------------------------------------------------------------------------           
    }
}