Использование аналоговых входов в качестве цифровых
- Войдите на сайт для отправки комментариев
Чт, 07/02/2019 - 11:16
Подскажите, пожалуйста, будет ли применима функция digitalRead к аналоговым портам при использовании их в качестве цифровых?
Подразумеваем Атмегу328, верно?
Тогда ответ - к портам A0-A5 да, применимо. Порты A6 A7 - только аналоговый вход.
Да, Атмега 328. Ардуино UNO. Кнопки управления подключены к А2 и А3. Спасибо, попробую.
Работает, спасибо.
Но задача для меня намного сложнее. Необходимо написать часть программы, которая работала бы следующим образом. Имеются две кнопки управления, допустим A и B, при нажатии и удерживании любой из которых сначала появляется сигнал на выходе С, а потом с определенной задержкой на выходе, связанном с соответствующей кнопкой. При отпускании картина обратная. Сначала снимается управляющий сигнал, а потом с задержкой сигнал на выходе С.
И какое отношение имеет эта задача к использованию аналоговых входов?
И какое отношение имеет эта задача к использованию аналоговых входов?
Согласен, напрямую не имеет. Просто так устроено железо, что кнопки управления подключены к аналоговым портам А2 и А3. Может перенести ее в новую тему?
Ну и используйте их как цифровые. digitalRead(16);
Ну а как споймали кнопку, начинается совсем другая история.
Ну и используйте их как цифровые. digitalRead(16);
Ну а как споймали кнопку, начинается совсем другая история.
Стоит ли начинать? Боюсь вместо помощи начнется такой же флуд. Ответ я получил во втором посте. Ветку можно закрывать.
Стоит ли начинать? Боюсь вместо помощи начнется такой же флуд.
Стоит ли начинать? Боюсь вместо помощи начнется такой же флуд.
Флуд начинается на риторические вопросы. Когда пишут код и спрашивают, почему неверно работает, бывают и нормальные ответы. Но начало головной темы, все-же прочтите.
Необходимо написать часть программы. Имеются две кнопки управления, допустим A и B, при нажатии и удерживании любой из которых сначала появляется сигнал на выходе С, а потом с определенной задержкой на выходе, связанном с соответствующей кнопкой. При отпускании картина обратная. Сначала снимается управляющий сигнал, а потом с задержкой сигнал на выходе С.
зайдите в мою тему, http://arduino.ru/forum/apparatnye-voprosy/odnovremennoe-nazhatie-10-knopok-iz-lyubykh-120#comment-416596 там по теме кнопок собаку не одну съели, вам на резисторах проще всего делать кнопку, резистор 10 ком нужен, кнопка и код
схема тут https://arduinomaster.ru/datchiki-arduino/knopka-arduino/#i
делал так события как вам нужны
(нажата отжата) и сделать это когда отжата и сделать это когда нажата с задержкой или не задерживая и т.д.
тут все что вам нужно скорее всего
делал так события как вам нужны
Спасибо, MYFRIEND!
Чтобы не писать не по теме в данной ветке, перейду в Вашу тему.
Чтобы не писать не по теме в данной ветке, перейду в Вашу тему.
ой в нашу не надо! пожалуйста здесь давайте пишите лучше! где же ещё как не здесь!
Здравствуйте, MYFRIEND!
Пришел по Вашей ссылке из ветки об "использовании аналоговых входов в качестве цифровых". Спасибо за скетч.
Давайте начнём с кнопок, хорошо? что у вас есть и что уже сделали напишите и сфотографируйте. Я бы на вашем месте обработал первую кнопку, вы уже это сделали? выйдет меньше вопросов, они решатся сами. А оставшиеся задавайте. Делай больше болтай меньше. Справшивайте что не получается. Ардуино взяли? кнопку подключили? скетч отправили? сделайте и пишите что сделали. Выйдет "дешевле" по времени. Здесь забежать на 1секунду ответить быстро, вот что важно. С кнопкой разберетесь точно. Остальное спрашивайте. Старайтесь как можно больше делать сами, например приделали кнопки к ардуино, и сфотографировали, пишите, интересно помочь. 1й шаг как сделали напишите. Только не исчезайте. Тексты состоят из букв, так и шаги состоят из отдельных шагов, хоть и кажется там все раз и готово. Для начала я бы нажал кнопку вашу A. Давайте её запустим. зайдите в вк https://vk.com/id526746393 азы расскажу если нужно. Какая у вас ардуино, может в нано например не влезть, а пока придет из китая придется ждать. И еще лучше пишите - есть ардуино например mega2560 есть кнопки, провода, что делать? подскажу. А то что у вас есть из всего не известно даже. Учитывая что вам ответить за 1 минуту нужно что то. Можете в вк написать.
ближе к ардуино по возможности пишите все. раз кнопки есть давайте их добавлять. мне так проще, у вас просто все должно быть. и старайтесь делать сразу, как быстро сможете сделать советы? кнопку сделали уже хотя бы одну? бросьте код что там у вас. Ближе к коду пишите все и к ардуино, можно подробно не описывать, если не понятно будет спросить лучше где не понятно.
пережуйте код сначала который вам дали как пример, если для вас это "съедобно" то будет ещё порция. Жду как приделали кнопки код от вас. Видя ваш код вам подскажут куда вам идти дальше в каком направлении кратчайшим путём. Кодом интереснее общаться. Описание понятно ваше, но дальше код лучше начать показывать. А описание само приложится. И писать лучше дополнения сразу в ваш код, а то неизвестно что там у вас и где пока ещё ни строчки кода не показали.
сколько милисекунд должно пройти после нажатия кнопки (пока первой) вторую пока не нужно, как соберем всё продолжим дальше вопрос-ответ, нарисую вам примерно происходящее, только код покажите какой собрались делать.
Всё же раз задали вопрос делайте уже, а то столько людей отвлекли, а потом передумали.
Приветствую всех!
Ситуация поменялась. Совместить разные программы в одном железе не получилось, так как управление осуществляется тремя сигналами ручным нажатием не используя Ардуино и требуемая последовательность/задержка достигается автоматически конструктивно. В другом ПО, который использует кнопки на аналоговых входах, используются два сигнала - включение/отключения вращения по часовой и против часовой стрелки. Управляющей программе (с компьютера) эти сигналы не нужны. Она использует для этого свои команды. Поэтому я аппаратно запараллелил имеющиеся кнопки ключами с открытым коллектором, подключенными на соответствующие выходы Ардуино.
Но, для отладки требуемой последовательности на макете все же решил попробовать свои силы в написании скетча, обеспечивающего нужную мне последовательность включения сигналов. И тут же столкнулся проблемой подавления дребезга. Несколько дней дней изучал функцию debounce, но так до конца и не разобрался. По Джереми Блуму работает, но там используется delay(), а мне нужно millis(), так как тратить время на простой программы во время задержки слишком расточительно. Еще необходимо считывать и отображать текущий азимут, поддерживать связь с управляющей программой и время от времени вращать двигатель.
Пока получилось не очень. Debounce так и не добил. Включил монитор порта и обнаружил, что значение lastButton всегда равно 97 и не меняется. Чувствую, что что-то не так. Покритикуйте, пожалуйста.
}
На кубике выпадает 1 и вы возвращаетесь на клетку "правильная вставка кода".
На кубике выпадает 1 и вы возвращаетесь на клетку "правильная вставка кода".
А в переводе на русский это как?
Код надо вставлять как в сообщении #10
Код надо вставлять как в сообщении #10
Еще раз повторюсь. Мне нужно определить состояние нажатия и отжатия кнопки, от которого зависят дальнейшие действия. Функция Delay() не может быть использована, т.к. будет задержка выполнения других ветвей программы. Кнопки подключены напрямую к аналоговым входам и замыкаются на землю. Другой вариант не обсуждается. Для макетирования я мог бы обойтись и примером из Джерими Блума и даже вообще обойтись без подавления дребезга, но хочется разобраться. Поймите, когда тебе под 70, изучать С++ не так уж и легко.
Пока Вы не вставите код как положено, с номерами строк, обсуждать его вряд ли кто-то будет. Как Вы предлагаете ссылаться на определённые строки кода? Пальцем по экрану считать?
Пока Вы не вставите код как положено, с номерами строк, обсуждать его вряд ли кто-то будет. Как Вы предлагаете ссылаться на определённые строки кода? Пальцем по экрану считать?
Спасибо, что подсказали. Я это заметил еще когда вставлял код и хотел попросить, чтобы ткнули носом в нужное место. Вроде получилось.
Потерян pinMode(BUTTON, INPUT_PULLUP);
Потерян pinMode(BUTTON, INPUT_PULLUP);
А разве строка 12 его не заменяет? Вместо BUTTON можно было написать 16.
digitalWrite(BUTTON, HIGH); // включить подтягивающий резистор на входе CW
Да и если мониторить состояние А2 , то оно при чтении оно меняется
А вот последнее состояние кнопки bool lastButton = HIGH; имеет недопустимое значение 97.
Перевод его в разряд int вообще становится где-то за 14000.