Arduino Uno – die besten Beiträge

Fehler bei Arduino-Programm (Arduino Uno)?

Mein Programm sollte eigentlich so funktionieren, dass beim drücken der einen Taste auf einer Fernbedienung der motorPin auf high gesetzt wird und der Motor sich eben dreht und bei einer anderen Taste der wieder aufhört. Die Tasten erkannt und sonst funktioniert auch alles, bis ich die Taste zum Einschalten vom Pin drücke. Der Pin schaltet sich auch an, aber danach wird im Serial Monitor nur noch

IR code:0x0
 other button   

angezeigt, ohne, dass überhaupt irgendwas gedrückt wird und der Pin lässt sich auch nicht mehr ausschalten. Wie fixe ich das?

das ist der Code:



#include "IRremote.h"

int receiver = 11; 
int motorPin = 6; 

IRrecv irrecv(receiver);   
uint32_t last_decodedRawData = 0;

void translateIR() 
{  
  if (irrecv.decodedIRData.flags)
  {
    irrecv.decodedIRData.decodedRawData = last_decodedRawData;
    Serial.println("REPEAT!");
  } else
  {
    Serial.print("IR code:0x");
    Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
  }
 
  switch (irrecv.decodedIRData.decodedRawData)
  {
    case 0xF807FF00: digitalWrite(6, HIGH);    break;
    case 0xF609FF00: digitalWrite(6, LOW);    break;

    default:
      Serial.println(" other button   ");
  }
  last_decodedRawData = irrecv.decodedIRData.decodedRawData;
  delay(500);
}


void setup() 
{
  Serial.begin(9600);
  Serial.println("IR Receiver Button Decode");
  irrecv.enableIRIn();
  pinMode(6, OUTPUT); 


}


void loop()  
{
  if (irrecv.decode()) 
  {
    translateIR();
    irrecv.resume();
  }
}
Arduino, C (Programmiersprache), Arduino Uno, Arduino IDE

Programmierung mit Arduino, Fehler?

Ich soll für die Schule einen Heißen Draht programmieren mit Arduino, dass bei der 1. und 2. Berührung ein grünes Licht an geht, und bei der Berührung ein Ton ertönt, bei der 3. Berührung ein gelbes Licht angeht und bei der Berührung ein Ton ertönt, bei der 4. Berührung ein Rotes Licht angeht und ein Ton ertönt bei der Berührung und ab der 5. Berührung ein das rote Licht an ist und der Ton durchgehend ertönt. Zudem soll ein Reset-Taster verbaut sein, der egal an welcher Stelle man ist, wieder das Spiel von Neu startet.

Das hätte ich bereits, nur leider klappt es noch nicht, kann mir jemand halfen

int LEDgr = 2;
int LEDge = 3;
int LEDro = 4; 
int Draht = 5;
int ton = 6;  
nt Reset = 7;
int x = 0;   
boolean Start1 = LOW; 
boolean Start2 = LOW;
void setup ()
{
     pinMode (LEDgr, OUTPUT);   
     pinMode (LEDge, OUTPUT);
     pinMode (LEDro, OUTPUT);
     pinMode (ton, OUTPUT);    
     pinMode (Draht, INPUT);  
     pinMode (Reset, INPUT);  
}
void loop() 
{
   if (digitalRead(Draht) == LOW)  
     {
       Start1 == HIGH; 
       }
   if (digitalRead(Draht)==LOW && (Start2 == LOW) && (Start1 ==HIGH)) 
     {
       x = x +1; 
       }
   if (digitalRead(Draht)==LOW&&(Start1 == HIGH))
     {
       Start2 == HIGH; 
     }
   if (digitalRead(Draht) == HIGH) 
     {
       Start2 == LOW; 
       }
   Start1 == LOW;   
   if (x<=2)  
     {
        digitalRead(LEDgr, HIGH) ;
digitalRead(Ton, HIGH);
       }
       else {
if (x == 3)    
      {
          digitalRead(LEDgr, LOW);
          digitalRead(LEDge,HIGH);
digitalRead(Ton, HIGH);
          
         }
       else {
      if (x == 4)     
     {
        digitalRead(LEDge, LOW);
        digitalRead(LEDro,HIGH); digitalRead(Ton, HIGH);
       }
       else {
     if (x >= 5)     
     {
        digitalRead(LEDro,HIGH);
        digitalRead(ton,HIGH); 
               }
             }
           }
         }
    if (digitalRead(Reset) == LOW)  
     {
       digitalWrite (LEDgr, LOW);
       digitalWrite (LEDge, LOW);
       digitalWrite (LEDro, LOW);
       digitalWrite (ton,LOW);
       x = 0; 
       } 
}
Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE

Warum wird Mein Datum auf dem LCD-Display nicht angezeigt?

Habe versucht das aktuelle datum auf einem LCD-Display anzeigen zu lassen.

Dazu wurde verwendet:
- Arduino Uno R3
- DS1307 Modul V03
- LCD1602 Modul
- 10k Poti
- Paar kabel
Mein Code:
#include <Wire.h>

#include <RTClib.h>

#include <LiquidCrystal.h>

RTC_DS3231 rtc;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7

void setup() {

  Serial.begin(9600);

  Wire.begin();

  lcd.begin(16, 2); // Initialisiere das LCD-Display

  if (!rtc.begin()) {

    Serial.println("RTC konnte nicht gefunden werden!");

    while (1);

  }

  if (rtc.lostPower()) {

    Serial.println("RTC hat die Zeit verloren, bitte die Uhrzeit neu einstellen!");

  }

  rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Uhrzeit beim Hochladen des Sketches einstellen

}

void loop() {

  DateTime now = rtc.now();

  // Lösche das Display und setze den Cursor an den Anfang

  lcd.clear();

  lcd.setCursor(0, 0);

  // Datum formatieren: YYYY/DD/MM

  lcd.print(now.year(), DEC);

  lcd.print('/');

  lcd.print(now.day(), DEC); // Tag vor Monat

  lcd.print('/');

  lcd.print(now.month(), DEC); // Monat vor Tag

  // Serielle Ausgabe für Überprüfungszwecke

  Serial.print(now.year(), DEC);

  Serial.print('/');

  Serial.print(now.day(), DEC); // Tag vor Monat

  Serial.print('/');

  Serial.print(now.month(), DEC); // Monat vor Tag

  Serial.println();

  delay(5000);

}
Das Poti ist dafür da um den Kontrast des Lcd modules richtig einzustellen. Mein Problem ist nun das ich auf dem Seriellen Monitor von dem Arduino Program das Datum korrekt angezeigt bekomme nur auf dem LCD Display nicht. Ich habe die komplette Verkabelung überprüft und die 5 Sekunden Delay Zeit habe ich so "hoch" gestellt weil ich gelesen habe das dass ei problem sein kann wenn der Arduino nicht genügend Zeit hat um das Programm zu verarbeiten. Auf dem LCD-Display wird nur ein Blauer Hintergrund angezeigt. Das Lcd display funktioniert aber in anderen Projekten einwandfrei (Habe das Hello World Programm von Lektion 22 nochmals gerade eben getestet und es hat funktioniert ohne mengel). Ich habe das DS1307 Modul V03 mit plus und minus angeschlossen und die anderen Beiden Pins (SDA und SCL) auch korrekt auf die beiden pins des arduinos angeschlossen (SDA und SCL). Hier noch ein schaltbild wie ich das LCD Display und das Poti angeschlossen habe:

Bitte um Hilfe weil ich ein wenig verzweifle😅.
Danke im vorraus!

Bild zum Beitrag
PC, Computer, Elektrik, Arduino, LCD-Display, Arduino Uno, Arduino IDE

Kann mir jemand erklären warum diese Arduino Schaltung nicht richtig funktioniert? bzw. die Taster?

Ich habe btw Natürlich die Kabel richtig verbunden falls das jemand fragt weil ich den arduino ausgelassen habe

Code:

const int Taster1 = 1;  // Pin für den ersten Taster
const int Taster2 = 2;  // Pin für den zweiten Taster
const int Taster3 = 3;  // Pin für den dritten Taster

const int helligkeitsreglerPin = A5;  // Pin für den Helligkeitsregler
const int numLEDs = 8;
const int AmpelLEDs = 2;

int LEDs1[numLEDs] = {6, 7, 8, 9, 10, 11, 12, 13};  // Pins für die LEDs
int LEDs2[numLEDs] = {12, 10, 9, 7, 13, 11, 8, 6};  // Another pattern
int LEDrot[AmpelLEDs] = {10, 11};
int LEDgelb[AmpelLEDs] = {9, 8};
int LEDgruen[AmpelLEDs] = {7, 6};

void setup() {
  for (int i = 0; i < numLEDs; i++) {
    pinMode(LEDs1[i], OUTPUT);
    pinMode(LEDs2[i], OUTPUT);
  }

  gleichzeitigBlinken(LEDs1, 12, 13);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 10, 11);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 9, 8);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 7, 6);
  delay(200);  // Warte 2 Sekunden
}

void loop() {
  if (digitalRead(Taster1) == HIGH) {
    Variation1(LEDs1);
    delay(1000);  // Entprellzeit
  }

  if (digitalRead(Taster2) == HIGH) {
    Variation2(LEDs2);
    delay(1000);  // Entprellzeit
  }

  if (digitalRead(Taster3) == HIGH) {
    ampelProgram(LEDrot, LEDgelb, LEDgruen);
    delay(1000);  // Entprellzeit
  }

  // Weitere Bedingungen für andere Programme hinzufügen, wenn nötig
}
void Variation1(int LEDs[]) {
  int brightness = analogRead(helligkeitsreglerPin) / 4;  // 0-1023 to 0-255
  for (int i = 0; i < numLEDs; i++) {
    analogWrite(LEDs[i], brightness);
    delay(200);                 // Beispiel: LED für 0,5 Sekunden einschalten
    analogWrite(LEDs[i], LOW);  // LED ausschalten
  }
}

void Variation2(int LEDs[]) {
  int brightness = analogRead(helligkeitsreglerPin) / 4;  // 0-1023 to 0-255
  for (int i = 0; i < numLEDs; i++) {
    analogWrite(LEDs[i], brightness);
    delay(200);                 // Beispiel: LED für 0,2 Sekunden einschalten
    analogWrite(LEDs[i], LOW);  // LED ausschalten
  }
}
void ampelProgram(int redLEDs[], int yellowLEDs[], int greenLEDs[]) {
  // Rote LEDs einschalten
  turnOnLEDs(redLEDs, AmpelLEDs);
  delay(200);  // Warte 2 Sekunden

  // Rote LEDs ausschalten
  turnOffLEDs(redLEDs, AmpelLEDs);

  // Gelbe LEDs einschalten
  turnOnLEDs(yellowLEDs, AmpelLEDs);
  delay(200);  // Warte 1 Sekunde

  // Gelbe LEDs ausschalten
  turnOffLEDs(yellowLEDs, AmpelLEDs);

  // Grüne LEDs einschalten
  turnOnLEDs(greenLEDs, AmpelLEDs);
  delay(200);  // Warte 2 Sekunden

  // Grüne LEDs ausschalten
  turnOffLEDs(greenLEDs, AmpelLEDs);
}

void turnOnLEDs(int leds[], int num) {
  for (int i = 0; i < num; i++) {
    analogWrite(leds[i], 255);  // Vollhelligkeit für die LEDs
  }
}

void turnOffLEDs(int leds[], int num) {
  for (int i = 0; i < num; i++) {
    analogWrite(leds[i], 0);  // LEDs ausschalten
  }
}

void gleichzeitigBlinken(int LEDs[], int pin1, int pin2) {
  for (int i = 0; i < numLEDs; i++) {
    if (i == pin1 || i == pin2) {
      digitalWrite(LEDs[i], HIGH);
    }
  }

  delay(200);  // Beispiel: LEDs für 1 Sekunde einschalten
  for (int i = 0; i < numLEDs; i++) {
    digitalWrite(LEDs[i], LOW);
  }
}
Bild zum Beitrag
Arduino, Code, Arduino Uno

Meistgelesene Beiträge zum Thema Arduino Uno