Например TDA7294

Форум РадиоКот • Просмотр темы - Ардуино. Изменение значения переменной при нажатии кнопки.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс июл 27, 2025 22:16:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Ардуино. Изменение значения переменной при нажатии кнопки.
СообщениеДобавлено: Ср янв 22, 2025 19:10:36 
Родился
Аватар пользователя

Зарегистрирован: Сб дек 14, 2024 15:07:38
Сообщений: 13
Рейтинг сообщения: 0
Не так давно заинтересовался Ардуино, как подспорье новичку познакомиться с МК, тем более на высокоуровневом языке. Всем привет, кстати! Делал различные программы, даже игры, в основном в среде разработки GML. Могу малость программить. Понял, как зажечь светодиод, помигать, запрограммил ШИМ. Да вот не всё так просто оказалось с СИ, как говорилось.
Задумка такая. Для начала при нажатии на кнопку менять значение переменной. А от переменной зависит, будет ли выполняться условие.
Ко(Т)д:
Изображение
Если просто проверять уровень кнопки, всё работает. Но если выполнять условие при значении переменной, программа исполняется без нажатия кнопки, как будто переменная program всегда равна 1. Логики совсем нет :dont_know: Уже часов 5 перебираю и ищу варианты, но ничего. Пожалуйста, помогите понять данный момент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ардуино. Изменение значения переменной при нажатии кнопк
СообщениеДобавлено: Ср янв 22, 2025 19:14:48 
Друг Кота
Аватар пользователя

Карма: 40
Рейтинг сообщений: 608
Зарегистрирован: Вс янв 24, 2010 13:14:02
Сообщений: 4668
Откуда: Омск
Рейтинг сообщения: 0
А сбрасывать значение program кто будет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ардуино. Изменение значения переменной при нажатии кнопк
СообщениеДобавлено: Ср янв 22, 2025 19:31:13 
Сверлит текстолит когтями

Карма: 12
Рейтинг сообщений: 124
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1217
Рейтинг сообщения: 0
Если оформишь как положено (в текстовом виде, отступы, табуляция, пробелы), тогда можно и говорить дальше.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ардуино. Изменение значения переменной при нажатии кнопк
СообщениеДобавлено: Чт янв 23, 2025 08:01:20 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6998
Откуда: Сердце Пармы
Рейтинг сообщения: 2
Медали: 2
Получил миской по аватаре (2)
if (program=1) //посмотри на эту строчку внимательней

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ардуино. Изменение значения переменной при нажатии кнопк
СообщениеДобавлено: Пт янв 31, 2025 11:54:53 
Родился
Аватар пользователя

Зарегистрирован: Сб дек 14, 2024 15:07:38
Сообщений: 13
Рейтинг сообщения: 0
А сбрасывать значение program кто будет?

Да, сбрасываться будет (уже сбрасывается) как положено! Получилась китайская гирлянда с 8 режимами. Выполнено было в таком варианте, дабы не отвлекаться пока на остальное.
Если оформишь как положено (в текстовом виде, отступы, табуляция, пробелы), тогда можно и говорить дальше.

Осталась привычка от предыдущей среды программирования. Всегда оформлял так и лепил друг на друга, чтобы не растягивать визуально объём. Замечание понял.
if (program=1) //посмотри на эту строчку внимательней

Да, в этом и была проблема. В проверке, как понял случайно, нужно указывать двойное равенство. "If что-то true = тому-то..." До Ардуино в программах работало всё с одним равенством. А false или != оформлялся в штатном режиме. Какой занудный Си, а ещё высокоуровневым представился :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ардуино. Изменение значения переменной при нажатии кнопк
СообщениеДобавлено: Пт янв 31, 2025 12:27:56 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 6
Рейтинг сообщений: 57
Зарегистрирован: Вс мар 18, 2018 22:12:38
Сообщений: 189
Рейтинг сообщения: 0
Задумка такая. Для начала при нажатии на кнопку менять значение переменной. А от переменной зависит, будет ли выполняться условие.

из вашего описания практически ничего не понял
возможно вам поможет этот скетч
описание работы в комментарии к нему
Код:
 [code]
//!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!

//Для проверки работы используется кнопка, подключенная к A0 и "-"питания платы
//и светодиод на плате, который служит индикатором работы и в зависимости от варианта
//реализации платы будет или зажигаться на 3 секунды или наоборот тухнуть,
//как при подаче низкого уровня("-") на контакт A0 платы ардуино(кнопка нажата),
//так и при снятии этого сигнала (кнопка отпускается).
//Кнопка(контакт) подключает 0 вольт,  на ненажатой кнопке присутствует
//высокий уровень от встроенного "подтягивающего" резистора.
//При использовании других пинов ввода/вывода подставлять
//нужные обозначения только в строках #define !!!!!!
//Если необходимо убрать дребезг контактов - раскоментировать строку "delay(50)".

#define OUT_PIN 13      // номер вывода для вкл.исполнительного устройства равен 13

#define BUTTON1_PIN A0  // номер вывода для кнопки(сигнала) равен A0


boolean buttonState1;      // состояние кнопки
boolean buttonPrevState1;  // предыдущее состояние кнопки
boolean outState;         // состояние выхода

void setup() {
  pinMode(OUT_PIN, OUTPUT);        //определяем вывод 13 (исполнит. устр-во) как выход
 
  pinMode(BUTTON1_PIN, INPUT_PULLUP);//определяем вывод A0(кнопка или сигнал) как вход
 
  digitalWrite(OUT_PIN, LOW);     //устанавливаем выход в выключенное состояние
 
  buttonPrevState1 = HIGH;        //исходное состояние кнопки выключена
 

}
void loop() {

  buttonState1 = digitalRead(BUTTON1_PIN); //запис.сост.кнопки в переменную buttonState


  // delay(50);   //задержка на дребезг контактов

  if (buttonPrevState1 != buttonState1) // если состояние кнопки изменилось
 
  {
    outState = ! outState;            // инверсия состояния выхода
    digitalWrite(OUT_PIN, outState);  // включение выхода
    delay(3000);                       // на 3 секунды
    outState = ! outState;            // инверсия состояния выхода
    digitalWrite(OUT_PIN, outState);  //выключение выхода
  }
  buttonPrevState1 = buttonState1;    // предыдущее состояние кнопки = текущему
}
[code]

_________________
все гениальное просто. чем проще - тем надежнее


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Ардуино. Изменение значения переменной при нажатии кнопк
СообщениеДобавлено: Пт янв 31, 2025 12:38:51 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6998
Откуда: Сердце Пармы
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (2)
"If что-то true = тому-то..." До Ардуино в программах работало всё с одним равенством. А false или != оформлялся в штатном режиме.
Нифига не понял... :dont_know:

Одно "=" - это присвоение, в С можно в условие присвоение или какую нибудь другую операцию вписать, например if(x--){...}; //будет проверять что х!=0, затем декрементировать его, а затем (не)выполнять тело ветвления.

Есть рекомендация писать условие не (x==0) а (0==x), т.е константой вперёд, тогда, если равно забудешь - будет явная ошибка... но я ни разу не видел, чтоб этой рекомендации ктото следовал...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ардуино. Изменение значения переменной при нажатии кнопк
СообщениеДобавлено: Пт янв 31, 2025 15:39:07 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6039
Откуда: Minsk
Рейтинг сообщения: 0
Совершенно верно. Ни в одной из версий ( Arduino тут не при чём) Си в (if = ...) не выполняет сравнение - только присваивание. (Может, речь о других ЯП? Delphi, например?) Возможно, тут компилятор вообще выбрасывает сравнение - только присваивание и безусловный переход (интересно бы посмотреть листинг с кодом ). Ну вообще-то вменяемый компилятор в таком случае, как минимум, даёт warning: "Фигня тут у тебя, хлопче".
А что иногда работало - так это случайное сочетание условий, потому что неправильно в принципе.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ардуино. Изменение значения переменной при нажатии кнопк
СообщениеДобавлено: Пт янв 31, 2025 16:26:38 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Это ежли в IDE включена опция сообщения об ошибках.
По умолчанию она отключена - лапками надо самому уровень подсказок об ошибках выставить.
(файл -> настройки -> окошко "сообщения компилятора" выставить "ВСЕ")
8)
Да и в последних версиях (2.х.х) почему то встроенный оффлайн справочник по "референсу" удалили...
Весьма неплохой справочник для начинающего был.
Теперь его только при прямом доступе на сайте адуринки читать можно. (Или копию от старых версий IDE использовать).
:(


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot], Starichok51 и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y