NEED HELP!
- Войдите на сайт для отправки комментариев
Сб, 17/08/2013 - 19:28
Суть вопроса в следующем:
Необходимо реализовать систему из 7 кнопок, при нажатии на каждую выдавало опеределенно сообщение (BUTTON 1, BUTTON 2 итд). Да и еще: систему необходимо реализовать без резисторов, то-есть на землю 7 проводов, и 7 цифровых входов занимаем.
const int buttonPin = 4; int previousButtonState = HIGH; int counter = 0; void setup() { pinMode(buttonPin, INPUT); Keyboard.begin(); } void loop() { int buttonState = digitalRead(buttonPin); if ((buttonState != previousButtonState) && (buttonState == HIGH)) { counter++; Keyboard.print("BUTTON "); Keyboard.println(" 1."); } previousButtonState = buttonState; }
1) Как реализовать для нескольких кнопок?
Включение выключение не нужно. просто тупо чтобы при нажатии выдавало кнопка 1, кнопка 2 итд.
Чтение мануалов не поогло, с несколькими кнопками и сообщениями не смог найти примеров и статей.
Буду благодарен помощи.
для нескольких кнопок ваш код нужно продублировать последовательно для каждой кнопки
если не используете резисторов то не забудьте активировать внутреннюю поттяжку через digitalWrite(buttonPin, HIGH)
God will help...
Скомпилировалось, работает кнопка 2, после замыкания кнопки 2 с землей останавливается, но в непонятном порядке выдает кнопки 1 3 и 6, хотя их не ззамыкаем.
Вначале нужно прочитать 7-ть раз мантру "я не буду бездумно называть темы лишь бы как".
Потом сесть и подумать о:
1. Откуда взялся buttonState == LOW если в изначальном скетче его небыло, а нам посоветовали "просто сдублируйте".
2. Почему мы "дублировали" как-то очень выборочно. То что нам потребуется сем РАЗНЫХ переменных buttonPin - cообразили. А остальные переменные?
Вы явно не вникали "как же работает оригинальный скетч". Иначае поняли бы, что в previousButtonState сохраняется прошлое нажатие кнопки. После дублирования, какой именно кнопки там состояние будет сохранятся? Той которую нажали последней? А потом использоватся это значение будет для определения нажались ли другие кнопки? Бред же выходит. Наверное для каждой кнопки свой previuseButtonState - был бы логичней. Да и... если не ставим цель экономить память - семь штук buttonStateN - тоже не помешал бы. Тогда совет "просто сдублируйте" - вообще можно выполнить не включая мозг. Просто сем раз скопировать и поправить циферки в имени переменной.
А когда заработает.... можно почухать затылок и почитать for . Авось поситят идеи как не выполнять мартышкину работу по 7-ми кратному дублированию одной и той же работы.
Раобрался, спасибо (digitalWrite). Работает как нужно!
1
>Еще подскажите пожалуйста как сделать что бы один символ выдавал
Хм.... Вряд ли такое кто либо до вас делал. Трудно найти решение. Шо же тут посоветовать? На разве что - почитать arduino.ru. Там на форуме часто про кнопки спрашивают/разъясняют. Даже ветки, зачем-то, прикрепленные делают. Наверное - для красоты.
Поспешил с комментарием, нашел. добавил
delay(1000); . Спасибо большое за наводки.
Поспешил с комментарием, нашел. добавил
delay(1000); . Спасибо большое за наводки.