Forum: Mikrocontroller und Digitale Elektronik Arduino Mega + 3 DHT22 + LCD 32PTU (4D System)


von Wolfrid K. (wolfrid_k)


Lesenswert?

Hi
Bin noch noch neu in diesem Forum und habe schon einiges durch da lesen 
im Forum gelernt nur stehe ich jetzt leider mit meinem Wissen an.

Zu unserem Projekt
Wir lesen 3 Temperatur Sensor aus, erstellen den Mittelwert und 
vergleichen diesen Wert mit einem vorgebenen Wert.
Ab Luft Ventilator: Ab einer bestimmten Temperatur schaltet sich der 
Ventilator an und ab auch bei
                          einer bestimmten Temp und läuft noch einige 
Zeit nach
Zu Luft Ventilator: Ab einer bestimmten Temperatur schaltet sich der 
Ventilator an und ab auch bei
                          einer bestimmten Temp und läuft noch einige 
Zeit nach
Um Luft Ventilator: Läuft10 min, danach stopp für 10 min, dann läuift 
wieder 10 usw.

Das Programm läuft auch, nur unser Problem sind jetzt die Ausgaben und 
Eingaben vom Touchscreen

Ich hab es schon geschafft, die Uhrzeit am Display auszugeben, und den 
Temperaturmittelwert. Aber das wars dann auch schon wieder. Ich möchte 
eine LED damit verbinden, dass soll heißen, wenn sich der Ventilator 
einschaltet, dann soll eine LED leuchten und das geht nicht.

Als nächsten Schritt:
Momentan ist der Wert für die Temperatur, bei der sich der Venti 
einschaltet noch vorgeben, nur soll er über das Display eingeben werden. 
Nur weiß ich nicht, weil ich die Befehle nicht verstehe und welche 
Auswirkungen sie haben.

Ich möchte auch das Programm mit einem Button ein und aus schalten 
können, sodass es nur auf Wunsch läuft und nicht immer. Nur wie lese ich 
einen Button ein und verknüpfe die Eingabe mit einer Do-While Schleife??

Ich wär schon froh zu wissen, wenn nach dem drücken eines Button ein 
Text erscheint. Das würde mir schon weiter helfen.
Ich möchte die Funktion der Befehle verstehen. Weißt jemand vielleicht 
irgendeine eine deutsche Seite, wo die Befehle erklärt werden auf 
Deutsch.

Ich hoffe ihr könntt mir weiter helfen.
Danke
Wolfi
1
#include <genieArduino.h>
2
#include "DHT.h"
3
#include <Wire.h>
4
#include "RTClib.h"
5
#include <stdio.h>
6
#include <stdint.h>
7
#include <ctype.h>
8
9
RTC_Millis rtc;
10
11
#define DHT1PIN 30     // PIN für Datenleitung von Temperatur_Sensor_1
12
#define DHT2PIN 32     // PIN für Datenleitung von Temperatur_Sensor_2
13
#define DHT3PIN 34     // PIN für Datenleitung von Temperatur_Sensor_3
14
15
// Uncomment whatever type you're using!
16
17
#define DHTTYPE DHT22   // DHT 22  (AM2302)
18
#define Zu_VENTILATOR 31
19
20
// Initialisierung von DHT Sensoren
21
DHT dht1(DHT1PIN, DHTTYPE);
22
DHT dht2(DHT2PIN, DHTTYPE);
23
DHT dht3(DHT3PIN, DHTTYPE);
24
25
Genie genie;
26
27
int Relais1 = 0;  //Relais Zuluftventilator
28
int Relais2 = 0;  //Relais Abluftventilator
29
int Relais3 = 0;  //Relais Umluftventilator
30
31
void setup ()
32
{
33
    pinMode (Zu_VENTILATOR, OUTPUT);  //Ausgang für Temp/Feuchte_Sensor_1 Relais
34
    //digitalWrite(Zu_VENTILATOR, LOW);
35
    pinMode (33, OUTPUT);  //Ausgang für Temp/Feuchte_Sensor_2 Relais
36
    pinMode (35, OUTPUT);  //Ausgang für Temp/Feuchte_Sensor_3 Relais
37
    pinMode (41, OUTPUT);  //Ausgang für alle Bodenfeuchte_Sensoren
38
    pinMode (40, OUTPUT);  //Ausgang für Wasserpumpe Relais
39
    pinMode (42, OUTPUT);  //Ausgang für Magnetventil_1 Relais
40
    pinMode (44, OUTPUT);  //Ausgang für Magnetventil_2 Relais
41
    Serial.begin(115200);
42
    genie.Begin(Serial);
43
44
    // following line sets the RTC to the date & time this sketch was compiled
45
    rtc.begin(DateTime(F(__DATE__), F(__TIME__)));
46
    // This line sets the RTC with an explicit date & time, for example to set
47
    // January 21, 2014 at 3am you would call:
48
    //rtc.adjust(DateTime(2015,05,12,22,42,00));
49
    delay (3500); //let the display start up after the reset (This is important)
50
    genie.WriteObject (GENIE_OBJ_FORM, 0, 0); // Select form 0
51
   
52
   
53
}
54
55
void loop()
56
{
57
    DateTime now = rtc.now();
58
    zeit();
59
    //feuchtemw();
60
    genie.WriteObject (GENIE_OBJ_LED_DIGITS, 3, tempmw());
61
    genie.WriteObject (GENIE_OBJ_LED_DIGITS, 4, feuchtemw());
62
    //genie.WriteObject (GENIE_OBJ_USER_LED, 0, Zu_VENTILATOR);
63
   
64
    if (Zu_VENTILATOR == LOW && (tempmw() > 27 || feuchtemw() > 80))   //Einschalten des Zuluftventilators
65
    {
66
        genie.WriteObject (GENIE_OBJ_LED_DIGITS, 3, tempmw());  //Ausgabe des Mittelwerts am Touch
67
        genie.WriteObject (GENIE_OBJ_LED_DIGITS, 4, feuchtemw());
68
        digitalWrite (Zu_VENTILATOR, HIGH);
69
        genie.WriteObject (GENIE_OBJ_USER_LED, 0, Zu_VENTILATOR); //LED sollte leuchten
70
        Relais1 = 1;
71
       
72
       
73
    }
74
 
75
    if (Zu_VENTILATOR == HIGH && tempmw() <=27 && feuchtemw() <= 80 )   //Ausschalten des Zuluftventilators
76
    {
77
        if(now.second() == 0 || now.second() == 10 || now.second() == 20 || now.second() == 30 || now.second() == 40 || now.second() == 50)
78
        {
79
           genie.WriteObject (GENIE_OBJ_LED_DIGITS, 3, tempmw());
80
           genie.WriteObject (GENIE_OBJ_LED_DIGITS, 4, feuchtemw());
81
           digitalWrite (Zu_VENTILATOR, LOW);
82
           genie.WriteObject (GENIE_OBJ_USER_LED, 0, Zu_VENTILATOR); //LED sollte wieder aus sein
83
           Relais1 = 0;
84
           
85
           
86
        }
87
     }
88
    delay(1000);
89
}
90
91
float tempmw()    //Berechnung von Temperaturmittelwert
92
{
93
    float t1 = dht1.readTemperature(); //Auslesen der Temperature in Celsius von Sensor 1
94
    float t2 = dht2.readTemperature(); //Auslesen der Temperature in Celsius von Sensor 2
95
    float t3 = dht3.readTemperature(); //Auslesen der Temperature in Celsius von Sensor 3
96
   
97
    return( (t1 + t2 + t3) / 3 );   //Errechnen des Mittelwerts
98
}
99
100
float feuchtemw()    //Berechnung von Luftfeuchtkeitmittelwert
101
{
102
    float h1 = dht1.readHumidity();    //Auslesen der Luftfeuchtigkeit von Sensor 1
103
    float h2 = dht2.readHumidity();    //Auslesen der Luftfeuchtigkeit von Sensor 2
104
    float h3 = dht3.readHumidity();    //Auslesen der Luftfeuchtigkeit von Sensor 3
105
 
106
    return( (h1 + h2 + h3) / 3 );   //Errechnen des Mittelwerts
107
}
108
void zeit()
109
{
110
    DateTime now = rtc.now();
111
   
112
    genie.WriteObject (GENIE_OBJ_LED_DIGITS, 0, now.hour());
113
    genie.WriteObject (GENIE_OBJ_LED_DIGITS, 1, now.minute());
114
    genie.WriteObject (GENIE_OBJ_LED_DIGITS, 2, now.second());
115
}

Ich brauche auch einen Counter der mit Buttons funktioniert. Ein Button 
zum Hinaufzählen und ein Button zum Hinunterzählen.Dazu habe ich diesen 
unvollständigen Codeschnippsel gefunden an dem ich mich jetzt probiere.
Vielleicht kann mir jemand helfen das dieser Counter funktioniert
1
int button0Val, button1Val, counter;  
2
    
3
in the event handler...
4
    
5
if report message is coming from 4dbutton0{
6
    get the data and store it to button0Val;
7
    if (button0Val == 1){
8
        counter++;
9
        write to the string object the value of counter;
10
    }
11
}
12
    
13
if report message is coming from 4dbutton1{
14
    get the data and store it to button1Val;
15
    if (button1Val == 1){
16
        counter--;
17
        write to the string object the value of counter;
18
    }
19
}


Ich danke euch vielmals. Ich brauche wirklich Hilfe, da dies unsere 
Diplomarbeit ist und wir bald abgeben müssen.
Danke an alle

Wolfi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.