Programma arduino traplooplicht

Alleen berichten met de trefwoorden “breadboard” worden getoond. Alle berichten tonen

Beste CO,
Sommige weten al iets over de hardware die ik heb gemaakt voor het looplicht. Nu ik toch even aan het wachten ben op de materialen ben ik alvast begonnen met wat prullen op mijn breadboard en arduino

Project: Het is een traploop licht dat per trede om de zo veel seconde aan gaat afhankelijk van welke kant je komt.

Ik heb 2 sensoren 1 boven, 1 onder aan de trap. Ik heb 13 trap tredes Ik heb een 74HC595 schuifregister gebruikt omdat ik 1 io te weinig had. maar deze kunnen we even weglaten in het programma want mijn test opstelling heb ik gemaakt met 2 drukknoppen ( sensoren ) en 5 ledjes

Doel: Als de persoon van de begane grond naar de 1ste verdieping detecteerd sensor 1 de persoon en zal de leds om de 250ms van onder naar boven aan laten gaan ( ben er al achter gekomen, flade gaat niet omdat niet alle uitgangen PWM zijn ). Komt de persoon vervolgens langs sensor 2 dan moeten de leds OOK van onder naar boven uitgaan om de 1500ms, Stel sensor 1 is gedetecteerd maar sensor 2 is na 1 minuut nog niet gedetecteerd moet en de leds om de 100ms automatisch uitgaan.

Komt de persoon van de 1ste verdieping en gaat naar de begane grond zal de sensor 2 als eerste detecteren en zullen de leds van boven naar onder om de 250ms aangaan. vervolgens komt de persoon dus langs sensor 1 en zullen de leds van boven naar onder uitgaan om de 1500ms Stel sensor 2 is gedetecteerd maar sensor 1 is na 1 minuut nog niet gedetecteerd moet en de leds om de 100ms automatisch uitgaan.

Ik heb wat zitten proberen met het programma het werkt in het eerste zicht wel maar als ik niks doe dan gaat hij de leds automatisch uit doen.

Programma is niet heel professioneel geschreven :P

c code:

int button1Pin = 2;  
int button2Pin = 3;
int led1Pin =  8; 
int led2Pin =  7;
int led3Pin =  6;
int led4Pin =  5;
int led5Pin =  4;


void setup() {
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  pinMode(led4Pin, OUTPUT);
  pinMode(led5Pin, OUTPUT);
}

void loop()   { if(digitalRead(button2Pin) == HIGH)
  {
  digitalWrite(led1Pin, HIGH);
  delay(250);
  digitalWrite(led2Pin, HIGH);
  delay(250);
  digitalWrite(led3Pin, HIGH);
  delay(250);
  digitalWrite(led4Pin, HIGH);
  delay(250);
  digitalWrite(led5Pin, HIGH);

if (digitalRead(button1Pin) == HIGH)
  
  digitalWrite(led1Pin, LOW);
  delay(1500);
  digitalWrite(led2Pin, LOW);
  delay(1500);
  digitalWrite(led3Pin, LOW);
  delay(1500);
  digitalWrite(led4Pin, LOW);
  delay(1500);
  digitalWrite(led5Pin, LOW);
  }
  
    if(digitalRead(button1Pin) == HIGH)
  {
  digitalWrite(led5Pin, HIGH);
  delay(250);
  digitalWrite(led4Pin, HIGH);
  delay(250);
  digitalWrite(led3Pin, HIGH);
  delay(250);
  digitalWrite(led2Pin, HIGH);
  delay(250);
  digitalWrite(led1Pin, HIGH);
  
  if (digitalRead(button2Pin) == HIGH)
  
  digitalWrite(led5Pin, LOW);
  delay(1500);
  digitalWrite(led4Pin, LOW);
  delay(1500);
  digitalWrite(led3Pin, LOW);
  delay(1500);
  digitalWrite(led2Pin, LOW);
  delay(1500);
  digitalWrite(led1Pin, LOW);
  
  }

}

[Bericht gewijzigd door Sjoerd K op woensdag 27 maart 2013 01:24:39 (32%)

Hey jeroen,

Bedankt voor dat stukje code je hebt me er enorm me geholpen. Ik ben al een stuk verder gekomen ik heb je programma wat aangepast

werking:
drukknop 2 = sensor 1ste verdieping
drukknop 1 = sensor beganegrond

als drukknop 2 gemeld en drukknop 1 ook dan gebeurt er niks. als drukknop 2 als eerste gemeld word gaan de leds van boven naar onder snel aan en als vervolgens drukknop 1 gemeld is gaan de leds van boven naar onder langzaam uit.

als ik drukknop 1 als eerste meld gaan de leds van onder naar boven snel aan en vervolgens als drukknop 2 gemeld is gaan de leds van onder naar boven langzaam uit

Dingen waar ik nog aan moet werken:
als ik drukknop 1 meld en hem in blijf houden gaan de leds dus snel van onder naar boven aan en gaan dan direct van boven naar onder langzaam uit, het zelfde is als ik het bij drukknop 2 doe. Op mijn breadboard heb ik nu drukknoppen genomen maar straks worden het 2 PIR sensoren ik kan deze instellen als de pir sensor gemeld is dat de output van de pir gedurende tijd hoog blijft of dat de output van de pir alleen hoog blijft zolang er gedetecteerd word.

vervolgens moet ik nog instellen als er 1 minuut niks is gemeld dat de leds dan uitgaan

c code:

void loop(){ 
 if(digitalRead(button2Pin) == HIGH && digitalRead(button1Pin) == LOW && digitalRead(led1Pin) == LOW){
    for (int i = 8; i>=4; i--){  
      digitalWrite(i, HIGH);
      delay(150);
    }
  } 
 
   if(digitalRead(button1Pin) == HIGH && digitalRead(button2Pin) == LOW && digitalRead(led5Pin) == HIGH){
    for (int i = 8; i>=4; i--){  
      digitalWrite(i, LOW);
      delay(1500);
    }
  } 
  
   if(digitalRead(button1Pin) == HIGH && digitalRead(button2Pin) == LOW && digitalRead(led5Pin) == LOW){
    for (int i = 4; i<=8; i++){  
      digitalWrite(i, HIGH);
      delay(150);
    }
  } 
 
   if(digitalRead(button2Pin) == HIGH && digitalRead(button1Pin) == LOW && digitalRead(led1Pin) == HIGH){
    for (int i = 4; i<=8; i++){  
      digitalWrite(i, LOW);
      delay(1500);
    }
  }
}

Met dat probleempje van dat als ik de drukknop inhield dat hij aan ging en direct weer uitging had ik aan gedacht om het met lastbutton satement te doen uit dit filmpje https://www.youtube.com/watch?v=_LCCGFSMOr4&list=ECA567CE235D39FA8… rond de 12 minuten heeft hij het over een lampje aan en uit maken met 1 drukknop

maar het lukt me niet om het in het programma in te voegen.

[Bericht gewijzigd door Henry S. op woensdag 27 maart 2013 21:38:48 (8%)