Переключатель с шестнадцатеричными кодами, дающий повторяющуюся ошибку регистра с помощью ArduinoC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Переключатель с шестнадцатеричными кодами, дающий повторяющуюся ошибку регистра с помощью Arduino

Сообщение Anonymous »

Я работаю над проектом, в котором у меня есть ЖК-дисплей с текстом азбуки Морзе и зуммер для воспроизведения звуков в течение заданной продолжительности, а также ИК-приемник и пульт дистанционного управления в качестве входа для азбуки Морзе. Проблема в том, что в коде появляется ошибка о дублирующемся регистре в моем переключателе для значения IR. Я искал причины, по которым это могло произойти, но не нашел ничего, что можно было бы применить в этом случае. Я использую плату Arduino Uno R3.
#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);
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-arduino
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»