Официальный сайт компании Arduino по адресу arduino.cc
Новичок, первый скетч,вопросы
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 14/09/2016 - 23:25
Доброго времени суток.
Весной узнал об ардуино..Очень заинтересовало.
Купил на АЛИ стартовый набор,изучаю...
Пытаюсь изобрести первый скетч.
Задача - при определенном количестве нажатий на кнопку включать сетодиод.
Скетч кое как "собрал" без ошибок ( Я про verify) Но он не работает.
Подскажите в чём проблема пожалуйста.
int switchPin = 10; int ledPin = 13; int clicks = 0; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(switchPin) == HIGH) clicks == (clicks + 1); delay (50); if (clicks == 10) digitalWrite(ledPin, HIGH); delay(500); digitalWrite(switchPin, LOW); }
почитайте
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...
там по кнопкам много чего полезного узнаете
читал, помогло кое в чём...
Но дальше дело не идёт
clicks = (clicks + 1);
clicks++;
clicks++;
и, как он с этого поймёт, где начудил?
Согласен, но он там много где начудил. Например забыл расставить фигурные скобки после if и обнулить clicks после потухания светодиода.
ElectroMAN, с таким кодом светодиод загорится только один раз на 0,5 сек после нажатия и удержания кнопки около 5 сек. Без удержания кнопки Вы не поймаете момент опроса кнопки контроллером. Потому что, когда выполняется delay() контроллер ничего не делает, опрос кнопки не происходит.
Согласен, но он там много где начудил. Например забыл расставить фигурные скобки после if и обнулить clicks после потухания светодиода.
фигня - пусть ресетом тушит светодиод.
Да ладно вам глумиться. Нет бы помочь.
Попробуйте прогнать вот этот код:
Я его не проверял, просто записал свои соображения в коментариях.
Да ладно вам глумиться. Нет бы помочь.
я помог - проблема не в коде, а в том, что чел плавает в синтаксисе и ему нужно просто просмотреть простые примеры из Программирование, прежде чем начать писать свои оригинальные грабли.
Я его не проверял, просто записал свои соображения в коментариях.
а, его никто не будет проверять - пользоваться этим будет невозможно, делаи ТС выбесят.
*если желается хардкора без делаев и с аппаратным фильтром дребезга - ставим конденсатор 0.1 мкФ параллельно кнопке. вполне себе рабочая балалайка #61 - юзалась по всякому и сбоях замечена не была.
Там тех дилеев и нет считай. Сложно представить, что оно кого-то может подвинуть к нервному припадку.
Там тех дилеев и нет считай. Сложно представить, что оно кого-то может подвинуть к нервному припадку.
то я невнимательно посмотрел - думал, что следующее нажатие через полсекунды
Попробуйте прогнать вот этот код:
+1 к карме. Всё чётенько и понятно.
Даже не задумывался о существовании такой конструкции:
Для начинающего проще
Тоже, как с кнопкой повезет. Встречается такая трясучка, что и 0.1мкф не помогает. Лично мне нравится стопудовый алгоритм дибаунса из "Debouncing guide", где состояние кнопки тупо запихивается в переменную через сдвиг:
Блок отчеркнутый линиями выполняется с постоянной переодичностью, например по переполнению нулевого таймера. тогда восемь бит key_state станут иметь одинаковое значение только после того, как 8/490 секунд кнопка пребывает в одном и том же состоянии, т.е. дребезг прекратился 16мс тому назад.
Тоже, как с кнопкой повезет. Встречается такая трясучка, что и 0.1мкф не помогает.
ну, и какие проблемы? если у тебя не кнопка, а генератор шума, то ставь 10 мкФ. :D
Да лучше сделать так, чтобы вообще никакой кондер был не нужен. Алгоритм приведенный выше это позволяет.
И прошу прощения, код в сообщении #13 содержит досадную опечатку (писал его прямо здесь)
строка 11 должна выглядеть так:
В первом условии был пропущен "=".
Ого.
Не ожидал такого кроличества помощи.
ВСЕМ спасибо, вечером опробую.
Да лучше сделать так, чтобы вообще никакой кондер был не нужен. Алгоритм приведенный выше это позволяет.
что позволяет? у тебя же кнопка шумит постоянно, а не 16мс, которые конденсатор 0,1 мкФ нормально фильтрует.
Даже не задумывался о существовании такой конструкции:
if (++clicks == 10)
Чтобы не писать длинное clicks = clicks +1, придумали инкремент. Есть префиксная форма (++clicks) и постфиксная форма (clicks++). Ну и такой же декремент.
а еще перфиксный и постфиксный вариант работают по разному =)
if (++clicks == 10) <- 10 нажатий
if (clicks++ == 10) <- 11 нажатий
Ну предполагалось, что интересующиеся сами почитают в чём между ними разница, поэтому не стал подробно расписывать. Даже в википедии всё написано.
Код из сообщения №8 "прогнал" на столе. Всё отлично работает. Спасибо
Теперь хочу внедрить ещё две кнопки, для регулировки времени включения сетодиода....
буду пробовавть сам.
Всем доброго дня, это мой первый опыт работы с Ардуино и задачу мне сразу глобальную поставили, хотя для кого то это мелочь
необходимо проектирование и
изготовление устройства на фотоэлементах, которое позволяет отсчитывать количество
прохождений "флажка".
Данное устройство будет использоваться в подъемнике для маломобильных групп
граждан.
На подъемном устройстве имеется 2 лебедки (суммарной мощностью около 1,5 кВт)
соединенные валом, устройство предполагается расположить между этими лебедками
таким образом, чтобы оно отсчитывало количество оборотов данного вала.
Грузоподъемность подъемника - 250 кг., скорость вращения вала около 1500 об/мин,
временной диапазон составляет около 2-х минут, таким образом речь об отсчете, примерно,
3000 оборотов.
Важная составляющая - наличие кнопки, задающей начальное значение (нулевое), т.е.
основа применения, состоит в том, чтобы в процессе эксплуатации подъемного
оборудования можно было в ручном режиме поднять (опустить) платформу до
определенной отметки, после чего задать нулевое значение устройства, после чего
изменить высоту (в большую или меньшую сторону) и так же зафиксировать параметр
(фактическое количество оборотов вала), после чего подъемник, при помощи данного
устройства должен осуществлять остановки на высотах, заданных в ручном режиме
(исходя из отсчитанного количества оборотов)
Я сразу решил заменить фотоэлемент на датчик Холла, в нашем радиомагазине нашёл датчик с цифровым выходом и на руках
подарок жены стартовый набор с ардуино Мега, схему электронику я соберу без проблем подскажите где найти скетч
для работы с таким датчиком холла
подскажите где найти скетч для работы с таким датчиком холла
То есть Вы перерыли весь Интернет и так и не нашли ни одного примера работы Ардуино с датчиком Холла ?
Мне сложно в это поверить.
P.S. Респект и уважение Вашей жене.
Скорее ROTOR001 получил подготовку разведчика. Если даже его будут пытать об изделии ,которое он предложил , ничего не скажет. Потому что он представление не имеет как это устройство работает.
Скорее мотором надо управлять, причем по часовой, против часовой и стоп. Так что надо два пина (Motop_plus_pin), (Motop_minus_pin). Так же 4 (четыре) кнопки . Первая ВВЕРХ (btm_Up_pin), вторая ВНИЗ(btm_DOWN_pin). Это если инвалид будет управлять платфомой. Верх - платформа поехала ввех, Вниз - платформа поехала вниз. Ну и конечно Кнопка фиксации позиции 1 верхнее положение и кнопка фиксации позиции 2 (нижнее положение). То есть нажимая и удерживая кнопку ПОЗИЦИЯ 1 или ПОЗИЦИЯ 2 кнопками ВВЕРХ и ВНИЗ можно установить нужную позицию положения. Вопрос в другом. Как не сделать верхнюю позицию внизу, и на оборот. Такой защиты от дурака. Или же та позиция что выше верхняя и подымать надо нажав ВВЕPX.
ПС: ROTOR001 не нашел, только потому что не знал что искать.
ПС: ROTOR001 не нашел, только потому что не знал что искать.
в точку по другому и не скажешь, это первый опыт работы с ардуино образование на уровне ламповых телевизоров, сейчас неплохо бы понять как ардуино обрабатывает еденичку с датчика хола и хотя бы заставить светить светодиод при поднесении магнита, что для этого прописывать
Вы бы еще спросили, как работает микропереключатель. Датчик Хола это +5В, земля и сигнальный 0 или 1 . Подключаете к ардуине как кнопку.
http://amperka.ru/product/troyka-hall-sensor там правда его как аналоговый подключили.
сейчас неплохо бы понять как ардуино обрабатывает еденичку с датчика хола и хотя бы заставить светить светодиод при поднесении магнита, что для этого прописывать
Состояние пина считывается через digitalRead(). Дальше выполняем нужные действия по условию if(), if()..else
Единичка считывается как HIGH, ноль LOW.
Спасибо Жека М это то что я хотел услышать, буду сидеть учиться