Brandweer Project

Beste Nederlandse forumleden,

Ik ben bij de brandweer een projectje gestart om bepaalde dingen te automatiseren.
In dit project komt het volgende aan bod maar we beginnen redelijk simpel.

ik begin met de verlichting aan te schakelen bij melding.
Ik heb een oude pieper omgebouwd tot een schakelaar wanneer de pieper gaat gaat hij altijd piepen en trillen dit motortje heb ik er tussen uit gehaald en vervangen voor een optocoupler. dus de optocoupler is de schakelaar.
Maar nu willen we dat na 3 minuten de lichten gewoon weer netjes uitgaan want we zijn dan al lang en breed de kazerne uit. maar doormiddel van een delay in te bouwen lukt het me niet om hem uit te schakelen. hebben jullie misschien een idee wat ik verkeerd doe in het verhaal. misschien nog een handige aanvulling ik heb van die stopcontacten gebruikt met een zender. die heb ik omgebouwd met draden dus die moet ie schakelen voor een korte tijd daarna na zoveel seconden uitgaan.

dit is mijn sketch:

//Pieper Schakeling
const int ledOn = 13; //Led aan als het systeem draait
const int afstandsbediening_1 = 12; //Afstandbediening om Verlichting aan te zetten.
const int ledAfst_1 = 11; //Wil zien of de afstandbediening aan en uit gaat
const int afstandsbediening_2 = 10; //Sleutelhanger pieper laten af gaan.
const int ledAfst_2 = 9; // Wil zien of de afstandbediening aan en uit gaat
const int optocoup_pieper = 6; //Pieper verbonden met optocoupler
int val = 0;
int old_val = 0;
int state = 0;

void setup() {
pinMode(ledOn, OUTPUT);
pinMode(afstandsbediening_1, OUTPUT);
pinMode(ledAfst_1, OUTPUT);
pinMode(afstandsbediening_2 , OUTPUT);
pinMode(ledAfst_1, OUTPUT);
pinMode(optocoup_pieper, INPUT);

//Als ik wat verder ben met programmeren komt er ook een geluid bij. Met een WT5001M02-28P
}

void loop() {
val = digitalRead(optocoup_pieper);
if ((val == HIGH) && (old_val == LOW)) {
state = 1 - state;
}
old_val = val;

if(state == 1){
digitalWrite(afstandsbediening_1, HIGH);
digitalWrite(afstandsbediening_2, HIGH);
digitalWrite(ledAfst_1, HIGH);
digitalWrite(ledAfst_2, HIGH);
digitalWrite(ledOn, HIGH);
delay(40);
digitalWrite(afstandsbediening_1, LOW);
digitalWrite(afstandsbediening_2, LOW);
digitalWrite(ledAfst_1, LOW);
digitalWrite(ledAfst_2, LOW);
delay(180000);
digitalWrite(afstandsbediening_1, HIGH);
digitalWrite(afstandsbediening_2, HIGH);
digitalWrite(ledAfst_1, HIGH);
digitalWrite(ledAfst_2, HIGH);
delay(40);
digitalWrite(afstandsbediening_1, LOW);
digitalWrite(afstandsbediening_2, LOW);
digitalWrite(ledAfst_1, LOW);
digitalWrite(ledAfst_2, LOW);
digitalWrite(ledOn, HIGH);
}else {
digitalWrite(afstandsbediening_1, LOW);
digitalWrite(ledAfst_1, LOW);
digitalWrite(afstandsbediening_2, LOW);
digitalWrite(ledAfst_2, LOW);
digitalWrite(ledOn, HIGH);
}
}

Wie mij kan helpen waar het fout zit graag.

Mvg Jeroen

Ik zou het zo niet doen maar op basis van je code denk ik da dit beter werkt

//Pieper Schakeling
const int ledOn = 13;            //Led aan als het systeem draait
const int afstandsbediening_1 = 12;      //Afstandbediening om Verlichting aan te zetten.
const int ledAfst_1 = 11;         //Wil zien of de afstandbediening aan en uit gaat
const int afstandsbediening_2  = 10;      //Sleutelhanger pieper laten af gaan.
const int  ledAfst_2 = 9;            // Wil zien of de afstandbediening aan en uit gaat
const int optocoup_pieper = 6;         //Pieper verbonden met optocoupler



void setup() {               
  pinMode(ledOn, OUTPUT);
  pinMode(afstandsbediening_1, OUTPUT);
  pinMode(ledAfst_1, OUTPUT);
  pinMode(afstandsbediening_2  , OUTPUT);
  pinMode(ledAfst_1, OUTPUT);
  pinMode(optocoup_pieper, INPUT);

//Als ik wat verder ben met programmeren komt er ook een geluid bij. Met een WT5001M02-28P   
}

void loop() {
  int val = digitalRead(optocoup_pieper);
  if (val == HIGH) {            
    digitalWrite(afstandsbediening_1, HIGH);
    digitalWrite(afstandsbediening_2, HIGH);
    digitalWrite(ledAfst_1, HIGH);
    digitalWrite(ledAfst_2, HIGH);
    digitalWrite(ledOn, HIGH);
    delay(40);
    digitalWrite(afstandsbediening_1, LOW);
    digitalWrite(afstandsbediening_2, LOW);
    digitalWrite(ledAfst_1, LOW);
    digitalWrite(ledAfst_2, LOW);
    delay(180000);
    digitalWrite(afstandsbediening_1, HIGH);
    digitalWrite(afstandsbediening_2, HIGH);
    digitalWrite(ledAfst_1, HIGH);
    digitalWrite(ledAfst_2, HIGH);
    delay(40);
    digitalWrite(afstandsbediening_1, LOW);
    digitalWrite(afstandsbediening_2, LOW);
    digitalWrite(ledAfst_1, LOW);
    digitalWrite(ledAfst_2, LOW);
    digitalWrite(ledOn, HIGH);

  }
}

Hoi Jeroen, welkom.

Graag de volgende keer dat je code post, ook op het code knopje klikken (ziet er uit als #.
Dat leest veel prettiger.

Je gebruikt een delay, en dat zou moeten werken, maar het is niet netjes.
Je zet je krachtige Arduino daarmee namelijk op pauze, terwijl je hier ook nog zat andere zaken zou kunnen doen.
Daarom kun je veel beter de methode gebruiken die je terugvindt in je sketchbook (in het menu van de IDE> bestand > voorbeelden > 02.digital).

Ik zie dat je een puls van 0,04 seconden geeft aan je klikaan-klikuit afstandbediening en ook dat je telkens dezelfde "knop" daarvoor gebruikt.
Weet je zeker dat dat klopt (ik heb er geen idee van )?
Wellicht dat die 0,04 seconden wat kort is ?
Heb je niet een knopje voor aan en een andere voor uit ?

Hoi Jantje.
Was aan het typen toen ineens het internet eruit lag voor meer dan een half uur hier.
In de tussentijd had jij ook al geantwoord.
Kun je ook in het kort vertellen wat je hier anders gedaan hebt en waarom ?

Ik denk eerlijk gezegd dat ik er nog niet klaar voor ben. om dit helemaal op te zetten misschien stukje bij beetje. zoals ik al zei willen we veel gaan implementeren met dit project. Ik zal voor de grap even opsommen wat we allemaal willen gaan doen.

-Lichten aan in de slaapkamer met een timer functie dat na ongeveer 2 minuten het licht weer uit gaat.
-Wanneer de pieper gaat zal er ook een geluid door de slaapkamers klinken.
-daarnaast willen we zo een code schrijven dat als we er nog iets bij bedenken dat we dat dan kunnen uitvoeren.

maar eerst maar eens stoeien met de lichten aan laten gaan.

Ik vraag jullie niet om een code ofzo te schrijven maar mochten jullie iets tegen komen wat misschien handig is vind ik het leuk om dat te ontvangen.

Mvg Jeroen

@MAS
De aanpassing die ik gedaan heb is heel eenvoudig.
OP had 2 manieren van werken gemikst (waarschijnlijk omdat de werking van delay niet helemaal duidelijk is)
Er zit dus een 3 minuten delay in de code maar ook een state engine. Die state engine is niet nodig als je enkel met delay werkt.
vanddar de opmerking : "Ik zou het zo niet doen; maar op basis van je code denk ik dat dit beter werkt"

met vriendelijke groet
Jantje