Ошибка в коде
- Войдите на сайт для отправки комментариев
Сб, 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'
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Вообще-то по правилам форума код вставлять по другому надо...
А так , скобки , для начала ,посчитайте
#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); } }стр.92-120 проверьте
одинаковое количество
Бывает...))
fvgdragon, В редакторе Arduino IDE клавиши Ctrl+T нажмите. Сразу станет видно, что со скобками полный бардак. Получились какие-то непонятные куски кода. Функций
voidsettingTimer()тоже вряд ли две штуки подразумевалось...и строка 034 какая-то некузявая.
В строке 091 - лишняя скобка. Собственно, компилятор так и пишет - проблема перед строкой 92
спасибо
#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() // функция настройки таймера { void settingTimer() // если нажата кнопка if (!digitalRead(BUTTON_PIN)) { // выполняем настройку таймера settingTimer(); // пока кнопка не нажата while (digitalRead(BUTTON_PIN)) { // считываем значения с потенциометра reverseTimer = analogRead(A3); // и выводим его на дисплей qd.displayInt(reverseTimer); delay(30); } } state = digitalRead(switchPin); if (state == HIGH && c == 0) // нажали кнопку { c = 1; } if (state == LOW && c == 1) // отпустили кнопку { val = ++val; if (val == 4) { val = 0; } c = 0; } if (val == 2) { // если время таймера не дошло до нуля и прошла 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 (val == 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 (val == 4) // если время таймера не дошло до нуля и прошла 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); 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); } } }пишет:
Вынеси эту функцию из loop()
fvgdragon - судя по коду, вы в нем просто не в зуб ногой. Что это за функция внутри луп в строке 32? Где у нее тело? Где фигурные скобки??
Это вы так "исправили" ошибки, что были в первом коде? - похоже, что вы даже примерно не представляете, зачем нужны эти цифрочки. буквочки. скобочки...
Помочь вам на вашем уровне развития просто невозможно, можно только написать все за вас. Идите в платный раздел и просите дописать вам код - тысячи за полторы, наверно, кого-то наймете.
А на форуме нефиг мозг людям выносить, сначала хоть чуть-чуть разберитесь сами.