ArduinoForum.de - Das deutschsprachige Forum rund um den Arduino
Einmaliges piepen - Druckversion

+- ArduinoForum.de - Das deutschsprachige Forum rund um den Arduino (https://www.arduinoforum.de)
+-- Forum: Arduino-Allgemein (/arduino-Forum-Arduino-Allgemein)
+--- Forum: Programmierung (/arduino-Forum-Programmierung)
+--- Thema: Einmaliges piepen (/arduino-Thread-Einmaliges-piepen)



Einmaliges piepen - isomack - 20.08.2013 19:42

hallo leute, bin ein neuling mit dem arduino. habe mir eine lüftersteuerung zusammen gebastelt. die lüfter sollen angehen wenn die luftfeuchtigkeit einen eingegebenen wert übersteigt. dies funktioniert auch alles. nun die frage: ich möchte das der arduino ein signal abgibt (durch pin13) wenn die lüfter angehen. in diesem fall wäre es ein piepen.

hier die schaltung:

[attachment=122]
hier der aktuelle programmcode:



// Einbinden des DHT22
#include "DHT.h" // Library für DHT Sensor aufgerufen
#define DHTPIN 3 // DHT Sensor wird aus PIN 3 ausgelesen
#define DHTTYPE DHT22 // DHT Type wird auf DHT22 festgelegt
DHT dht22(DHTPIN, DHTTYPE); // DHTPIN und DHTTYE in dht22 definiert
int i=55; // Luftfeuchte in Prozent

// Einbinden des LCD
#include "Wire.h" // Library für I2C aufgerufen
#include <LiquidCrystal.h> // Library für LCD aufgerufen
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LCD Adresse auf 0x27 gesetzt, 16 Zeichen / 2 Zeilen LCD



void setup()
{
pinMode(2,OUTPUT);
pinMode(13,OUTPUT);

dht22.begin(); // Auslesen des DHT22 beginnt
lcd.begin(16, 2); // LCD einbinden

}

void loop()
{
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); // Anfang auf Stelle 0, Zeile 0 setzen
lcd.print("Temp. :"); // Temp. : auf LCD ausgeben
lcd.setCursor(9, 0); // Anfang auf Stelle 9, Zeile 0 setzen
lcd.print(t); // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(15, 0); // Anfang auf Stelle 15, Zeile 0 setzen
lcd.print("C"); // C auf LCD ausgeben
lcd.setCursor(0, 1); // Anfang auf Stelle 0, Zeile 1 setzen
lcd.print("Luftf.:"); // Luft.: auf LCD ausgeben
lcd.setCursor(9, 1); // Anfang auf Stelle 9, Zeile 1 setzen
lcd.print(h); // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(15, 1); // Anfang auf Stelle 15, Zeile 1 setzen
lcd.print("%"); // % auf LCD ausgeben





if (h > i)
{
digitalWrite(2,HIGH);


}

else
{
digitalWrite(2,LOW);

}

}


EDIT: Extern verlinktes Bild, hier intern im ArduinoForum.de als Anhang gespeichert... Bitte in Zukunft darauf achten ! Smile

PS: Bitte prüfe einmal deine ShiftTaste... denn die scheint defekt zu sein...



RE: Einmaliges piepen - Stefan - 20.08.2013 20:06

ist ein sehr schlichtes Programm, im Prinzip geht es so, aber: eine Hysterese würde ich schon einbauen, sonst hat diese Regelung einen nervösen Docht, will meinen, sie schaltet zu oft. Du solltest einen Bereich einbauen, in dem nichts passiert: Einschalten beim Schwellwert, Ausschalten bei (Schwellwert - Hysterese).

Das mit dem Piepen geht auch ganz einfach, per Summer oder Lautsprecher, je nach Hardware für den gewünschten Zeitraum DC oder Frequenz ausgeben.


RE: Einmaliges piepen - isomack - 20.08.2013 20:15

danke für die schnelle antwort. das kleine schwarze runde ding auf dem bild gibt einen ton ab wenn es strom bekommt. ich weiß nur nicht wie ich es programmieren soll dass es nur einmal piept. wenn ich es in if schleife im loop teil reinschreibe piept das ding öffters. es soll aber nur einmal beim einschalten der lüfter piepen.


RE: Einmaliges piepen - Bitklopfer - 20.08.2013 20:50

(20.08.2013 20:15)isomack schrieb:  .....es soll aber nur einmal beim einschalten der lüfter piepen.

...nun man setze beim Einschaltpiepen ein Flag und frage das vor dem piepen ab....und wenn der Lüfter wieder abschaltet setzt man das Flag zurück....fedisch...


RE: Einmaliges piepen - isomack - 20.08.2013 20:57

Einen flag setzen? Wie sieht sowas aus? Kann mir mal einer einen beispielcode schreiben.


RE: Einmaliges piepen - Bitklopfer - 20.08.2013 21:09

(20.08.2013 20:57)isomack schrieb:  Einen flag setzen? Wie sieht sowas aus? Kann mir mal einer einen beispielcode schreiben.

na Flag ist eine andere Bezeichnung für eine Variable, das liegt einfach an der Verwendung...

und...
....
if(habeschongepiept == 0){ piepmalganzlaut;
habeschongepiept = 1;
}
....

solltest ja schon programmieren können....


RE: Einmaliges piepen - isomack - 20.08.2013 21:16

Bin dir dankbar für deine hilfe. Weißaber leider noch nicht so viel über das programmieren. An welche stelle muss ich den text setzen. Nett wärst wenn du den code der oben stehst in deine nächste antwort kopierst und deinen text hinzu fügst. Wäre dir sehr dankbar dafür.