Der alte Code kann nicht erweitert bzw verwendet werden, Zugehörigkeiten haben sich geändert! Bitte beachten ggf anpassen!
Hilftext ist soweit im Code hinterlegt!
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN_links 6 //links
#define PIN_rechts 7 // rechts
#define NUMPIXELS 120
Adafruit_NeoPixel pixxels = Adafruit_NeoPixel(NUMPIXELS, PIN_links, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixxel = Adafruit_NeoPixel(NUMPIXELS, PIN_rechts, NEO_GRB + NEO_KHZ800);
const int bewegung_oben = 8; // PIR Oben
const int bewegung_unten = 9; // PIR Unten
const int lichtsensor = 10; // Lichtsensor
int bewegungsstatus_oben = 0; // Hilfsvariable
int bewegungsstatus_unten = 0; // Hilfsvariable
int lichtsensor_status = 0; // Hilfsvariable
int i = 0; // Hilfsvariable
bool running = false; // Läuft der Durchgang? Beim Starten auf false ( falsch ) setzen
long previousMillis = 0; // Setze Bisherige Millisekunden auf 0
long int pause = 20000; // Die Zeit bestimmt die haltezeit der LED bis diese zurück auf 0 geht.
int fadeingeschwindigkeit = 35; // Millisekunden für den Fadeeffekt beim Aufleuchten
int fadeoutgeschwindigkeit = 50; // Millisekunden für den Fadeeffekt beim Abdunkeln
void setup() {
pinMode(bewegung_oben, INPUT);
pinMode(bewegung_unten, INPUT);
pinMode(lichtsensor, INPUT);
Serial.begin(9600);
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
pixxels.begin();
pixxel.begin();
pixxel.show();
pixxels.show();
}
void loop() {
// Frage PIR und Lichtsensor ab ## ANFANG
bewegungsstatus_oben = digitalRead(bewegung_oben);
bewegungsstatus_unten = digitalRead(bewegung_unten);
lichtsensor_status = digitalRead(lichtsensor);
// Frage ab ## ENDE
// Module beide keine Bewegung erkannt, trotz Dunkelheit? Schalte die LED aus:
if(lichtsensor_status == HIGH and bewegungsstatus_oben == LOW and bewegungsstatus_unten == LOW) {
for (int i=0; i<120; i++) {
pixxels.setPixelColor(i, pixxels.Color(0,0,0));
pixxel.setPixelColor(i, pixxel.Color(0,0,0));
pixxel.show();
pixxels.show();
}
}
// ENDE
// Laut Lichtsensor ist es "hell" genug? Schalte die LED aus:
if(lichtsensor_status == LOW) {
for (int i=0; i<120; i++) {
pixxels.setPixelColor(i, pixxels.Color(0,0,0));
pixxel.setPixelColor(i, pixxel.Color(0,0,0));
pixxel.show();
pixxels.show();
}
}
// ENDE
//
if (bewegungsstatus_oben == LOW)
{
running = false;
}
if (bewegungsstatus_unten == LOW)
{
running = false;
}
// erst wenn running auf false steht und bewegung oben erkannt wurde ( Lichtsensor auf high) -> ( also wenig licht ) soll geschaltet werden
if (bewegungsstatus_oben == HIGH and bewegungsstatus_unten == LOW and lichtsensor_status == HIGH and running == false)
{
/*
Farbtabelle befindet sich hier: https://html-color-codes.info/webfarben_hexcodes/
Die ersten 2 Zeichen stehen für ROT,
Der zweite Satz von zwei Zeichen steht für GRÜN
Die letzten 2 Zeichen stehen für BLAU.
Wir müssen vor jedem Hex-Wert ein "0x" hinzufügen
("0x" bezeichnet einen Hexadezimalwert).
Beispiel:
Dieses "blau" ist 0101DF.
Die hexadezimalen Werte: Rot ist 01, Grün ist 01 und Blau ist DF.
*/
FadeInOut(0x33, 0xFF, 0x0A);
//nach dem Ablauf setze running auf true um ein erneutes sofortiges neustarten zu verhindern.
running = !running;
}
// erst wenn running auf false steht und bewegung unten erkannt wurde ( Lichtsensor auf high) -> ( also wenig licht ) soll geschaltet werden
if (bewegungsstatus_oben == LOW and bewegungsstatus_unten == HIGH and lichtsensor_status == HIGH and running == false)
{
/*
Farbtabelle befindet sich hier: https://html-color-codes.info/webfarben_hexcodes/
Die ersten 2 Zeichen stehen für ROT,
Der zweite Satz von zwei Zeichen steht für GRÜN
Die letzten 2 Zeichen stehen für BLAU.
Wir müssen vor jedem Hex-Wert ein "0x" hinzufügen
("0x" bezeichnet einen Hexadezimalwert).
Beispiel:
Dieses "blau" ist 0101DF.
Die hexadezimalen Werte: Rot ist 01, Grün ist 01 und Blau ist DF.
*/
FadeInOut(0x33, 0xFF, 0x0A);
//nach dem Ablauf setze running auf true um ein erneutes sofortiges neustarten zu verhindern.
running = !running;
}
} // LOOP ENDE
// Smoother fade in fade out
void FadeInOut(byte red, byte green, byte blue){
unsigned long currentMillis = millis(); // setze millis
float r, g, b;
for(int k = 0; k < 256; k=k+1) {
r = (k/256.0)*red;
g = (k/256.0)*green;
b = (k/256.0)*blue;
setAll(r,g,b);
showPIXXELs();
delay(fadeingeschwindigkeit);
}
// Pause wie definiert:
delay(pause);
//ENDE
for(int k = 255; k >= 0; k=k-2) {
r = (k/256.0)*red;
g = (k/256.0)*green;
b = (k/256.0)*blue;
setAll(r,g,b);
showPIXXELs();
delay(fadeoutgeschwindigkeit);
}
}
//Smoother fade in fade out ENDE
//WEITERE EFFEKTE: rennendes Licht
void RunningLights(byte red, byte green, byte blue, int WaveDelay) {
int Position=0;
for(int j=0; j<NUMPIXELS*2; j++)
{
Position++; // = 0; //Position + Rate;
for(int i=0; i<NUMPIXELS; i++) {
// sine wave, 3 offset waves make a rainbow!
//float level = sin(i+Position) * 127 + 128;
//setPixel(i,level,0,0);
//float level = sin(i+Position) * 127 + 128;
setPixel(i,((sin(i+Position) * 127 + 128)/255)*red,
((sin(i+Position) * 127 + 128)/255)*green,
((sin(i+Position) * 127 + 128)/255)*blue);
}
showPIXXELs();
delay(WaveDelay);
}
}
// ENDE
// EFFEKT: REGENBOGEN ANFANG
void rainbowCycle(int SpeedDelay) {
byte *c;
uint16_t i, j;
for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< NUMPIXELS; i++) {
c=Wheel(((i * 256 / NUMPIXELS) + j) & 255);
setPixel(i, *c, *(c+1), *(c+2));
}
showPIXXELs();
delay(SpeedDelay);
}
}
byte * Wheel(byte WheelPos) {
static byte c[3];
if(WheelPos < 85) {
c[0]=WheelPos * 3;
c[1]=255 - WheelPos * 3;
c[2]=0;
} else if(WheelPos < 170) {
WheelPos -= 85;
c[0]=255 - WheelPos * 3;
c[1]=0;
c[2]=WheelPos * 3;
} else {
WheelPos -= 170;
c[0]=0;
c[1]=WheelPos * 3;
c[2]=255 - WheelPos * 3;
}
return c;
}
//Regenbogen ENDE
void showPIXXELs() {
#ifdef ADAFRUIT_NEOPIXEL_H
pixxel.show();
pixxels.show();
#endif
}
void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
pixxel.setPixelColor(Pixel, pixxel.Color(red, green, blue)); // Beide LED Streifen aktivieren
pixxels.setPixelColor(Pixel, pixxels.Color(red, green, blue)); // Beide LED Streifen aktivieren
#endif
}
void setAll(byte red, byte green, byte blue) {
for(int i = 0; i < NUMPIXELS; i++ ) {
setPixel(i, red, green, blue);
}
showPIXXELs();
}
Die Effekte Rennendes Licht und Regenbogen werden wie folgt angesteuert:
REGENBOGEN, die ZAHL in den Klammern ist eine Pause, einfach mal mit spielen.
rainbowCycle(20); anstelle von: FadeInOut(0x33, 0xFF, 0x0A);
Rennendes Licht, Farbwerte wie oben Definiert eingeben, die ZAHL am Ende ist eine Pause, einfach probieren was einem Gefällt.
RunningLights(0x33,0xFF,0x0A, 50); anstelle von: FadeInOut(0x33, 0xFF, 0x0A);
Hi wollte nur mal sicher gehen und fragen die led’s
Werden extra mit Strom versorgt oder
Hallo Seyit,
die WS2812B LED müssen zwingend mit Strom von extern versorgt werden.
Wenn möglich sollten alle 2,5 Meter die Streifen neu mit Strom versorgt werden, da sonst ein zu höher Spannungsabfall vorliegt und die LED ab dieser Stelle dunkler werden.
Wichtig ist das die Streifen mit GND des Arduino verbunden ist. ( GND Netzteil : GND Arduino )
Grüße
Hi vielen Dank für die schnelle Antwort
Ich hab jetzt alles soweit verkabelt und installiert.
Die led’s leuchten
Aber irgendwie machen sie was sie wollen ich komme nicht weiter hab alles versucht ich denke ich hab nen fehler im Code.
Wenn es dir möglich ist könntest du dich mit mir in Verbindung setzten ich bekomme so langlam die kriese😄
Hallo Seyit,
hmm, das natürlich schade.
Kannst Du mir einen Schaltplan und den Sketch mal an folgende Adresse senden: p.vens-cappell@online,de ?
Ich schaue dann mal drüber, vielleicht fällt mir ja was auf.
Grüße
Hallo,
das Projekt sieht echt super aus!
Leider habe ich bei der Umsetzung ein Problem und zwar habe ich die AVR/POWER Library wie sie am Anfang included wird nicht installiert.
Kannst du mir sagen welche Libarary zu installieren ist?
Beste Grüße
Hallo,
vielen Dank.
Sollte es beim Kompilieren zu Problemen kommen wird versucht es auf einem nicht AVR ( UNO oder nano etc ) zu schreiben.
Sie können die Zeile auch löschen wenn Sie keinen AVR kompatiblem Controller verwenden.
Die Bibliothek ist speziell für diese Controller geschrieben und ist fester Bestandteil der Arduino Standard-Bibliotheken.
https://www.nongnu.org/avr-libc/user-manual/index.html
Sollte es unerwartet zu Problemen führen, melden Sie sich einfach bitte nochmal.
Grüße 🙂