Farbwerteund helligkeit von Neopixel mit drei Potis einstellen.

Hallo an alle.

Ich versuchte mit einem DigiSpark (Atiny85)
einen Neopixel-Ring (12 LEDs) als Kamera licht
über drei Potis einzustellen und gleichzeitig
über I2C auf einem LCD 1602 für die drei
Farbkanäle den wert anzuzeigen.

Pinbelegung am DigiSpark ist:

P0 = I2C SDA
P1 = DIn Neopixel- Ring (Spannungsversorgung über GND und VIN)
P2 = I2C SCL
P3 = für Blauen Kanal
P4 = für Grünen Kanal
P5 = für Roten Kanal

Die Anzeige der Werte auf dem LCD (erstellt
über Zufallszahl) für jede Farben Variable
Ist OK.
Auch die Ansteuerung des
Neopixel- Rings mit dem Beispiel Strandtest
ist OK.

Aber beim Ueberpruefen des Quelcodes
erhalte ich die Fehlermeldung

Arduino: 1.8.10 (Windows 10), Board: "Digispark (Default - 16.5mhz)"

Neo_Pixel_Leuchte:41:26: error: lvalue required as left operand of assignment

Red =(analogRead(pinRed) /= 4); //Die Spannung am Drehregler wird auslesen als Zahl zwischen 0 und 1023 und umgerechnet auf 0 - 255

^

Neo_Pixel_Leuchte:42:30: error: lvalue required as left operand of assignment

Green =(analogRead(pinGreen) /= 4); //Die Spannung am Drehregler wird auslesen als Zahl zwischen 0 und 1023 und umgerechnet auf 0 - 255

^

Neo_Pixel_Leuchte:43:28: error: lvalue required as left operand of assignment

Blue =(analogRead(pinBlue) /= 4); //Die Spannung am Drehregler wird auslesen als Zahl zwischen 0 und 1023 und umgerechnet auf 0 - 255

^

Mehrere Bibliotheken wurden für "Wire.h" gefunden
Benutzt: C:\Users\V.Selz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\Wire
Mehrere Bibliotheken wurden für "LiquidCrystal_I2C.h" gefunden
Benutzt: C:\Users\V.Selz\Documents\Arduino\libraries\LiquidCrystal_I2C
Nicht benutzt: C:\Users\V.Selz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkLCD
Mehrere Bibliotheken wurden für "Adafruit_NeoPixel.h" gefunden
Benutzt: C:\Users\V.Selz\Documents\Arduino\libraries\Adafruit_NeoPixel
Nicht benutzt: C:\Users\V.Selz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\Adafruit_NeoPixel
Bibliothek Wire im Ordner: C:\Users\V.Selz\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\Wire (legacy) wird verwendet
Bibliothek LiquidCrystal_I2C in Version 1.1.2 im Ordner: C:\Users\V.Selz\Documents\Arduino\libraries\LiquidCrystal_I2C wird verwendet
Bibliothek Adafruit_NeoPixel in Version 1.3.4 im Ordner: C:\Users\V.Selz\Documents\Arduino\libraries\Adafruit_NeoPixel wird verwendet
exit status 1
lvalue required as left operand of assignment

Wenn ich die Zeilen mit dem XXXXX =(analogRead(pinXXXX) /= 4);
als Komentarzeilen deklariere gibt es keine Fehlermeldung.

Meine Frage ist: Muss ich erst die Pins auslesen und dann umrechnen?
und kann ich die Variablen im Befehl " strip.setPixelColor(n, red, green, blue);"
verwenden.

Danke für die Antworten.

#include <Wire.h> // Wire Bibliothek einbinden
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden
LiquidCrystal_I2C lcd(0x27, 16, 2); //Hier wird festgelegt um was für einen Display es sich handelt. In diesem Fall eines mit 16 Zeichen in 2 Zeilen und der HEX-Adresse 0x27. Für ein vierzeiliges I2C-LCD verwendet man den Code "LiquidCrystal_I2C lcd(0x27, 20, 4)" 

int pinRed= 5; //Das Wort „pinRed“ steht jetzt für den Wert „P5“
int pinGreen= 4; //Das Wort „pin“ steht jetzt für den Wert „P4“
int pinBlue= 3; //Das Wort „pin“ steht jetzt für den Wert „P3“
int Red= 0; //Das Wort „Red“ steht jetzt für den Wert „0“
int Green= 0; //Das Wort „Green“ steht jetzt für den Wert „0“
int Blue= 0; //Das Wort „Blue“ steht jetzt für den Wert „0“   

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

int i=0;

#define PIN 1 // Hier wird angegeben, an welchem digitalen Pin die WS2812 LEDs bzw. NeoPixel angeschlossen sind
#define NUMPIXELS 12 // Hier wird die Anzahl der angeschlossenen WS2812 LEDs bzw. NeoPixel angegeben

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(12, 1, NEO_GRB + NEO_KHZ800);


void setup() 
{
lcd.init(); //Im Setup wird der LCD gestartet 
lcd.backlight(); //Hintergrundbeleuchtung einschalten (lcd.noBacklight(); schaltet die Beleuchtung aus).
lcd.setCursor(0,0);//Hier wird die Position des ersten Zeichens fuer Rot festgelegt. In diesem Fall bedeutet (1,0) das erste Zeichen in der ersten Zeile.
lcd.print("Red");//Farbe Rot
lcd.setCursor(4,0);//Hier wird die Position des ersten Zeichens fuer Gruen festgelegt. In diesem Fall bedeutet (4,0) das erste Zeichen in der ersten Zeile.
lcd.print("Green");//Farbe Gruen
lcd.setCursor(10,0);//Hier wird die Position des ersten Zeichens fuer Blau festgelegt. In diesem Fall bedeutet (10,0) das erste Zeichen in der ersten Zeile.
lcd.print("Blue");//Farbe Blau

pixels.begin(); // Initialisierung der NeoPixel
}

void loop() 
{ 
Red =(analogRead(pinRed) /= 4); //Die Spannung am Drehregler wird auslesen als Zahl zwischen 0 und 1023 und umgerechnet auf 0 - 255
Green =(analogRead(pinGreen) /= 4); //Die Spannung am Drehregler wird auslesen als Zahl zwischen 0 und 1023 und umgerechnet auf 0 - 255
Blue =(analogRead(pinBlue) /= 4); //Die Spannung am Drehregler wird auslesen als Zahl zwischen 0 und 1023 und umgerechnet auf 0 - 255
lcd.setCursor(0, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile. 
lcd.print(Red);
lcd.setCursor(4, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile. 
lcd.print(Green);
lcd.setCursor(10, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile. 
lcd.print(Blue);
pixels.setPixelColor(i, pixels.Color(Red,Green,Blue)); // Pixel leuchtet in der Farbe Grün
pixels.show(); // Durchführen der Pixel-Ansteuerung

Red = random(0, 255);
Green = random(0, 255);
Blue = random(0, 255);
delay(500);
}

Du kannst analogRead(x) keinen Wert zuiweisen, was Du aber mit /= versuchst. Nur / wäre besser.

Gruß Tommy

Danke Tommy

Programm läuft sauber durch.

Der Fehler sitzt ja meistens zwichen den Ohren
wie auch hier. :slight_smile:

Doppelpost gelöscht.
Grüße Uwe

Gibt dafür übrigens auch die Map-Funktion, wenn es mal mit /4 nicht genau aufgeht:
Map-Funktion

Grüße, Benni