Alles wat we gepland hadden zit in het programma.
Dependencies: DS1307 EthernetInterface TextLCD WebSocketClient mbed-rtos mbed
Fork of Hoofdprogramma by
Hoofdprogramma.cpp
- Committer:
- Bjorn
- Date:
- 2015-01-06
- Revision:
- 7:0e4e558f57fe
- Parent:
- 6:c95e2d561599
- Child:
- 8:667ba710e1eb
File content as of revision 7:0e4e558f57fe:
// Pieter Essers & Bjorn Vranken GROEP5 // Digitale Temp Meting en aansturingen via // RGB LED // SERVO // RELAIS #include "mbed.h" #include "TextLCD.h" #include "ds1307.h" #include <time.h> #include "EthernetInterface.h" #include "Websocket.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 //-----------------Ethernet initialiseren-------------------------------------- char json_str[1000]; //Maak een buffer aan voor de te verzenden karakters EthernetInterface eth; //Declareer de ethernet interface eth.init(); //Use DHCP ip eth.connect(); //Maak conectie met het gekregen ip adress Websocket ws("ws://sockets.mbed.org:443/ws/DigiTempMeting/wo"); //server mbed ws.connect(); //connectie maken met de server wait(2.0); //------------------------------------------------------------------------------- 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 = (temp1 *3.3) + 3; // Bewerking voor de Temp in graden te bekomen. temp2 = (temp2 *3.3) + 3; temp3 = (temp3 *3.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-------------------------------------------------------- //------Naarmate temp verder van gewenste waarde zit een andre RGB kleur-------------- //------------------------Te warme Temp----------------------------------------------- if(InstelTemp1 + 1 < temp1 && temp1 <= InstelTemp1 + 2) { R.write(0.50f); // 50% duty cycle Geel G.write(0.50f); // 50% duty cycle B.write(0.00f); // 0% duty cycle } else if(InstelTemp1 + 2 < temp1 && temp1 <= InstelTemp1 + 3) { R.write(0.75f); // 50% duty cycle Oranje G.write(0.25f); // 25% duty cycle B.write(0.00f); // 0% duty cycle } else if(InstelTemp1 + 3 < temp1) { R.write(0.50f); // 50% duty cycle Rood G.write(0.00f); // 0% duty cycle B.write(0.00f); // 0% duty cycle } //---------------Te koude temp---------------------------------------------- else if(InstelTemp1 - 1 > temp1 && temp1 >= InstelTemp1 - 2) { R.write(0.00f); // 0% duty cycle Licht blauw G.write(0.50f); // 50% duty cycle B.write(0.50f); // 50% duty cycle } else if(InstelTemp1 - 2 > temp1 && temp1 >= InstelTemp1 - 3) { R.write(0.00f); // 0% duty cycle Paars G.write(0.25f); // 25% duty cycle B.write(0.75f); // 75% duty cycle } else if(InstelTemp1 - 3 > temp1) { R.write(0.00f); // 0% duty cycle Blauw G.write(0.00f); // 0% duty cycle B.write(0.50f); // 50% duty cycle } //-------------Goede Temp------------------------------------------------- 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 // ------------------------------------------------------------ //---------------------Stappen naar rechts -> Te WARM----------------------------------------------- if(InstelTemp3 + 1 < temp3 && temp3 <= InstelTemp3 + 2) { Servo = (110 * 0.000511 + 0.026); // rechts } else if(InstelTemp3 + 2 < temp3 && temp3 <= InstelTemp3 + 3) { Servo = (130 * 0.000511 + 0.026); // rechts } else if(InstelTemp3 + 3 < temp3 && temp3 <= InstelTemp3 + 4) { Servo = (150 * 0.000511 + 0.026); // rechts } else if(InstelTemp3 + 4 < temp3) { Servo = (170 * 0.000511 + 0.026); // rechts } //---------------------Stappen naar links -> Te KOUD----------------------------------------------- else if(InstelTemp3 - 1 > temp3 && temp3 >= InstelTemp3 - 2) { Servo = (70 * 0.000511 + 0.026); // links } else if(InstelTemp3 - 2 > temp3 && temp3 >= InstelTemp3 - 3) { Servo = (50 * 0.000511 + 0.026); // links } else if(InstelTemp3 - 3 > temp3 && temp3 >= InstelTemp3 - 4) { Servo = (30 * 0.000511 + 0.026); // links } else if(InstelTemp3 - 4 > temp3) { Servo = (7 * 0.000511 + 0.026); // links } //--------------Temp is goed------------------------------------------------------------ else // Temp is te GOED => Servo Midden { Servo = (90 * 0.000511 + 0.026); // rust } //------------------------Ethernet weg schrijven--------------------------------------------- sprintf(json_str,"-----------------------------------------------------------------------------------------"); ws.send(json_str); sprintf(json_str,"Temperatuur 3 is: %4.1f C met een ingestelde temperatuur van %4.1f C " ,temp3,InstelTemp3); ws.send(json_str); sprintf(json_str,"Temperatuur 2 is: %4.1f C met een ingestelde temperatuur van %4.1f C " ,temp2,InstelTemp2); ws.send(json_str); sprintf(json_str,"Temperatuur 1 is: %4.1f C met een ingestelde temperatuur van %4.1f C " ,temp1,InstelTemp1); ws.send(json_str); sprintf(json_str,"De datum op het moment van de meting is: %d:%d:%d",date,month,year); ws.send(json_str); sprintf(json_str,"De tijd op het moment van de meting is: %d:%d:%d",hours,min,sec); ws.send(json_str); wait(2.0); //-------------------------------------------------------------------------------------------------- } }