Ошибка в коде

fvgdragon
Offline
Зарегистрирован: 10.04.2021

код:

#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'
 
 
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 

 

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Вообще-то по правилам форума код вставлять по другому надо...

А так , скобки , для начала ,посчитайте

fvgdragon
Offline
Зарегистрирован: 10.04.2021
#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);
}
}

 

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

стр.92-120  проверьте

fvgdragon
Offline
Зарегистрирован: 10.04.2021

одинаковое количество

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

Бывает...))

kalapanga
Offline
Зарегистрирован: 23.10.2016

fvgdragon, В редакторе Arduino IDE клавиши Ctrl+T нажмите. Сразу станет видно, что со скобками полный бардак. Получились какие-то непонятные куски кода. Функций void settingTimer() тоже вряд ли две штуки подразумевалось...

SLKH
Offline
Зарегистрирован: 17.08.2015

и строка 034 какая-то некузявая.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

В строке 091 - лишняя скобка. Собственно, компилятор так и пишет - проблема перед строкой 92

fvgdragon
Offline
Зарегистрирован: 10.04.2021

спасибо

 

fvgdragon
Offline
Зарегистрирован: 10.04.2021
#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);
      }
    }
}

 

fvgdragon
Offline
Зарегистрирован: 10.04.2021

пишет:

Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Плата:"Arduino Leonardo"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
C:\Users\admin\Documents\Arduino\sketch_apr12a\sketch_apr12a.ino: In function 'void setup()':
 
sketch_apr12a:27:3: error: 'settingTimer' was not declared in this scope
 
   settingTimer();
 
   ^~~~~~~~~~~~
 
C:\Users\admin\Documents\Arduino\sketch_apr12a\sketch_apr12a.ino:27:3: note: suggested alternative: 'reverseTimer'
 
   settingTimer();
 
   ^~~~~~~~~~~~
 
   reverseTimer
 
C:\Users\admin\Documents\Arduino\sketch_apr12a\sketch_apr12a.ino: In function 'void loop()':
 
sketch_apr12a:36:3: error: expected initializer before 'if'
 
   if (!digitalRead(BUTTON_PIN)) {
 
   ^~
 
sketch_apr12a:48:23: error: 'switchPin' was not declared in this scope
 
   state = digitalRead(switchPin);
 
                       ^~~~~~~~~
 
exit status 1
 
'settingTimer' was not declared in this scope
 
 
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 
BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Вынеси эту функцию из loop()

b707
Offline
Зарегистрирован: 26.05.2017

fvgdragon - судя по коду, вы в нем просто не в зуб ногой. Что это за функция внутри луп в строке 32? Где у нее тело? Где фигурные скобки??

Это вы так "исправили" ошибки, что были в первом коде? - похоже, что вы даже примерно не представляете, зачем нужны эти цифрочки. буквочки. скобочки...

Помочь вам на вашем уровне развития просто невозможно, можно только написать все за вас. Идите в платный раздел и просите дописать вам код - тысячи за полторы, наверно, кого-то наймете.

А на форуме нефиг мозг людям выносить, сначала хоть чуть-чуть разберитесь сами.