Ошибка в коде
- Войдите на сайт для отправки комментариев
Сб, 10/04/2021 - 03:10
код:
#include <QuadDisplay2.h>
// номер аналогового пина потенциометра
#define POT_PIN A3
// номер цифрового пина пищалки
#define BUZZER_PIN 4
// номер цифрового пина кнопки
#define BUTTON_PIN 7
#define DIOD 6
// создаём объект класса QuadDisplay и передаём номер пина CS
QuadDisplay qd(10);
// переменная для подсчёта времени
unsigned long prevMillis = 0;
// переменная для хранения таймера
int reverseTimer;
int val;
int state;
int c;
void setup()
{
// инициализация дисплея
qd.begin();
// функция установки таймера
settingTimer();
}
void loop()
{
if (state == HIGH && c == 0) // нажали кнопку
{
c = 1;
}
if (state == LOW && c == 1) // отпустили кнопку
{
val = ++val;
if (val == 4)
{
val = 0;
}
c = 0;
}
if (val == 1) // Если мы кнопку 1 раз нажали и отпустили
// если время таймера не дошло до нуля и прошла 1 минута
if ((reverseTimer > 0) && ((millis() - prevMillis) > 60000)) {
// выводим значение на дисплей
qd.displayInt(--reverseTimer);
// запоминаем текущее время
prevMillis = millis();
// если таймер дошёл до нуля
if (reverseTimer == 0) {
// подаём звуковой сигнал и выводим «1324» на дисплей
qd.displayDigits(QD_1, QD_3, QD_2, QD_4);
digitalWrite(DIOD, HIGH);
delay(300);
digitalWrite(DIOD, LOW);
delay(100);
digitalWrite(DIOD, HIGH);
delay(300);
digitalWrite(DIOD, LOW);
delay(100);
digitalWrite(DIOD, HIGH);
delay(300);
digitalWrite(DIOD, LOW);
delay(100);
digitalWrite(DIOD, HIGH);
delay(300);
digitalWrite(DIOD, LOW);
delay(100);
digitalWrite(DIOD, HIGH);
delay(300);
digitalWrite(DIOD, LOW);
}
}
// если нажата кнопка
if (!digitalRead(BUTTON_PIN)) {
// выполняем настройку таймера
settingTimer();
}
}
// функция настройки таймера
void settingTimer()
{
// пока кнопка не нажата
while (digitalRead(BUTTON_PIN)) {
// считываем значения с потенциометра
reverseTimer = analogRead(A3);
// и выводим его на дисплей
qd.displayInt(reverseTimer);
delay(30);
}
}
if (val == 2) // Если мы кнопку 3 раз нажали и отпустили
{
{
// если время таймера не дошло до нуля и прошла 1 минута
if ((reverseTimer > 0) && ((millis() - prevMillis) > 60000)) {
// выводим значение на дисплей
qd.displayInt(--reverseTimer);
// запоминаем текущее время
prevMillis = millis();
// если таймер дошёл до нуля
if (reverseTimer == 0) {
// подаём звуковой сигнал и выводим «1324» на дисплей
qd.displayDigits(QD_1, QD_3, QD_2, QD_4);
tone(BUZZER_PIN, 1000, 200);
tone(BUZZER_PIN, 2000, 200);
tone(BUZZER_PIN, 3000, 200);
tone(BUZZER_PIN, 4000, 200);
tone(BUZZER_PIN, 5000, 200);
}
}
// если нажата кнопка
if (!digitalRead(BUTTON_PIN)) {
// подаём звуковой сигнал
tone(BUZZER_PIN, 500, 500);
delay(1000);
// выполняем настройку таймера
settingTimer();
}
}
// функция настройки таймера
void settingTimer()
{
// пока кнопка не нажата
while (digitalRead(BUTTON_PIN)) {
// считываем значения с потенциометра
reverseTimer = analogRead(A3);
// и выводим его на дисплей
qd.displayInt(reverseTimer);
delay(30);
}
// после нажатия кнопки, подаём звуковой сигнал
tone(BUZZER_PIN, 2000, 200);
delay(300);
tone(BUZZER_PIN, 3000, 200);
delay(300);
tone(BUZZER_PIN, 4000, 200);
}
}
пишет:
Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Плата:"Arduino Leonardo"
sketch_apr09a:92:1: error: expected unqualified-id before 'if'
if (val == 2) // Если мы кнопку 3 раз нажали и отпустили
^~
exit status 1
expected unqualified-id before 'if'
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Вообще-то по правилам форума код вставлять по другому надо...
А так , скобки , для начала ,посчитайте
стр.92-120 проверьте
одинаковое количество
Бывает...))
fvgdragon, В редакторе Arduino IDE клавиши Ctrl+T нажмите. Сразу станет видно, что со скобками полный бардак. Получились какие-то непонятные куски кода. Функций
void
settingTimer()
тоже вряд ли две штуки подразумевалось...и строка 034 какая-то некузявая.
В строке 091 - лишняя скобка. Собственно, компилятор так и пишет - проблема перед строкой 92
спасибо
пишет:
Вынеси эту функцию из loop()
fvgdragon - судя по коду, вы в нем просто не в зуб ногой. Что это за функция внутри луп в строке 32? Где у нее тело? Где фигурные скобки??
Это вы так "исправили" ошибки, что были в первом коде? - похоже, что вы даже примерно не представляете, зачем нужны эти цифрочки. буквочки. скобочки...
Помочь вам на вашем уровне развития просто невозможно, можно только написать все за вас. Идите в платный раздел и просите дописать вам код - тысячи за полторы, наверно, кого-то наймете.
А на форуме нефиг мозг людям выносить, сначала хоть чуть-чуть разберитесь сами.