Hallo Community,
ich bin gerade dabei eine Treppenbeleuchtung zu machen.
Verwendet wurden dazu ein Arduino Uno, 3m WS2812B, ein 5V 8A Led-Netzteil und 2 PIR-Sensoren (AMN31112J Panasonic 3 - 6 V/DC (Ø) 10 mm).
Beim Data-Output habe ich einen Widerstand (470 Ohm) zwischengelötet.
Dazu habe ich folgenden Sketch geschrieben:
#include <FastLED.h>
#include <SPI.h>
#include <SD.h>
#define NUM_LEDS 92
#define DATA_PIN 6
#define CHIPSET WS2812B
#define CMD_NEW_DATA 1
#define COLOR_ORDER GRB
uint8_t max_bright = 80;
File fxdata;
CRGB leds[NUM_LEDS];
//Sensor 1 & 2 definieren
// constants won't change. They're used here to set pin numbers:
const int sensor_oben = 9;
const int sensor_unten = 11; // the number of the pushbutton pin
void setup() {
// put your setup code here, to run once:
FastLED.addLeds<CHIPSET, DATA_PIN>(leds, NUM_LEDS); //see doc for different LED strips
// initialize the pushbutton pin as an input:
pinMode(DATA_PIN, OUTPUT);
pinMode(sensor_oben, INPUT_PULLUP);
pinMode(sensor_oben, INPUT_PULLUP);
digitalWrite(sensor_oben, LOW);
digitalWrite(sensor_unten, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
readSensors(); // read the state of the pushbutton value:
moveup();
movedown();
}
void readSensors(){
if ( digitalRead(sensor_oben) == HIGH ){ // Walk Down.
movedown();
} else if ( digitalRead(sensor_unten) == HIGH ){ // Walk Up.
moveup();
}
}
void moveup(){
for(int i=0;i<NUM_LEDS;i++){ // Licht wird von unten nach oben EIN geschaltet
leds[i].setRGB(255,255,255);
FastLED.show();
delay(50);
}
delay(10000);
for(int i=NUM_LEDS; i>0;i--){
leds[i].setRGB(0,0,0);
FastLED.show();
delay(100);
}
}
void movedown(){
for(int i=NUM_LEDS;i>0;i--){ // Licht wird von unten nach oben EIN geschaltet
leds[i].setRGB(255,255,255);
FastLED.show();
delay(50);
}
delay(10000);
for(int i=0; i<NUM_LEDS; i++){
leds[i].setRGB(0,0,0);
FastLED.show();
delay(100);
}
}
Soweit so gut, ich weiß, dass ist kein gutes Programm und ich sollte es mit millis() machen, aber ich möchte gerne, dass zumindest übergangsmäßig ein Programm läuft. Weiters wollte ich gerne die Sensoren und LED’s damit testen.
Nun zu meinem Problem. Die PIR Sensoren senden anscheinend ununterbrochen “HIGH”. Ich denke, dass die PIR Sensoren einen Pullup Widerstand benötigen oder? Ich habe ja mit input_pullup den internen Pullupwiderstand aktiviert? Ist es möglich, dass nur bestimmte Pins den internen Widerstand haben? Wen ja welche?
Oder brauche ich für die Panasonic PIR Sensoren eine spezielle Schaltung?
Ich weiß, das ist eher ein Elektronikproblem, aber ich denke hier sind viele schlaue Köpfe vertreten, deswegen hoffe ich hier um Antworten
Danke!!