Hallo zusammen und Frohe Weihnachten, Ich hab einen Wemos D1 mini (esp8266) mit Capacitive Soil Moisture Sensor am laufen funktioniert wunderbar. Nun bin ich auf ein Video bei Youtube gestossen wo ein LDE WS2812B 16 bit ring verwendet wird zur anzeige. Dachte ich mir das moechtest auch. Der POrogramm-Code wird zum Download bereit gestellt. Das problem ist das er bei mir nicht richtig funktioniert egal was ich mache. Wenn ich den Sensor in ein wasserglas stelle hat er vollen Ausschlag was er in der Konsole auch anzeigt denn mit den Werten lief er ja schon bei mir. Wenn der Wert (sensor im Glas) max hat dann sollen alle LED's angehen aber es gehen nur 8 an obwohl 16 definiert sind und wenn der wert min ist bleiben noch 1-2 an.
1 | #include <Adafruit_NeoPixel.h> //Einbinden der Adafruit Bibliothek (quasi der Werkzeugkasten um die LED anzusteuern) |
2 | |
3 | #define PIN 2 //Definiere PIN LED Anschluss
|
4 | #define NUMPIXELS 16 //Definiere Anzahl LEDs
|
5 | |
6 | const int sensorPin = A0; //Definiere PIN Sensor |
7 | float sensorValue; //Variable anlegen um Sensorwert später zu speichern |
8 | int ledanzahl = 0; //Variable anlegen um Anzahl der LEDs die leuchten sollen zu speichern |
9 | |
10 | Adafruit_NeoPixel led = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); //LED Ring Objekt anlegen |
11 | long green_color; //Variable für Farbe Grün |
12 | long black_color; //Variable für Farbe Schwarz |
13 | |
14 | void setup() { |
15 | Serial.begin(115200); //Starten des Seriellen Monitors mit gängiger Baudrate |
16 | led.begin(); //LED aktivieren (initialisieren) |
17 | }
|
18 | |
19 | void loop() { |
20 | sensorValue = analogRead(sensorPin); //Sensorwert auslesen Befehl für AD Wandler input |
21 | Serial.println(sensorValue); //Sensorwert im Seriellen Monitor anzeigen |
22 | |
23 | ledanzahl = sensorValue*(16/565.0); //Berechnen wie viele LEDs leuchten sollen |
24 | |
25 | delay(1000); //Warte eine Sekunde |
26 | |
27 | green_color = led.Color(0, 50, 0); //Grüne Farbe anlegen |
28 | black_color = led.Color(255, 0, 0); // Schwarze Farbe anlegen |
29 | |
30 | for (int i = 0; i < 16; i++) { //Schleife von 0 bis 15 (16-mal durchlaufen) |
31 | if(i < ledanzahl){ //Wenn dann Bedinngung, wenn i kleiner als die berechnete LED Anzahl ist, wird die LED auf Grün gesetzt |
32 | led.setPixelColor(i, green_color); //Setze die i-te LED auf Grün |
33 | }else{ |
34 | led.setPixelColor(i, black_color); //Wenn Bedinnung (oben) nicht erfüllt setze die i-te LED auf Schwarz |
35 | }
|
36 | }
|
37 | led.show(); //Lasse die LEDs in den Farben leuchten |
38 | |
39 | }
|
Hier der link zum Video: https://youtu.be/Fufts00WhvI Vielleicht weis jemand was da faul ist Gruss hitman47nl [Mod: C-Tags korrigiert]