Hulp gezocht met pir programma

Ben de hele ochtend /middag al bezig maar krijg het programma niet aan het werk.

Wat doe ik fout.

Ik heb je laatste post gekopieerd en bij mij compileert het gewoon. Ik heb daarbij een mega als boardje ingesteld omdat ik zo snel geen info over het gebruikte boardje zag.

Wat is je foutmelding?

Of bedoel je dat het programma niet doet wat jij verwacht…..

krijg geen Foutmelding.
Bij mij compileert hij ook.
Gebruik een pro micro bordje en programmeer het met leonarde eth.
Programma doet niet wat verwacht.
Wat ik eigenlijk verwacht is dat beweging detecteerd en detectie stopt.
Dit zie ik niet terug in serial monitor.
Deze blijft continu doorlopen beweging gedecteerd en einde detectie.

Programma doet niet wat ik verwacht.

is het programma wat het niet doet of doet de pir niet wat je verwacht.

zorg dat je zeker weet dat de pir doet wat je verwacht. niet met een micro controller maar gewoon de draadjes op de pir en een lampje aansluiten (kan ook met een multimeter)

zorg dat je zeker weet dat het programma doet wat je verwacht. sluit een schakelaar aan ipv de pir. Schakel en kijk dan wat serial monitor zegt.

Ik heb het al eerder gezegd, maar misschien ben je dat inmiddels vergeten:
Je roept alleen "beweging gedetecteerd" of "einde beweging".
Maar het is slimmer als je daarnaast ook roept welke beweging je hebt gezien.
Verder is het wel een dingetje dat je elke iteratie (een nieuw rondje door loop()) een beweging zou kunnen detecteren, terwijl je dan niet weet of dat een nieuwe beweging was, of dezelfde van daarnet.
Maar dat is niet het probleem wat je nu ziet en je bent ook nog niet zo ver dat je dit wil gaan gebruiken.
Wat je ziet is wel precies wat je in je code hebt gezet, dus dan blijft over dat je verwachting daar niet mee overeenkomt.
Ik ga een stukje van je code voorzien van commentaar, om duidelijk te maken wat ik in die code lees.
Dat kun je dus zelf ook doen.
Commentaren gaan je helpen wanneer je naar fouten op zoek gaat.
Er zijn daarbij wel 2 verschillende klassen van commentaar.
De ene zet in het commentaar wat 'ie verwacht dat in die regel gebeurt.
De ander zet in het commentaar wat er daar werkelijk gebeurt.
Ik ga de 2e genoemde variant toepassen.

  // ga van beneden naar boven(pinPir1)
  motionStatus = digitalRead(pinPir1);
  if (motionStatus == HIGH)                  // Er wordt niets uitgevoerd als motionStatus HOOG is
    if (pirState == LOW) {                   // Het volgende wordt alleen uitgevoerd als pirState LAAG is.
      Serial.println("beweging gedecteerd"); // We roepen iets niet erg duidelijks over serial
      digitalWrite(led, HIGH);               // We maken de LED HOOG, ik neem aan dat dat de LED inschakelt
      pirState = HIGH;                       // We geven pirState een nieuwe waarde (oud was laag, en nu wordt dat HOOG) 
    }
    //}
    else {                                   // pirState was niet LAAG, dan gaan we het volgende doen
      if (pirState == HIGH)                  // We controleren nogmaals pirState, en doen daar vervolgens helemaal niets mee.
        Serial.println("einde beweging");    // We roepen iets anders over serial
      digitalWrite(led, LOW);                // We zetten de LED uit
      pirState = LOW;                        // We maken pirState nu wel LAAG.
      delay(1000);                           // We gooien een kostbare seconde weg (dat is niet erg zolang het om debuggen gaat)
    }

Dit stukje heb je 2 keer gebouwd, voor iedere richting een keer.
De fouten in je code kun je teruglezen in het commentaar.

Dank voor reactie/geduld.
Zoals ik in begin topic heb aangegeven is elektronica en programmeren nieuw terrein voor mij.
Dat ik nieuwe uitdagingen tegen kom is voor duidelijk.
Daarom zal ik niet alles gelijk doorhebben en/of snappen.

Ik ben dus dankbaar met alle hulp.

Maar goed:
De pirs zijn goed.(begon daar ook aan te twijfelen dus die heb vannacht nog getest)
Wat ik daarna gedaan heb is het aanpassen van println regel,(beweging gedecteerd-1/einde beweging-1)
Dit heb ik ook met de tweede pir gedaan.
Toen viel mij iets op in serial monitor.
Serial monitor geeft aan, beweging gedetecteert-1 / einde beweging-2 en blijft zo doorlopen
Volgens mij slaat het programma een stuk over.

Wat overigens ook opvalt is dat HIGH/LOW bij zwart blijft en niet veranderd van kleur.

OK, je hebt wat veranderd en dat is mooi.
Je hebt ook iets gezien door die verandering wat je eerder miste.
Maar heb je ook door de gegeven commentaren herkend dat er fouten in je sketch zitten, want de commentaren wijzen daar wel op.
Wat je nu gezien hebt, is wellicht ook te verklaren door deze aangewezen fouten.

Moet bekennen dat ik je commentaren vluchtig gelezen maar nog niks meegedaan.
Merk aan mij zelf dat ik het even moet rusten.( de lettertjes bedingen te dansen als ik te lang achter het beeldscherm zit)
De kostbare seconden staat erin om wat rust in serial monitor te brengen.
Overings werkt het programma met 1 pir goed.(is al ingebouwd in trap)
In serial monitor zie ik zoals het werkt.

Maar ik heb te simpel gedacht.
Knippen en plakken wat getallen veranderen en het werkt.(dus niet :joy:)

Prima, zoals eerder gezegd doe het rustig aan en stapje voor stapje om het leuk te houden.

Onbewust kan ik het loslaten.
Dus uit pure frustratie na veel zoeken en lezen programma opnieuw opgezet.
Voor mijn gevoel wel een stap verder want programma doet nu wat voor ogen heb.(onafhankelijk van elkaar)
Maar zodra ik programma's samen voeg gaat het weer fout.
Heb wel opzoek gegaan hoe ik programma moet samen voegen maar wat ik ook geprobeerd heb het is me (nog)niet glukt.
Heeft iemand nog een idee.

int pinPir1 = 2;
int pinPir2 = 7;
int led = 15;
int motionStatus = 0;
int pirState = 0;

void setup() {
Serial.begin(9600);
pinMode(pinPir1, INPUT);
pinMode(pinPir2, INPUT);
pinMode(led, OUTPUT);
}

void loop() {
/*/ ga van beneden naar boven(pinPir1)
motionStatus = digitalRead(pinPir1);
if (motionStatus == HIGH){
digitalWrite(led, HIGH);
if (pirState == LOW) {
Serial.println("beweging gedecteerd-1");
pirState = HIGH;
}
}
else {
digitalWrite(led, LOW);
if (pirState == HIGH){
Serial.println("einde beweging-1");
pirState = LOW;
}
}
}
*/
// van boven naar beneden(pinPin2)
motionStatus = digitalRead(pinPir2);
if (motionStatus == HIGH){
digitalWrite(led, HIGH);
if (pirState == LOW) {
Serial.println("beweging gedecteerd-2");
pirState = HIGH;
}
}
else {
digitalWrite(led, LOW);
if (pirState == HIGH) {
Serial.println("einde beweging-2");
pirState = LOW;
}
}
}

Ben weer een stap verder.
Heb tussen pir1 en pir2 een accolade verwijderd.
In mijn proef opstelling gaat led aan en bij beweging.
Alleen serial monitor zegt: beweging : gedecteerd-1 einde beweging-2
gedecteerd-2 einde beweging-1
Wat izie ik hier over het hoofd.

Kun je de huidige code (op de juiste manier) in je volgende antwoord zetten ?

Hier de code zoals het nu is.

int pinPir1 = 2;
int pinPir2 = 7;
int led = 15;
int motionStatus = 0;
int pirState = 0;

void setup() {
Serial.begin(9600);
pinMode(pinPir1, INPUT);
pinMode(pinPir2, INPUT);
}

void loop() {
// ga van beneden naar boven(pinPir1)
motionStatus = digitalRead(pinPir1);
if (motionStatus == HIGH){
digitalWrite(led, HIGH);
if (pirState == LOW) {
Serial.println("beweging gedecteerd-1");
pirState = HIGH;
}
}
else {
digitalWrite(led, LOW);
if (pirState == HIGH){
Serial.println("einde beweging-1");
pirState = LOW;
}
}

// van boven naar beneden(pinPin2)
motionStatus = digitalRead(pinPir2);
if (motionStatus == HIGH){
digitalWrite(led, HIGH);
if (pirState == LOW) {
Serial.println("beweging gedecteerd-2");
pirState = HIGH;
}
}
else {
digitalWrite(led, LOW);
if (pirState == HIGH) {
Serial.println("einde beweging-2");
pirState = LOW;
}
}
}

Heeft niemand idee(oplossing) waar ik fout in zoeken moet.

Niet zo lang je de sketch niet op de juiste manier weet te posten, tot die tijd kijk ik eigenlijk helemaal niet.

Vindt dit jammer om te lezen.
Zoals ik al eerder heb aangegeven ben ik niet zo bedreven in arduino.

Volgens mij is een forum om elkaar (op weg) helpen en om iemand(plat hollands gezegd) in een forum af te zeiken hoe dom die is.
Reageer dan gewoon niet.

O ja .

Vindt het fijn voor je dat je het beter weet dan andere mensen die wat minder kennis hebben .
Heb 50 jaar met mensen gewerkt/begeleid en op weg geholpen
Maar dit slaat voor mij alles.

Nee begrijp me niet verkeerd, en het heeft ook allemaal niet zo veel met 'arduino' te maken, maar een heel simpele manier van het posten van 'code'

zoals je al eerder gevraagd is. en zoals ook al is voor gedaan in reply #26

Het is ook niet heel erg moeilijk,
als eerste doe een ctrl-T in de IDE zodat alle 'indentaties' kloppen.

klik dan in je post eerst op het < code > knopje en kopieer je sketch vanuit de IDE en plak die dan op de regel tussen de drievoudige aanhalingstekens.

Je post ziet er dan voor andere lezers en voor je zelf veel overzichtelijker uit.

Ik probeer je te helpen met je hulp vraag, maar daarvoor is het nodig dat ik en anderen een beter overzicht hebben.

Het is ook hier beschreven in het 'sticky' als onderdeel van het nederlandse deel van het forum.

't Is geen kritiek, het is geen afzijken, het is ook geen verplichting, maar wel een advies, want met de manier zoals je tot nu toe de code post, kan ik amper wat en kan ik je dus niet helpen.

Hulp verlenen en hulp vragen zijn psychologisch 2 heel verschillende dingen, waarbij het bij het laatste ook wel echt nodig is om niet meteen in een reactie te gaan.