niklas1
February 17, 2022, 9:58am
1
Hallo,
Ich verwende Arduino noch nicht ewig und hätte eine frage zu einem kleinen mini Projekt.
Hier der Code:
//RGB DEKLARIEREN
byte LED_R = 6;
byte LED_G = 5;
byte LED_B = 3;
//RGB ZEITEN DEKLARIEREN
unsigned long StartTimeLed = 0;
const long interval = 1000;
int Led_Set = 0;
void setup() {
pinMode(LED_B, OUTPUT); //BLAU VON RGB ERSTELLEN
pinMode(LED_G, OUTPUT); //GRÜN VON RGB ERSTELLEN
pinMode(LED_R, OUTPUT); //ROT VON RGB ERSTELLEN
Serial.begin(9600);
}
void loop() {
Blinken(1000, 200);
}
void LED_GELB() {
analogWrite(LED_G, 100);
analogWrite(LED_R, 100);
}
void LED_ROT() {
analogWrite(LED_R, 100);
}
void LED_AUS() {
analogWrite(LED_G, 0);
analogWrite(LED_R, 0);
analogWrite(LED_B, 0);
}
void Blinken(int Aus, int An) {
if (millis() - StartTimeLed >= Aus && Led_Set == 0) {
Serial.println("1");
StartTimeLed = millis();
LED_GELB();
Led_Set = 1;
}
if (millis() - StartTimeLed >= An && Led_Set == 1) {
Serial.println("2");
StartTimeLed = millis();
LED_AUS();
Led_Set = 0;
}
}
Ich würde gerne verschiedene Farben über die RGB LED blinken lassen. Das mit dem Blinken funktioniert schon, aber gibt es eine Möglichkeit die Farbe die blinkt über irgendein Eingabewert zu bestimmen?
L.g Niklas
noiasca
February 17, 2022, 10:33am
2
du übergibst ja schon 2 Parameter: Aus und An.
Du könntest da einfach noch 3 weitere Parameter ergänzen, für
rot
gruen
blau
und direkt die übergebenen Farben von 0..255 in analogWrite schreiben.
Anmerkung:
Variablen mit kleinem Buchstaben beginnen lassen.
Funktionsnamen mit kleinem Buchstaben beginnen lassen.
1 Like
Übergeben im Seriellen Monitor; RotZahl - Komma - GruenZahl - Komma - BlauZahl (z.B. 127,127,127)
//RGB DEKLARIEREN
byte LED_R = 6;
byte LED_G = 5;
byte LED_B = 3;
//RGB ZEITEN DEKLARIEREN
unsigned long StartTimeLed = 0;
const long interval = 1000;
int Led_Set = 0;
byte r, g, b, index;
char buf[12] = {'\0'};
void setup()
{
pinMode(LED_B, OUTPUT); //BLAU VON RGB ERSTELLEN
pinMode(LED_G, OUTPUT); //GRÜN VON RGB ERSTELLEN
pinMode(LED_R, OUTPUT); //ROT VON RGB ERSTELLEN
Serial.begin(9600);
r = 255;
g = 127;
b = 65;
}
void loop()
{
farbeLesen();
Blinken(1000, 200);
}
void farbeLesen()
{
if (Serial.available() > 0) // Es liegen Zeichen an
{
byte myByte = Serial.read(); // lese ein Zeichen
if (!isControl(myByte)) // kein Control-Zeichen
{
buf[index] = myByte; // nimm es in den Buffer auf
index++; // nächste Position
}
else
{
if (myByte == '\n') // Zeichen ist "NewLine"
{
r = atoi(strtok(buf, ",")); // Teile den Puffer an jedem Komma
g = atoi(strtok(NULL, ","));
b = atoi(strtok(NULL, ","));
memset(buf, 0, sizeof(buf));// lösche den Puffer
index = 0; // und fange an von vorn
}
}
}
}
/*
void LED_GELB() {
analogWrite(LED_G, 100);
analogWrite(LED_R, 100);
}
void LED_ROT() {
analogWrite(LED_R, 100);
}
*/
void LED(const byte rot, const byte gruen, const byte blau)
{
analogWrite(LED_G, gruen);
analogWrite(LED_R, rot);
analogWrite(LED_B, blau);
}
void Blinken(int Aus, int An)
{
if (millis() - StartTimeLed >= Aus && Led_Set == 0)
{
Serial.print(r); Serial.print(' ');
Serial.print(g); Serial.print(' ');
Serial.print(b); Serial.print(' ');
Serial.println("1");
StartTimeLed = millis();
LED(r, g, b);
Led_Set = 1;
}
if (millis() - StartTimeLed >= An && Led_Set == 1)
{
Serial.println("2");
StartTimeLed = millis();
LED(0, 0, 0);
Led_Set = 0;
}
}
Bitte schalte mal die Warnungen ein:
DATEI - VOREINSTELLUNGEN - Ausführliche Ausgabe während [x] Kompilierung
Und darunter Compiler-Warnungen: ALLE
1 Like
niklas1
February 19, 2022, 3:47pm
4
Entschuldigung für die späte Antwort und vielen dank für die Hilfe
niklas1
February 19, 2022, 3:49pm
5
Habe es so wie du gesagt hast gemacht und es Funktioniert danke
1 Like
system
Closed
August 18, 2022, 3:49pm
6
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.