INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Projekt] Reifeschrank Klimasteuerung
17.03.2015, 15:26
Beitrag #33
RE: [Projekt] Reifeschrank Klimasteuerung
Hi,
pastebin geht bei mir gerade nicht, bitte direkt in code-Tags in den Beitrag schreiben.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.03.2015, 17:40
Beitrag #34
RE: [Projekt] Reifeschrank Klimasteuerung
Ich war mal so frei und habs von pastebin kopiert....

Code:
// DHT22, TinyRTC (DS1307) und 1.8 Zoll TFT-Farb-Display (SainSmart ST7735)

#include "Adafruit_GFX.h"            // Adafruit Grafik-Bibliothek
#include "Adafruit_ST7735.h"         // Adafruit ST7735-Bibliothek
#include <SPI.h>                     // SPI-Bibliothek für den BMP085

#include <Wire.h>
//#include "Adafruit_BMP085.h"       // Adafruit BMP085-Bibliothek, für späteres Nachrüsten des Luftdrucksensors

#include "RTClib.h"                  //RTC-Bibliothek für die Echtzeituhr

#include <DHT.h>
#define DHTPIN 4                    // DHT an PArduino PIN 4
#define DHTTYPE DHT22               // DHT 22
#define RELAY1 2                    // Relais Kanal 1 -> Lüfter
#define RELAY2 3                    // Relais Kanal 2 -> Vernebler


// TFT-Display
#define CS   10                    // Arduino-Pin an Display CS  
#define DC   9                     // Arduino-Pin an Display A0
#define RST  8                     // Arduino Reset-Pin

Adafruit_ST7735 tft = Adafruit_ST7735(CS, DC, RST);  // Display-Bibliothek Setup

RTC_DS1307 RTC;                    // Tiny RTC Modul

// Adafruit_BMP085 bmp;            // BMP085 (für späteres hinzufügen des Luftdrucksensors)

DHT dht(DHTPIN, DHTTYPE);          // Initialisierung des DHTs


DateTime now;
DateTime time_old;
DateTime date_old;

boolean night_mode=true;          // Invertiert das Display; Stromsparmaßnahme und zur verbesserten Lesbarkeit

int RELAY1state = 0;
int RELAY2state = 0;


void setup(void)
{
//  Serial.begin(9600);             // zur zusätzlichen Ausgabe in der Seriellen Konsole
  pinMode(RELAY1, OUTPUT);          // Relais 1 als Ausgng festlegen
  pinMode(RELAY2, OUTPUT);          // Relais 2 als Ausgang festlegen
  digitalWrite(RELAY1, LOW);        // Relais 1 "ausschalten"
  digitalWrite(RELAY2, LOW);        // Relais 2 "ausschalten"

RELAY1state = digitalRead(RELAY1);
RELAY2state = digitalRead(RELAY2);


  // Initialisiere RTC
  Wire.begin();
  RTC.begin();

  if (! RTC.isrunning()) {
                                    // Aktuelles Datum und Zeit setzen, falls die Uhr noch nicht läuft
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }

//  bmp.begin();                    // BMP085 starten

  dht.begin();  // DHT starten

  // Display
  tft.initR(INITR_BLACKTAB);        // ST7735-Chip initialisieren

  display_show();
}


float temp=1000;
float hum=0;
//int32_t pressure=1000;
float min_temp=1000;
float max_temp=-1000;
float min_humidity=1000;
float max_humidity=-1000;
//int32_t min_pressure=1000000;
//int32_t max_pressure=-1000;

int tempct=0;

void loop() {

  DateTime now=RTC.now();

  if(now.minute()!=time_old.minute()){
    show_time(time_old,true);
    time_old=now;
    show_time(time_old,false);
  }
  if(now.day()!=date_old.day()){
    show_date(date_old,true);
    date_old=now;
    show_date(date_old,false);
  }

  float t=dht.readTemperature();
// else t=bmp.readTemperature();
  if(isnan(t)){}
  else if((float)t!=(float)temp){
   show_temp(temp,true);
   temp=t;
   if(min_temp>temp)min_temp=temp;
   if(max_temp<temp)max_temp=temp;
   show_temp(temp,false);
  }
  tempct++;

  float h = dht.readHumidity();
  if(isnan(h)){}
  else if(h!=hum){
  show_hum(hum,true);
  hum=h;
   if(min_humidity>hum)min_humidity=hum;
   if(max_humidity<hum)max_humidity=hum;
   show_hum(hum,false);
  }
if (temp<=22.0)
{
digitalWrite(RELAY1,HIGH);
}
else
{
digitalWrite(RELAY1,LOW);
}
if (hum<=75)
{
digitalWrite(RELAY2,HIGH);
}
else
{
digitalWrite(RELAY2,LOW);
}

// int32_t p=bmp.readPressure();
// if(p!=pressure){
//   show_pressure(pressure,true);
//   pressure=p;
//  if(min_pressure>pressure)min_pressure=pressure;
//   if(max_pressure<pressure)max_pressure=pressure;
//   show_pressure(pressure,false);
// }

  delay(2000);  

// Serial.print(temp);
// Serial.write(0xB0),Serial.print("C");
// Serial.print(" | ");
// Serial.print(hum);
// Serial.println("% rel. Luftfeuchte");


}

void show_temp(float temp,boolean clear){

  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

  byte xs=5;
  byte ys=66;
//  String htemp=dtostrf(temp, 3, 1, htemp);
  String htemp=String((float)temp,1);
//  byte xss=(temp<10?:temp);

  set_text(xs,ys,htemp,clear?clearcolor:textcolor,2);
  set_text(xs+(3*htemp.length()*4),ys,"",(clear?clearcolor:textcolor),2.5);
  tft.write(247); // das °-Zeichen  
  tft.print("C");
  set_text(xs+81,ys+1,String((float)max_temp,1),clear?clearcolor:ST7735_RED,1​);
  tft.write(247);tft.print("C");
  set_text(xs+81,ys+11,String((float)min_temp,1),clear?clearcolor:ST7735_BLUE​,1);
  tft.write(247);tft.print("C");
}

void show_hum(float hum,boolean clear){

  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

  byte xs=5;
  byte ys=90;

  set_text(xs,ys,String((float)hum,1)+"%",clear?clearcolor:textcolor,2.5);
  set_text(xs+81,ys+1,String((float)max_humidity,1)+"%",clear?clearcolor:ST7735_GREEN,1);
  set_text(xs+81,ys+11,String((float)min_humidity,1)+"%",clear?clearcolor:ST7735_YELLOW,1);
}

//void show_pressure(float pressure,boolean clear){

//  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
//  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

//  byte xs=12;
//  byte ys=130;

//  set_text(xs,ys,String((int32_t)pressure)+"Pa",clear?clearcolor:textcolor,1);

//  if(max_pressure>=100000)xs-=8;
//  set_text(xs+68,ys-5,String((int32_t)max_pressure)+"Pa",clear?clearcolor:ST7735_CYAN,1);
//  set_text(xs+68,ys+5,String((int32_t)min_pressure)+"Pa",clear?clearcolor:ST7735_MAGENTA,1);//
//}

String get_day_of_week(uint8_t dow){

  String dows="  ";
  switch(dow){
   case 0: dows="So"; break;
   case 1: dows="Mo"; break;
   case 2: dows="Di"; break;
   case 3: dows="Mi"; break;
   case 4: dows="Do"; break;
   case 5: dows="Fr"; break;
   case 6: dows="Sa"; break;
  }

  return dows;
}

void show_time(DateTime now, boolean clear){

  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

  tft.setTextColor(clear?clearcolor:textcolor);
    
  tft.setTextSize(3);
  tft.setCursor(21,21);
  if(now.hour()<10)tft.print(0);
  tft.print(now.hour(),DEC);
  tft.print(":");
  if(now.minute()<10)tft.print(0);
  tft.print(now.minute(),DEC);
//  tft.print(":");
//  if(now.second()<10)tft.print(0);
//  tft.print(now.second(),DEC);
}

void show_date(DateTime now,boolean clear){

  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

  tft.setTextColor(clear?clearcolor:textcolor);
  tft.setTextSize(1);
  tft.setCursor(24,47);  
  tft.print(get_day_of_week(now.dayOfWeek()));
  tft.print(", ");
  if(now.day()<10)tft.print(0);
  tft.print(now.day(),DEC);
  tft.print(".");
  if(now.month()<10)tft.print(0);
  tft.print(now.month(),DEC);
  tft.print(".");
  tft.print(now.year(),DEC);
}

void show_RELAY1state(boolean clear){

  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

  tft.setTextColor(clear?clearcolor:textcolor);
  tft.setTextSize(1);
  tft.setCursor(120,40);  
  if (RELAY1state = 1){
  tft.print("ON");
  }else{
  tft.print("OFF");
}
}


void set_text(int x,int y,String text,int color,int size){

  tft.setTextSize(size);
  tft.setCursor(x,y);
  tft.setTextColor(color);
  tft.print(text);
}

void display_show(){

  tft.fillScreen(night_mode?ST7735_BLACK:ST7735_WHITE);

  set_text(2,4,"Raumklimaueberwachung",ST7735_BLUE,1);
  set_text(5,120,"Luefter",ST7735_WHITE,1);  
  set_text(5,140,"Luftbefeuchter",ST7735_WHITE,1);
  time_old=date_old=RTC.now();

  show_time(time_old,false);
  show_date(date_old,false);  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.03.2015, 17:51
Beitrag #35
RE: [Projekt] Reifeschrank Klimasteuerung
Hi,
das Hauptproblem ist wahrscheinlich, dass show_RELAY1state nie aufgerufen wird.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.03.2015, 18:57
Beitrag #36
RE: [Projekt] Reifeschrank Klimasteuerung
Danke an Wampo fürs kopieren. Bin gerade erst wieder nach Hause gekommen.

show_RELAY1state ist doch der Abruf, mit der Anweisung, dann ON oder OFF auszuwerfen?!

anders sind die anderen Werte doch auch nicht abgerufen?!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.03.2015, 23:11
Beitrag #37
RE: [Projekt] Reifeschrank Klimasteuerung
show_RELAY1state ist eine Funktion, die nicht aufgerufen wird. Warum sollte das System sie denn ausführen?
Anders gefragt: Warum glaubst Du, dass das Coding in show_RELAY1state ausgeführt wird?

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.03.2015, 23:15
Beitrag #38
RE: [Projekt] Reifeschrank Klimasteuerung
(17.03.2015 23:11)Thorsten Pferdekämper schrieb:  Anders gefragt: Warum glaubst Du, dass das Coding in show_RELAY1state ausgeführt wird?

mit welcher Funktion wird dann die Ausgabe auf dem TFT initiiert?
die anderen Parameter werden doch auch nur mit

void show_xxx

aufgerufen?!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2015, 09:04
Beitrag #39
RE: [Projekt] Reifeschrank Klimasteuerung
Hi,
nein, mit "void show_..." wird eine Funktion deklariert bzw. definiert. Aufgerufen wird sie dadurch nicht. Das sagt nur, dass es diese Funktion gibt. Woher sollte der Arduino wissen, wann er die Funktion aufrufen soll?
Schau Dir mal das hier an:
http://arduino.cc/en/Reference/FunctionDeclaration
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2015, 09:09
Beitrag #40
RE: [Projekt] Reifeschrank Klimasteuerung
habs grad hinbekommen. Big Grin
Try&Error Prinzip

Zitat: RELAY1state = digitalRead(RELAY1);
{
show_RELAY1state(RELAY1state,true);
show_RELAY1state(RELAY1state,false);
}
....
...
...
void show_RELAY1state(char, boolean clear){

int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

tft.setTextColor(clear?clearcolor:textcolor);
tft.setTextSize(1);
tft.setCursor(60,120);
if ((digitalRead(RELAY1) == LOW))
{
tft.print("ON");
}
else
{
tft.print("OFF");
}
}

ich glaub, das ist zwar nicht schön gecodet, aber dafür extrem selten! Big GrinBig GrinBig Grin
Das gleiche jetzt noch für die Luftfeuchte, dann bin ich schon mal extrem weiter.

Dann muss ich noch sehen, wie ich einen Temperaturbereich festlege, in dem er agiert. Sonst schaltet er beim Schwellenwert ständig an und ab ^^
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Roboter (Projekt) Beginner linux248 1 315 30.11.2016 12:06
Letzter Beitrag: Thie
  Arduino Projekt (Einkauf/Beratung) pekinese 2 211 21.11.2016 13:44
Letzter Beitrag: pekinese
Rainbow WB2812B Projekt CrazyHawk 18 1.494 22.07.2016 17:45
Letzter Beitrag: CrazyHawk
  Cam Slider Projekt, die ersten Schritte T8T 3 1.151 30.04.2016 16:26
Letzter Beitrag: SkobyMobil
  Projekt: Türsensor _Aviciii_ 9 2.429 05.04.2016 18:50
Letzter Beitrag: hotsystems
  Erstes Projekt Claus_M 8 1.961 08.01.2016 07:36
Letzter Beitrag: Claus_M
  NwT-Projekt Kursstufe1 Jonas Halbgewachs 6 2.292 26.10.2015 10:47
Letzter Beitrag: Binatone
  Anfänger mit großem Bau Projekt (Useless Box 3.0) Wambo 7 4.132 02.10.2015 16:36
Letzter Beitrag: Klaus(i)
  Ardunio Anfänger mit vielen Fragen zu einem Design Projekt (mit Bildern) farbexot 0 1.530 01.08.2015 13:03
Letzter Beitrag: farbexot
  1. Arduino Projekt: Riesengrill Wotan 2 2.318 24.06.2015 14:45
Letzter Beitrag: Wotan

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste