Help gevraagd voor 2 pirs met Adafruit LEDstrip

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 10
Geregistreerd: 15 Sep 2017, 08:18

Help gevraagd voor 2 pirs met Adafruit LEDstrip

Berichtdoor Buddy73 » 30 Okt 2017, 23:10

Wie kan me helpen??

Heb onderstaande code gemaakt om doormiddel van 2 mini-pirs een LEDstrip aan te sturen...
De komt boven aan de trap en de ander boven aan de trap...
Ergens doe ik iets fout maar zie door de bomen het bos niet meer......

Code: Alles selecteren
#include <Adafruit_NeoPixel.h>
#define PIN 11    // ledstrip op pin 11
#define NUM_LEDS 60
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
int motion_up = 2;      // sensor motion up op pin 2
int motion_down  = 4;     // sensor motion down op pin 4
int state1 = LOW;
int state2 = LOW;
int val1 = 0;
int val2 = 0;
int RightToLeft(0xff, 250, 250, 3, 50, 10);    // 0,0,8,10,50 standaard  kleur 1 en 2 aanpassen, 3 aantal leds, 4 loopsnelheid, 5 returnloop aanpassen
int LefToRight(0xff, 250,250, 3, 50, 10);      // 0,0,8,10,50 standaard  kleur 1 en 2 aanpassen, 3 aantal leds, 4 loopsnelheid, 5 returnloop aanpassen


void setup () {
  pinMode (motion_up, INPUT);
  pinMode (motion_down, INPUT);
  strip.begin ();
  strip.show(); // Initialize all pixels to 'off'
  //  serial.begin(9600);
}

void loop () {

   val1 = digitalRead (motion_up);
  if (val1 == HIGH);
  {
    // serial.println(“upstairs is high”);
    if (state1 == LOW);
    {
      state1 = HIGH;
    }

  void RightToLeft(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {

      for (int i = 0; i < NUM_LEDS - EyeSize - 8; i++) { // -2 standaard

        setAll(0, 0, 0); // standaard 0
        setPixel(i, red / 10, green / 10, blue / 10);
        for (int j = 1; j <= EyeSize; j++) {
          setPixel(i + j, red, green, blue);
        }
        setPixel(i + EyeSize + 1, red / 10, green / 10, blue / 10);
        showStrip();
        delay(SpeedDelay);
      }
      delay(ReturnDelay);
    }

    val2 = digitalRead (motion_down);
    if (val2 == HIGH);
    {
      //Serial.println(“downstairs is high”);
      if (state2 == LOW);
      {
        state2 = HIGH;
      }
      void LeftToRight(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
        for (int i = NUM_LEDS - EyeSize - 2; i > 0; i--) {
          setAll(0, 0, 0);
          setPixel(i, red / 10, green / 10, blue / 10);
          for (int j = 1; j <= EyeSize; j++) {
            setPixel(i + j, red, green, blue);
          }
          setPixel(i + EyeSize + 1, red / 10, green / 10, blue / 10);
          showStrip();
          delay(SpeedDelay);
        }
        delay(ReturnDelay);
      }
       {
        else {                                                                                  // no motion = no lights or animate til off
          digitalWrite (motion - up, LOW);                                                      //turning motion pins low, doesnt seem to make a difference either.
          digitalWrite (motiondown, LOW);
          //colorWipe (strip.Color(0, 0, 0), 30);
          strip.show();
        }
      void showStrip() {
#ifdef ADAFRUIT_NEOPIXEL_H
        // NeoPixel
        strip.show();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
        // FastLED
        FastLED.show();
#endif
      }

      void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
        // NeoPixel
        strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
        // FastLED
        leds[Pixel].r = red;
        leds[Pixel].g = green;
        leds[Pixel].b = blue;
#endif
      }
      void setAll(byte red, byte green, byte blue) {
        for (int i = 0; i < NUM_LEDS; i++ ) {
          setPixel(i, red, green, blue);
        }
        showStrip();
      }
     
      }






:shock: :shock:

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Help gevraagd voor 2 pirs met Adafruit LEDstrip

Berichtdoor Koepel » 31 Okt 2017, 00:08

Heb je er een StateChangeDetection in zitten ? Heb je iets als voorbeeld gebruikt ?

De StateChangeDetection is dit: https://www.arduino.cc/en/Tutorial/StateChangeDetection.
Het vergelijkt de huidige state met de vorige state. Zo detecteer je of de PIR sensor aktief wordt op dat moment. Dat ene moment is belangrijk om iets in gang te zetten :geek:

Wanneer je een functie maakt, zoals "void RightToLeft()", dan zet je die buiten de loop(), op hetzelfde niveau als setup() en loop().
Als je die functies buiten de loop() hebt gezet, kijk dan eens naar de text layout en werk dat netjes bij. Zet hier en daar wat commentaar er bij. Als de tekst van de code duidelijk is, dan is het beter leesbaar en is ook beter te begrijpen wat de code doet en waar een eventuele fout zit. Dus je maakt het niet netjes voor mij, maar voor jezelf.

Achter een if-statement hoort geen ';', want die sluit af. Dat is een lege regel. Er staat dan: "als conditie waar is, doe dan niets".
Het gaat op deze manier:
cpp code
// if-statement met enkele instructieregel
if (state1 == LOW)
Say("Hellow!");
else
Say("Hi!");

// if-statement met pakket van code tussen '{' en '}'.
if (state1 == LOW)
{
Say("Hellow!");
i = 100;
Beep();
}
else
{
Say("Hi!");
i = 99;
Turn();
}


Kun je een keuze maken tussen deze twee stijlen?
cpp code
// Haakjes onder elkaar
if (state1 == LOW)
{
state1 = HIGH;
}

// Haakjes compacter
if (state1 == LOW) {
state1 = HIGH;
}
Doordat je nu twee stijlen hebt, moet ik mijn hersenen in twee splitsen en parallel gaan ontleden. Dan willen er wel eens neuronen botsen :shock:

Je kunt hier eens naar kijken, en als je tijd hebt kun je alle bladzijden van dat onderwerp eens doorscrollen: http://arduinoforum.nl/viewtopic.php?f=8&t=2523&start=10#p19337.
Wanneer je dat onderwerp hebt gelezen, dan begrijp je misschien dat ik mezelf afvraag hoe lang het duurt voor je opgeeft :cry:

Berichten: 10
Geregistreerd: 15 Sep 2017, 08:18

Re: Help gevraagd voor 2 pirs met Adafruit LEDstrip

Berichtdoor Buddy73 » 31 Okt 2017, 21:08

Heb geprobeerd het een en ander wat beter weer te geven....

hoop dat dit wat meer duidelijkheid geeft, en hopenlijk snap ik de StateChangeDetection....??? of zie ik toch nog iets over het hoofd??
cpp code
/* Testopstelling met Adafruit NEOPixel en 2 pirs 
voor trapverlichting aan te sturen als een looplicht
het licht zal van beneden naar boven lopen en omgekeerd
Gebruik gemaakt van de code van NEWKITT,
en gebruik gemaakt van de [StateChangeDetection]
*/

# include<Adafruit_NeoPixel.h>
# define Pin 11 //Ledstrip op pin 11
# define NUM_LEDS 60 // Aantal leds in de Ledstrip
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)


Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

Const int motion_up = 2; // sensor motion up op pin 2 en is een vaste waarde
Const int motion_down = 4; // sensor motion down op pin 4 en is een vaste waarde
int state1 = LOW; // status sensor up LOW beginwaarde
int val1 = 0; // waarde van de sensor motion up
int lastval1 = 0; // laatste waarde sensor motion up
int state2 = LOW; // status sensor down LOW beginwaarde
int val2 = 0; // waarde van de sensor motion down
int lastval2 = 0; // laatste waarde sensor motion up

void setup () {
pinMode (motion_up, INPUT); // geeft aan de motion up sensor een input
pinMode (motion_down, INPUT); // geeft aan de motion down sensor een input
strip.begin ();
strip.show(); // Initialiseer alle pixels naar 'off'
serial.begin(9600);
}

void loop () {
NewKITT(0xff, 250, 250, 3, 50, 10); // 0,0,8,10,50 standaard kleur 1 en 2 aanpassen, 3 aantal leds, 4 loopsnelheid, 5 returnloop aanpassen
void NewKITT(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay){
RightToLeft(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
LeftToRight(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
}
val1 = digitalRead (motion_up);
if (val1 ! = lastval1){
if (val1 == HIGH) // als de laatste waarde van de sensor hoog was
{
serial.println(“upstairs is high”);
if (state1 == LOW){
state1 = HIGH;
}
void LeftToRight(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
for(int i = 0; i < NUM_LEDS-EyeSize-8; i++){ // -2 standaard
setAll(0,0,0); // standaard 0
setPixel(i, red/10, green/10, blue/10);
for(int j = 1; j <= EyeSize; j++);{

setPixel(i+j, red, green, blue);
}
setPixel(i+EyeSize+1, red/10, green/10, blue/10);
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
}

val2 = digitalRead (motion_down);
if (val2 ! = lastval2){
if (val2 == HIGH)
{
serial.println(“downstairs is high”);
if (state2 == LOW)
{
state2 = HIGH;
}
void RightToLeft(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
for(int i = NUM_LEDS-EyeSize-2; i > 0; i--) {
setAll(0,0,0);
setPixel(i, red/10, green/10, blue/10);
for(int j = 1; j <= EyeSize; j++){
setPixel(i+j, red, green, blue);
}
setPixel(i+EyeSize+1, red/10, green/10, blue/10);
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
}
void showStrip() {

void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}
void setAll(byte red, byte green, byte blue) {
for(int i = 0; i < NUM_LEDS; i++ ){
setPixel(i, red, green, blue);
}
showStrip();
}
Else { // no motion = no lights or animate til off
digitalWrite (motion_up, LOW); //turning motion pins low, doesnt seem to make a difference either.
digitalWrite (motion_down, LOW);
//colorWipe (strip.Color(0, 0, 0), 30);
strip.show();
}
}


Kan iemand eens kijken???

Berichten: 10
Geregistreerd: 15 Sep 2017, 08:18

Re: Help gevraagd voor 2 pirs met Adafruit LEDstrip

Berichtdoor Buddy73 » 31 Okt 2017, 21:14

Zal trouwens in Fritzing proberen een opstelling te tekenen en deze hier nog bijplaatsen.....

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten