Wechseln Sie mit Hex-Codes, die bei Verwendung von Arduino einen doppelten Fallfehler verursachenC++

Programme in C++. Entwicklerforum
Anonymous
 Wechseln Sie mit Hex-Codes, die bei Verwendung von Arduino einen doppelten Fallfehler verursachen

Post by Anonymous »

Ich arbeite an einem Projekt, bei dem ich einen LCD-Displaytext mit Morsecode und einen Summer habe, um die Töne für eine festgelegte Dauer abzuspielen, und ich einen IR-Empfänger und eine Fernbedienung als Eingang für den Morsecode habe. Das Problem ist, dass ich im Code eine Fehlermeldung über einen doppelten Fall in meinem Schalter für den IR-Wert erhalte. Ich habe nach Gründen gesucht, warum dies passieren könnte, habe aber nichts gefunden, was in diesem Fall anwendbar wäre.

Code: Select all

#include 
#include 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define dot 0xE916FF00 // Button 0
#define line 0xF30CFF00 // Button 1
#define space 0xE718FF00 // Button 2
#define del 0xBB44FF00 // Rewind button
#define play 0xBF40FF00 // Play/pause button

String morse = "";
String morse2 = "";

const int buzzer = 6;

bool dotA = false;
bool lineA = false;
bool spaceA = false;
bool delA = false;
bool playA = false;

void dotF();
void lineF();
void spaceF();
void delF();
void playF();

void setup() {
pinMode(buzzer, OUTPUT);

lcd.begin(16, 2);
IrReceiver.begin(10, ENABLE_LED_FEEDBACK);

Serial.begin(9600);
}

void loop() {
lcd.setCursor(0, 0);
if(morse.length() >= 16) {
lcd.print(morse);
lcd.setCursor(0, 1);
lcd.print(morse2);
} else if (morse.length() < 16) {
lcd.print(morse);
}

if (IrReceiver.decode()) {
switch (IrReceiver.decodedIRData.command) {
case dot:
dotF();
break;

case line:
lineF();
break;

case space:
spaceF();
break;

case del:
delF();
break;

case play:
playF();
break;
}
}
}

void dotF() {
if (!dotA) {
lcd.clear();

if (morse.length() < 16) {
morse = morse + ".";
} else {
morse2 = morse2 + "."
}

dotA = true;
} else {
dotA = false;
}
delay(50);
}

void lineF() {
if (!lineA) {
lcd.clear();

if (morse.length() < 16) {
morse = morse + "-";
} else {
morse2 = morse2 + "-";
}

lineA = true;
} else {
lineA = false;
}
delay(50);
}

void spaceF() {
if (!spaceA) {
lcd.clear();

if (morse.length() < 16) {
morse = morse + " ";
} else {
morse2 = morse2 + " ";
}

spaceA = true;
} else {
spaceA = false;
}
delay(50);
}

void delF() {
if (!delA) {
lcd.clear();

if (morse.length() < 16) {
morse.remove(morse.length());
} else {
morse2.remove(morse2.length());
}

delA = true;
} else {
delA = false;
}
}

void playF() {
String fullMorse = morse + morse2;

for (int i = 0; i < fullMorse.length(); i++) {
if (fullMorse.charAt(i) == '.') {
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(50);
} else if (fullMorse.charAt(i) == '-') {
digitalWrite(buzzer, HIGH);
delay(250);
digitalWrite(buzzer, LOW);
delay(50);
} else if (fullMorse.charAt(i) == ' ') {
delay(500);
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post