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);
}