silentbase_neopixel:programmversion_0.2
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
silentbase_neopixel:programmversion_0.2 [12.11.2016 18:06] – angelegt Frickelpiet | silentbase_neopixel:programmversion_0.2 [18.05.2023 12:16] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== NeoPixel-Beleuchtung für SilentBase 800 Programmversion 0.2 ====== | ====== NeoPixel-Beleuchtung für SilentBase 800 Programmversion 0.2 ====== | ||
+ | Eigenschaften: | ||
+ | ToDo: Mit dem Taster sollen verschiedene Beleuchtungseffekte ausgewählt werden können. | ||
+ | |||
+ | Der Sketch enthält Code von [[https:// | ||
+ | < | ||
+ | // Bibliotheken einbinden | ||
+ | #include < | ||
+ | |||
+ | |||
+ | // Definiert die Pins | ||
+ | #define tasterPin 7 // Taster | ||
+ | #define lastPin A0 // Spannungsteiler | ||
+ | #define neoPin1 11 // Neopixel-Strip rechte Seite | ||
+ | #define neoPin2 12 // Neopixel-Strip linke Seite | ||
+ | |||
+ | |||
+ | // Definiert die Variablen | ||
+ | int numPixels = 64; | ||
+ | int rlast; | ||
+ | int last; | ||
+ | int atem; | ||
+ | int taster = 1; | ||
+ | |||
+ | float counter = 0; | ||
+ | int i; | ||
+ | |||
+ | |||
+ | // Definiert die NeoPixel | ||
+ | Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(numPixels, | ||
+ | Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(numPixels, | ||
+ | |||
+ | |||
+ | // Definiert die globalen RGBW-Werte | ||
+ | byte r = 0; | ||
+ | byte g = 0; | ||
+ | byte b = 0; | ||
+ | byte w = 0; | ||
+ | |||
+ | |||
+ | // Definiert die Tracking-Variablen für die IF-Abfragen | ||
+ | unsigned long previousMillisNeoPixel = 0; | ||
+ | unsigned long previousMillisReadPins = 0; | ||
+ | |||
+ | |||
+ | // Definiert die Intervalle für die IF-Abfragen | ||
+ | int intervalNeoPixel = 50; | ||
+ | int intervalReadPins = 500; | ||
+ | |||
+ | |||
+ | void setup() { | ||
+ | // Initialisiere den Button-Pin | ||
+ | pinMode(tasterPin, | ||
+ | |||
+ | // Initialisiere die NeoPixel-Pins | ||
+ | pinMode(neoPin1, | ||
+ | pinMode(neoPin2, | ||
+ | |||
+ | // Initialisiere den analogen Pin | ||
+ | pinMode(lastPin, | ||
+ | |||
+ | // Initialisiere alle NeoPixels | ||
+ | strip1.begin(); | ||
+ | strip1.show(); | ||
+ | // | ||
+ | | ||
+ | strip2.begin(); | ||
+ | strip2.show(); | ||
+ | // | ||
+ | |||
+ | // Initialisiere die serialle Schnittstelle | ||
+ | Serial.begin(57600); | ||
+ | |||
+ | delay (2000); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // Aktuelle Zeit abfragen | ||
+ | unsigned long currentMillis = millis(); | ||
+ | |||
+ | |||
+ | // Abfrage der analogen und digitalen Eingänge | ||
+ | if ((unsigned long)(currentMillis - previousMillisReadPins) >= intervalReadPins) { | ||
+ | | ||
+ | // Auslesen des analogen Eingangs (Last Netzteil) | ||
+ | rlast = analogRead(lastPin); | ||
+ | |||
+ | // Auslesen der digitalen Eingangs (Taster) | ||
+ | taster = digitalRead(tasterPin); | ||
+ | |||
+ | // Berechnung der Netzteillast in Prozent | ||
+ | float rlastmin = 100; // Messwert bei minimaler Last | ||
+ | float rlastmax = 1023; // Messwert bei maximaler Last | ||
+ | last = 100 - ((rlastmax - rlast) / (rlastmax - rlastmin)) * 100; | ||
+ | |||
+ | // Berechnung der Atemgeschwindigkeit | ||
+ | atem = last/200; // Der Wert kann theoretisch zwischen 0 und 0,5 variieren und die Geschwindigkeit des Atemeffekts beschleunigen | ||
+ | | ||
+ | //Ausgabe der gemessenen Netzteillast an die sereille Schnittstelle | ||
+ | Serial.print(" | ||
+ | |||
+ | //Ausgabe der berechneten Netzteillast an die sereille Schnittstelle | ||
+ | Serial.print(" | ||
+ | |||
+ | // Ausgabe Zustand Taster | ||
+ | Serial.print(" | ||
+ | |||
+ | | ||
+ | //Speichere die aktuelle Zeit in die zughörige Variable | ||
+ | previousMillisReadPins = currentMillis; | ||
+ | } | ||
+ | |||
+ | |||
+ | // Steuerung der NeoPixel | ||
+ | if ((unsigned long)(currentMillis - previousMillisNeoPixel) >= intervalNeoPixel) { | ||
+ | |||
+ | |||
+ | // Ansteuerung der NeoPixel-Strips | ||
+ | counter = counter + (0.05 + atem); | ||
+ | if (counter >= 6.28) { | ||
+ | counter = 0; | ||
+ | } | ||
+ | // fade led mit counter | ||
+ | r = ((exp(sin(counter)) - 0.36787944) * 108.492061351); | ||
+ | | ||
+ | for (int i = 0; i < numPixels; i++) { | ||
+ | strip1.setPixelColor(i, | ||
+ | strip2.setPixelColor(i, | ||
+ | } | ||
+ | strip1.show(); | ||
+ | strip2.show(); | ||
+ | |||
+ | // | ||
+ | | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | Tags: #Arduino #NeoPixel |
silentbase_neopixel/programmversion_0.2.1478970362.txt.gz · Zuletzt geändert: 18.05.2023 09:09 (Externe Bearbeitung)