Arduino lcd i2c Frage?
Hi,
Ich bin sehr neu im Programmieren von Arduino und muss in der schule etwas programmieren. Mein Ziel ist es, über eine IR-Fernbedienung 1 RGB LED zu steuern und die Farbe, die ausgegeben wird auf einem LCD i2c anzeigen zu lassen. Wenn ich jetzt allerdings eine Farbe auswähle, blinkt der Text nur flackernd auf dem LCD. Kann mir jemand helfen?
Mein Drive link zum Code: https://drive.google.com/file/d/18DcU9yDqTCarIIGlDJCPadvPa7dlN1kO/view?usp=sharing
Fotos:
Sorry wenn es schlecht verkabelt ist.
PS: die Zweite LED ist nur für den Testzweck da. die kommt später weg
1 Antwort
kann deinen code grad nicht öffnen, häng ihn doch mal als .txt an. Das mit breadboard und jumper kabeln ist immer so ne sache. Oft gibt es wackler oder schlechte Verbindungen die zu Stromunterversorgungen führen oder instabilen Spannungen. Würde alles mal ordentlich verkabeln und die Kabelstrecken vor allem so kurz wie möglich halten da wir hier Spannungen von 3.3 und 5V haben. Lange Strecken geben da oft Probleme.
Das ist der Code. einfach ohne Kommentare
#include <LiquidCrystal.h>
#include <IRremote.h>
#include <LiquidCrystal_I2C.h> // Library for LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows
const byte IR_RECEIVE_PIN = 2;
int anaus = 0;
int Blue = 10;
int Red = 6;
int Green =9;
int p=1000;
int brightness1a = 150;
int brightness1b = 150;
int brightness1c = 150;
int dunkel = 0;
int farbwechsel = 0;
int RedB = 8;
int GreenB = 12;
int BlueB = 11;
int RedState = 0;
int button = 0;
int farbe = 0;
String colorstate = "2";
String color = "N/A";
String ir_code_public = "N/A";
#define Red 6
#define Green 9
#define Blue 10
#define MAX_INTENSITY 8
#define MIN_INTENSITY 0
#define MAX_TARGETCOLOR 7
void setup()
{
lcd.init();
lcd.backlight();
Serial.begin(115200);
Serial.println("IR Receive test");
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(Blue, OUTPUT);
pinMode(RedB, INPUT);
pinMode(GreenB, INPUT);
pinMode(BlueB, INPUT);
}
void loop()
{
Serial.println("colorstate: " + colorstate);
Serial.println(anaus);
lcd.clear();
lcd.setCursor(0, 0);
if (IrReceiver.decode())
{
String ir_code = String(IrReceiver.decodedIRData.command, HEX);
Serial.println(ir_code);
colorstate = String(IrReceiver.decodedIRData.command, HEX);
ir_code_public = ir_code;
}
if(colorstate == "3" && !anaus == 1) {
farbwechsel = 0;
anaus = 1;
analogWrite(Red, 255);
farbwechsel = 0;
lcd.print("ON");
delay(1000);
}
if(colorstate == "2") {
lcd.print("OFF");
delay(2000);
anaus = 0;
analogWrite(Red, 0);
analogWrite(Blue, 0);
analogWrite(Green, 0);
}
if(anaus == 1) {
colorstate = String(IrReceiver.decodedIRData.command, HEX);
if(colorstate == "4"){
farbwechsel = 0;
analogWrite(Red, 255);
analogWrite(Blue, 0);
analogWrite(Green, 0);
lcd.print("Rot");
colorstate = String(IrReceiver.decodedIRData.command, HEX);
delay(100);
farbwechsel = 0;
}
else if(colorstate == "6") {
farbwechsel = 0;
analogWrite(Blue, 255);
analogWrite(Green, 0);
analogWrite(Red, 0);
lcd.print("Blau");
colorstate = String(IrReceiver.decodedIRData.command, HEX);
delay(100);
}
else if(colorstate == "5") {
analogWrite(Green, 255);
analogWrite(Blue, 0);
analogWrite(Red, 0);
lcd.print("Gruen");
colorstate = String(IrReceiver.decodedIRData.command, HEX);
}
else if(colorstate == "7") {
analogWrite(Green, 255);
analogWrite(Blue, 255);
analogWrite(Red, 255);
lcd.print("Weiß");
colorstate = String(IrReceiver.decodedIRData.command, HEX);
}
if(ir_code_public == "2"){
farbwechsel = 0;
analogWrite(Red, 0);
analogWrite(Green, 0);
analogWrite(Blue, 0);
colorstate = String(IrReceiver.decodedIRData.command, HEX);
delay(100);
}
IrReceiver.resume();
}
}