Я работаю над проектом, в котором у меня есть ЖК-дисплей с текстом азбуки Морзе и зуммер для воспроизведения звуков в течение заданной продолжительности, а также ИК-приемник и пульт дистанционного управления в качестве входа для азбуки Морзе. Проблема в том, что в коде появляется ошибка о дублирующемся регистре в моем переключателе для значения 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
Переключатель с шестнадцатеричными кодами, дающий повторяющуюся ошибку регистра с помощью Arduino ⇐ C++
Программы на C++. Форум разработчиков
1762572183
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);
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79811917/switch-with-hex-codes-giving-duplicate-case-error-using-arduino[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия