Arduino IDE – die besten Beiträge

Arduino Code funktioniert nicht?

IRremote und JoyStick funktionieren nicht

#include <SPI.h> // Bibliothek für SPI-Kommunikation

#include <Mirf.h> // Bibliothek für nRF24L01

#include <nRF24L01.h> // Treiber für nRF24L01

#include <MirfHardwareSpiDriver.h> // Hardware-SPI-Treiber für Mirf

#include <IRremote.h> // Bibliothek für IR-Kommunikation

// Pin-Definitionen

int receiver = 4; // Pin für den IR-Empfänger

const int SW = 2; // Pin für den Schalter

const int X = A0; // Analog-Pin für X-Achse

const int Y = A1; // Analog-Pin für Y-Achse

// Initialisierung des IR-Empfängers

IRrecv irrecv(receiver);

IRsend results;

uint32_t last_decodedRawData = 0; // Variable zum Speichern des letzten IR-Codes

// Funktion zur Verarbeitung des empfangenen IR-Codes

void translateIR() {

 if (irrecv.decodedIRData.flags) {

  // Wenn ein Wiederholungscode empfangen wird, den letzten empfangenen Code verwenden

  irrecv.decodedIRData.decodedRawData = last_decodedRawData;

 } else {

  // Den empfangenen Code im seriellen Monitor ausgeben

  Serial.print("Empfangener IR-Code: 0x");

  Serial.println(irrecv.decodedIRData.decodedRawData, HEX);

 }

}

// Setup-Funktion, die einmal beim Starten des Programms ausgeführt wird

void setup() {

 Serial.begin(9600); // Startet die serielle Kommunikation mit 9600 Baud

 irrecv.enableIRIn(); // Aktiviert den IR-Empfänger

 pinMode(SW, INPUT); // Setzt den Schalter-Pin als Eingang

 digitalWrite(SW, HIGH); // Aktiviert den Pull-up-Widerstand für den Schalter

 Mirf.cePin = 9; // Setzt den Chip Enable (CE) Pin für den nRF24L01

 Mirf.csnPin = 10; // Setzt den Chip Select Not (CSN) Pin für den nRF24L01

 Mirf.spi = &MirfHardwareSpi; // Setzt den SPI-Treiber für Mirf

 Mirf.init(); // Initialisiert den nRF24L01

 Mirf.setRADDR((byte *)"Sen01"); // Setzt die Adresse des Senders

 Mirf.payload = sizeof(unsigned int); // Setzt die Payload-Größe auf die Größe eines unsigned int

 Mirf.channel = 3; // Setzt den Kommunikationskanal auf 3

 Mirf.config(); // Konfiguriert den nRF24L01

}

unsigned int adata = 0; // Variable zum Speichern der zu sendenden Daten

// Hauptschleife, die kontinuierlich ausgeführt wird

void loop() {

 // Überprüfen, ob ein IR-Signal empfangen wurde

 if (irrecv.decode()) {

  translateIR(); // Verarbeitung des empfangenen IR-Codes

  irrecv.resume(); // Bereit zum Empfang des nächsten IR-Codes

 }

 // Lesen des Schalter- und Analogwerte

 int swValue = digitalRead(SW); // Lesen des Schalterzustands

 int xValue = analogRead(X); // Lesen des X-Achsen-Werts

 int yValue = analogRead(Y); // Lesen des Y-Achsen-Werts

 // Überprüfen der empfangenen IR-Codes und Setzen von adata entsprechend

 if (last_decodedRawData == 0xAD52FF00) {

  adata = 12006;

 } else if (last_decodedRawData == 0xBF40FF00) {

  adata = 12005;

 } else if (last_decodedRawData == 0xBC43FF00) {

  adata = 12004;

 } else if (last_decodedRawData == 0xBB44FF00) {

  adata = 12003;

 }

 // Überprüfen des Schalterwerts und Setzen von adata

 if (swValue == 0) {

  adata = 2103;

 }

 // Überprüfen der Analogwerte und Setzen von adata

 if (yValue < 1024 && yValue > 6 && xValue > 150 && xValue < 800) {

  adata = 213;

 } else if (yValue < 512 && yValue > -1 && xValue > 200 && xValue < 700) {

  adata = 312;

 } else if (xValue < 509 && xValue > -1 && yValue > 200 && yValue < 750) {

  adata = 231;

 } else if (xValue < 1024 && xValue > 515 && yValue > 450 && yValue < 750) {

  adata = 321;

 } else if (xValue < 514 && xValue > 510 && yValue < 511 && yValue > 507) {

  adata = 123;

 }

 // Senden der Daten über Mirf, wenn adata gesetzt wurde

 if (adata != 0) {

  byte data[Mirf.payload]; // Array zum Speichern der zu sendenden Daten

  data[0] = adata & 0xFF; // Niedriges Byte von adata

  data[1] = adata >> 8; // Hohes Byte von adata

  Mirf.setTADDR((byte *)"Rec01"); // Setzt die Adresse des Empfängers

  Mirf.send(data); // Sendet die Daten

  while (Mirf.isSending()) {} // Warten, bis das Senden abgeschlossen ist

  delay(20); // Kurze Pause, um das Senden zu beenden

  adata = 0; // Zurücksetzen von adata nach dem Senden

 }

}

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

Meistgelesene Beiträge zum Thema Arduino IDE