#1 2024-01-18 01:35:25

Assduinshik
Учасник
Зареєстрований: 2024-01-18
Повідомлень: 4

Обрабатываем нажатие кнопки на примере зажигания светодиода

Доброго времени суток ардуинщики! Тема arduino для меня новая. Вопрос - ошибка в компиляции этого скетча:

const int LED=10;//Контакт 10 для подключения светодиода
const int BUTTON=2;//Контакт 2 для подключения кнопки
int tekButton = HIGH;//Переменная для сохранение текущего состояния кнопки
int prevButton = LOW;//Переменная для сохранения предыдущего состояния кнопки

boolean LedOn = false;//Текущее состояние светодиода(включен/выключен)
void setup()
  {
    //Сконфигурирувать контакт светодиода как выход
    pinMode(LED, OUTPUT);
    //Сконфигурирувать контакт кнопки как вход
    pinMode (BUTTON, INPUT);
  }
void loop()
{
  // поместите сюда свой основной код для многократного запуска:
tekButton=digitalRead(BUTTON);
if (tekButton == HIGH&&prevButton == LOW);
{
  //нажатие кнопки - изменить состояние светодиода
  ledOn=!ledOn;// инвертирувать значение состояния светодиода
digitalWrite(LED,ledOn);//изменить статус состояния светодиода
}
prevButton=tekButton;
}

Меня интересует не готовый ответ, а грамотное объяснение, в направлении понять, потому что хочется научиться. Потратил несколько дней на поправку данного скетча, менял знаки, слова - местами и не получилось исправить.
  Хочу разобраться с данным скетчем, помогите.

Неактивний

#2 2024-01-18 09:29:59

г0cть
Гість

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

Assduinshik пише:

Меня интересует  объяснение

Ну так компилятор сам все уже объяснил. Если не знаете аглицкого - вбиваете сообщение ошибки в переводчик и получаете:
"«ledOn» не был объявлен в этой области". Теперь смотрите где у вас объявлена переменная ledOn?

#3 2024-01-18 09:53:27

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 205

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

І чи обʼявлена вона взагалі. "LedOn"  і "ledOn" - зовсім різні ідентифікатори.

Неактивний

#4 2024-01-18 14:52:16

Assduinshik
Учасник
Зареєстрований: 2024-01-18
Повідомлень: 4

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

С переменной разобралась ошибка исчезла благодаря Вам, участникам форума!
Но при компиляции скетча кнопка не реагирует на включение и выключение светодиода, что здесь нужно сделать, ошибка не появляется. Проверил более 5-ти различных вариантов компилируя в самое железо Arduino UNO R3 уже нет идей. Это самый простой вариант скетча с изменениями:

const int LED=10;//Контакт 10 для подключения светодиода
const int BUTTON=2;//Контакт 2 для подключения кнопки
int tekButton = HIGH;//Переменная для сохранение текущего состояния кнопки
int prevButton = LOW;//Переменная для сохранения предыдущего состояния кнопки

boolean LedOn = false;//Текущее состояние светодиода(включен/выключен)
int ledOn;//Переменная для сохранения состояния светодиода
void setup()
  {
    //Сконфигурирувать контакт светодиода как выход
    pinMode(LED, OUTPUT);
    //Сконфигурирувать контакт кнопки как вход
    pinMode (BUTTON, INPUT);
  }
void loop()
{
  // поместите сюда свой основной код для многократного запуска:
tekButton=digitalRead(BUTTON);
if (tekButton == HIGH&&prevButton == LOW);
{
  //нажатие кнопки - изменить состояние светодиода
  ledOn=!ledOn;// инвертирувать значение состояния светодиода
digitalWrite(LED,ledOn);//изменить статус состояния светодиода
}
prevButton=tekButton;
}

Остання редакція Assduinshik (2024-01-18 14:53:59)

Неактивний

#5 2024-01-18 16:15:45

г0cть
Гість

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

А текущее состояние кнопки после отпускания кто сбрасывать будет?

#6 2024-01-18 16:17:22

г0cть
Гість

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

Обшибся - prev, а не текущее

#7 2024-01-18 16:50:03

г0cть
Гість

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

А вообще-то внимательно посмотрите на свою строчку if(tekButton ... ) Ничего не замечаете?

#8 2024-01-18 18:58:48

Assduinshik
Учасник
Зареєстрований: 2024-01-18
Повідомлень: 4

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

Благодарю - тебя  Г0сть (с Большой буквы) за помощь. Исправил – теперь первое нажатие кнопки включает светодиод и он постоянно светит, повторное нажатие кнопки отключает светодиод.
 
Так же, должно быть?
  if (tekButton == HIGH&&prevButton == LOW)
    ; что этот символ означает в программировании? Может есть источник где их можно научиться?

Ибо думал нажму на кнопку и пока кнопка нажата светодиод светится как отпускаю гаснет. Так как применял скетч из библиотеки, только при нажатии кнопки светодиод светился, при отпускании гас.
 
Я только вхожу в изучение программирования Arduino и не имею представления о знаках и символах, которые играют важную роль в программировании. Так как скетчи можно было бы скачивать через библиотеку, но тогда мало чему научусь, бывает что надо и в них искать ошибки.
  А это то, что мне было нужно, благодарю тебя Г0сть и удачи!
Однако есть продолжение скетча на эту тему, но еще не проверял, если что-то будет не ок, отпишусь!

Остання редакція Assduinshik (2024-01-18 18:59:41)

Неактивний

#9 2024-01-18 19:12:12

г0cть
Гість

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

Assduinshik пише:

Так же, должно быть?

Должно быть в соответствии с синтаксисом написания функции и операторов https://doc.arduino.ua/ru/prog/If

Assduinshik пише:

Может есть источник где их можно научиться?

В качестве шпаргалки можно использовать это https://doc.arduino.ua/ru/prog/
А вообще любой учебник по языку С или С++, например, https://aidigitalhealthhub.kpi.ua/~prat/edu/books/programming/c/1_K_R.pdf

#10 2024-01-18 19:50:33

Assduinshik
Учасник
Зареєстрований: 2024-01-18
Повідомлень: 4

Re: Обрабатываем нажатие кнопки на примере зажигания светодиода

Благодарю тебя Г0сть, за скорые ответы и помощь в учебе и в понимании, буду учиться.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму