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
Der automatische morgendliche Kaffee
13.09.2013, 14:27 (Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2013 10:36 von NicoW.)
Beitrag #1
Der automatische morgendliche Kaffee
Liebe Bastlerinnen, Liebe Bastler

Vor einiger Zeit kam ich auf die Idee meine Kapselmaschine zu automatisieren.
Dies realisierte ich wie in folgendem Thread nach zu lesen:
http://www.arduinoforum.de/arduino-Threa...imo-Wecker

Nun beschäftige ich mich erst seit ca. einer halben Woche mit der Programmierung und habe natürlich diesbezüglich einige Fragen. Bisher werden auf meiner 2004er lcd folgende Informationen angezeigt:

Temperatur, Luftfeuchtigkeit
Wochentag, Uhrzeit und Datum

Mein Sketch:

Code:
#include <Wire.h>
#define DS1307_I2C_ADDRESS 0x68
#include <LiquidCrystal.h> // we need this library for the LCD commands
#include <Servo.h>
#include "DHT.h"                            // Library für DHT Sensor aufgerufen
#define DHTPIN 32                           // DHT Sensor wird aus PIN 32 ausgelesen
#define DHTTYPE DHT22                       // DHT Type wird auf DHT22 festgelegt
DHT dht22(DHTPIN, DHTTYPE);

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

Servo motor1;
Servo motor2;

int backLight = 13; // pin 13 will control the backlight


// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you're passing in valid numbers
void setDateDs1307(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.write(decToBcd(second)); // 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave
Wire.endTransmission();
}
// Gets the date and time from the ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
// A few of these need masks because certain bits are control bits
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f); // Need to change this if 12 hour am/pm
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void setup()
{
pinMode(backLight, OUTPUT);
digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.

  motor1.attach(8);
  motor2.attach(9);

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
Wire.begin();
Serial.begin(9600);
// Change these values to what you want to set your clock to.
// You probably only want to set your clock once and then remove
// the setDateDs1307 call.
second = 0;
minute = 45;
hour = 1;
dayOfWeek = 5;
dayOfMonth = 13;
month = 9;
year = 13;

//setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
lcd.begin(20, 4); // tells Arduino the LCD dimensions
dht22.begin();

}
void loop()

{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

float t = dht22.readTemperature();        // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
  float h = dht22.readHumidity();           // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben
  
  Serial.print("Temperatur: ");             // Ausgabe im Seriellen Monitor
  Serial.print(t);                          // Ausgabe im Seriellen Monitor
  Serial.print(" C\t");                     // Ausgabe im Seriellen Monitor  
  Serial.print("Luftfeuchte: ");            // Ausgabe im Seriellen Monitor
  Serial.print(h);                          // Ausgabe im Seriellen Monitor
  Serial.println(" %");                     // Ausgabe im Seriellen Monitor


lcd.setCursor(0, 0);
lcd.print("Cafissimo-Wecker 1.0");

lcd.setCursor(0, 1);
lcd.print("Out:");
lcd.setCursor(5, 1);                       // Anfang auf Stelle 9, Zeile 0 setzen
lcd.print(t);                              // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(10, 1);                      // Anfang auf Stelle 15, Zeile 0 setzen
lcd.print("C");                            // C auf LCD ausgeben

lcd.setCursor(12, 1);
lcd.print("/");

lcd.setCursor(14, 1);                       // Anfang auf Stelle 9, Zeile 1 setzen
lcd.print(h);                              // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(19, 1);                      // Anfang auf Stelle 15, Zeile 1 setzen
lcd.print("%");                            // % auf LCD ausgeben

lcd.setCursor(0,2);
lcd.print("Uhrzeit:");
lcd.setCursor(10,2);
lcd.print(hour, DEC);
lcd.print(":");
if (minute<10)
{
lcd.print("0");
}
lcd.print(minute, DEC);
lcd.print(":");
if (second<10)
{
lcd.print("0");
}
lcd.print(second, DEC);


lcd.setCursor(0,3);
switch(dayOfWeek){
case 1:
lcd.print("Sonntag");
break;
case 2:
lcd.print("Montag");
break;
case 3:
lcd.print("Dienstag");
break;
case 4:
lcd.print("Mittwoch");
break;
case 5:
lcd.print("Donnerstag");
break;
case 6:
lcd.print("Freitag");
break;
case 7:
lcd.print("Samstag");
break;
}
lcd.setCursor(10, 3);
lcd.print(dayOfMonth, DEC);
lcd.print(".");
lcd.print(month, DEC);
lcd.print(".20");
lcd.print(year, DEC);
delay(1000);

int i = 0;

while (i < 2);
{
  motor1.write(138);
  delay (500) ;
  motor1.write(57);
  delay (90000) ;
  
  motor2.write(177) ;
  delay (500) ;
  motor2.write(110);
  delay (48000) ;
  
  motor1.write(138);
  delay (500) ;
  motor1.write(57);
  i++;
}

}

So stellte ich mir das vor:

Ich drücke auf den reset Taster auf dem Arduino damit der Sketch neu geladen wird.
Nun sollte die Kaffeemaschine angeschalten werden, und ein Kaffee gebrüht werden. Da dies aber nur ein Mal passieren sollte fügte ich eine while Bedingung ein. Jetzt läuft aber auch meine Uhrzeit nicht mehr weiter.

Die Servo Sache soll ein Mal durchlaufen und dann vor der nächsten Betätigung des Tastern nicht mehr. Wie kann ich das denn nu realisieren?

Ach ja, die Uhrzeit läuft ca 18min vor. Ich habe sie jedoch nie eingestellt. Bzw habe es versucht aber es klappte nie.

Wie gesagt, ich beschäftige mich erst seit ein paar Tagen mit der Sache und bin blutiger Anfänger. Kleine Erfolge Tag für Tag lassen die Hoffnung aber nicht sterben eines Tages Frischen Kaffee automatisch morgens um 6 zu haben.

Ich möchte euch bitte mir in meinem Anliegen ein wenig auf die Sprünge zu helfen und meine Anfängerfragen zu entschuldigen.

Liebe Grüße,

Nico

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.09.2013, 14:55
Beitrag #2
RE: Der automatische morgendliche Kaffee
Hallo, kann mir denn jemand weiter helfen? Konnte das Problem noch immer nicht lösen ;-(

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.09.2013, 17:31
Beitrag #3
RE: Der automatische morgendliche Kaffee
Nun hat es endlich geklappt:






Liebe Grüße,

Nico
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Automatische IP zuteilung Sbbfreack 1 730 29.08.2014 21:44
Letzter Beitrag: Bitklopfer

Gehe zu:


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