Luftalarm

Hallo,
bei meinen Projekt geht es darum, dass bei schlechten Luftzustand ein Buzzer einen akustischen Alarm machen soll. Das funktioniert auch. Aber ...

Mein Code:
alarm();
if (tasterstatus == HIGH){
noTone(12);
}

//Alarm Methode
void alarm(void){
if(humidity <= 30 || humidity >= 60 || temperature <=20 || temperature >= 28){
tone(12, 1200, 10000);
}
}

Wenn der Alarm(Buzzer) angeht soll per Taster möglich sein diesen Alarm auszuschalten und es soll in den nächsten 15 Minuten die Methode alarm() deaktiviert sein. Wie mach ich das ? . Derzeit kann ich den Buzzer immer nur kurz ausschalten den nach durchlaufen der alarm() Methode geht der Alarm wieder los wenn die Luft schlecht ist. Diese Methode soll aber nach drücken des Taster für 15 Minuten deaktiviert sein. ??

bitte poste Code nur in code Tags.
Noch besser, immer compilierbaren Code posten. Ansonten bekommst du von uns auch nur Code-Fetzen.

Zur Frage:
Einfach die Zeit (millis) merken wenn du den Alarm bestätigst
und vor der nächsten Auslösung prüfen, ob genug Zeit seit dem letzten Alarmbestätigung vorüber sind.

"BlinkWithoutDelay" - zeigt dir den Umgang mit millis().

Und weil du dann fragen wirst, warum das die ersten 15 minuten nicht klappt, den previousMillis Zeitstempel einfach schon mit einem "Überlauf" initialisieren (also mit -15 minuten) - dann klappt der erste Alarm auch schon.

fabiannn:
Mein Code:

Was bitte sollen wir mit den Fragmenten anfangen ?

Poste bitte deinen kompletten Sketch in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Dazu den Sketch markieren und die Schaltfläche klicken, oder [ code] davor und [ / code] dahinter ohne Leerzeichen.
Oder
im IDE-Fenster rechte Maustaste und für "Forum kopieren klicken", danach hier einfügen.

Das kannst du in deinem Startbeitrag noch nachträglich machen.

Damit wird dieser für alle besser lesbar.

Hallo

Wie mach ich das ?

Mit einer zeit- und/oder ereignisgesteuerten Schrittkette.

fabiannn:
soll in den nächsten 15 Minuten die Methode alarm() deaktiviert sein. Wie mach ich das ?

1000+1 Wege führen nach Rom.
Einer davon: Merke dir, wann Du den alarm ausgemacht hast.
Sperre solange den (erneuten) Alarm bis die Zeit abgelaufen ist.
Dazu brauchst noch eine Variable lastalarmaus vom typ unsigned long und dann z.B.

alarm();
if (tasterstatus == HIGH){
  noTone(12);
  lastalarmaus=millis();
}


//Alarm Methode
void alarm(void){
if((humidity <= 30 || humidity >= 60 || temperature <=20 || temperature >= 28)&&(millis()-lastalarmaus>900000)){
  tone(12, 1200, 10000);
}
}

Ohne Schrittkette.
Die 900000 sind (1 Sekunde entspricht:) 1000ms *60 *15

Ok, ich habe das jetzt so eingefügt wie du es geändert hast. Es funktioniert auch fast alles. Das einzige Problem was jetzt noch ist, ist folgendes: Die Methode soll gleich beim Starten des Programmes durchgeführt werden und die Luft überprüfen. Dies macht die Methode aber erst wenn das 900000ms delay abgelaufen ist. Ich habe das mit 10sek delay getestet. Nach 10sek wird die Methode alarm() ausgeführt. Sie soll aber direkt abgerufen werden. Da ich den Sensor zuvor beeinflusst habe ging der Alarm sofort los. Anschließend drückte ich den Taster und der Alarm ging für 10sek aus was auch richtig ist.

lies noch mal #1 ganz genau.

#1 ??

fabiannn:
Ok, ich habe das jetzt so eingefügt wie du es geändert hast. Es funktioniert auch fast alles.

nene - es funktioniert alles.

Das einzige Problem was jetzt noch ist, ist folgendes:

Das hast Du nicht geschrieben - das ist eine neue Anforderung.
Hättest Du die erste Antwort (#1) befolgt, hätte ich Dir eine Variable geschenkt, die gesetzt wird.
Dann wäre auch Deine Anforderung erfüllt gewesen.

Ok, was genau muss ich jetzt noch im Code ändern damit die Methode sofort ausgeführt wird ?

welcher code?

fabiannn:
Ok, was genau muss ich jetzt noch im Code ändern damit die Methode sofort ausgeführt wird ?

Warum ignorierst du teilweise unsere Beiträge ?

#1 ist die erste Antwort auf Deine Frage gemeint.
da steht:

noiasca:
Und weil du dann fragen wirst, warum das die ersten 15 minuten nicht klappt, den previousMillis Zeitstempel einfach schon mit einem "Überlauf" initialisieren (also mit -15 minuten) - dann klappt der erste Alarm auch schon.

Diese werden rechts durchnummeriert. Das hier ist zB #12
Grüße Uwe

@fabiannn

Other post/duplicate DELETED
Please do NOT cross post / duplicate as it wastes peoples time and efforts to have more than one post for a single topic.

Continued cross posting could result in a time out from the forum.

Could you take a few moments to Learn and Use The Forum

It will help you get the best out of the forum in the future.

  • Your OS and version can be valuable information, please include it along with extra security you are using.

  • Always list the version of the IDE you are using and the board version if applicable.

  • Use quote or add error messages as an attachment NOT a picture.

  • How to insert an image into your post. ( Thanks @sterretje )

  • Add your sketch where applicable but please use CODE TAGS ( </> )

  • Add a SCHEMATIC were needed even if it is hand drawn

  • Add working links to any specific hardware as needed (NOT links to similar items)

  • Remember that the people trying to help cannot see your problem so give as much information as you can

COMMON ISSUES

  • Ensure you have FULLY inserted the USB cables.

  • Check you have a COMMON GROUND where required. ( Thanks @Perry)

  • Where possible use USB 2.0 ports or a USB 2.0 POWERED HUB to rule out USB 3.0 issues.

  • Try other computers where possible.

  • Try other USB leads where possible.

  • You may not have the correct driver installed. CH340/341 or CP2102 or FT232 VCP Drivers - FTDI

  • There may be a problem with the board check or remove your wiring first.

  • Remove any items connected to pins 0 and 1.

COMPUTER RELATED

  • Close any other serial programs before opening the IDE.

  • Ensure you turn off any additional security / antivirus just to test.

  • There may be a problem with the PC try RESTARTING it.

  • You may be selecting the wrong COM port.

  • Avoid cloud/network based installations where possible OR ensure your Network/Cloud software is RUNNING.

  • Clear your browsers CACHE.

  • Close the IDE before using any other serial programs.

  • Preferably install IDE’s as ADMINISTRATOR or your OS equivalent

ARDUINO SPECIFIC BOARDS

  • CH340/341 based clones do not report useful information to the “get board info” button.

  • NANO (Old Types) some require you to use the OLD BOOTLOADER option.

  • NANO (ALL Types) See the specific sections lower in the forum.

  • NANO (NEW Types) Install your board CORE’s.

  • Unless using EXTERNAL PROGRAMMERS please leave the IDE selection at default “AVRISP mkII”.

  • Boards using a MICRO usb connector need a cable that is both DATA and CHARGE. Many are CHARGE ONLY.

CREATE editor install locations.

  • On macOs ~/Applications/ArduinoCreateAgent-1.1/ArduinoCreateAgent.app/Contents/MacOS/config.ini

  • On Linux ~/ArduinoCreateAgent-1.1/config.ini

  • On Windows C:\Users[your user]\AppData\Roaming\ArduinoCreateAgent-1.1

Performing the above actions may help resolve your problem without further help.

Language problem ?

Try a language closer to your native language:

Thanks to all those who helped and added to this list.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.