помогите написать скейч.
- Войдите на сайт для отправки комментариев
Пнд, 21/03/2016 - 19:20
Суть такая, нужен скейч чтобы при двойном нажатии кнопки (пордка 300-900мс) загорался светодиод на 5 сек и потом гас.
Суть такая, нужен скейч чтобы при двойном нажатии кнопки (пордка 300-900мс) загорался светодиод на 5 сек и потом гас.
а сам что даже не пытался?
почитай титановый велосипед для кнопки тут на форуме
пытался, понял что это не мое, но всеже даную проблему надо решить
ардуину купил? уроки джереми блюма прошел? если нет значит не особо пытался
Суть такая, нужен скейч чтобы при двойном нажатии кнопки (пордка 300-900мс) загорался светодиод на 5 сек и потом гас.
создай новую тему
там и спрашивай !
Помоги пожалуйста, нашел скейч который мне подходит кроме одного но, внем при кратковременном одном нажатии включается светодиод(это нужно убрать а все остальное оставить) помоги .
ine BUTTON_PIN 7 ine LED_PIN 13 int bounceTime = 10; // задержка для подавления дребезга int holdTime = 300; // время, в течение которого нажатие можно считать удержанием кнопки int doubleTime = 500; // время, в течение которого нажатия можно считать двойным boolean lastReading = false; // флаг предыдущего состояния кнопки boolean buttonSingle = false; // флаг состояния "краткое нажатие" boolean buttonDouble = false; // флаг состояния "двойное нажатие" boolean buttonHold = false; // флаг состояния "долгое нажатие" boolean ledState = false; // флаг состояния LED long onTime = 0; // переменная обработки временного интервала long lastSwitchTime = 0; // переменная времени предыдущего переключения состояния long ledStartTime = 0; // переменная-флаг времени начала включения LED unsigned long ledTimeout = 300000; // переменная времени отключения LED, 5 минут = 300 000 мс void setup() { Serial.begin(9600); pinMode(9, HIGH); //! подаем +5В на кнопку - эта строка только для моей схемы, вам не нужно! pinMode(BUTTON_PIN, INPUT_PULLUP); // подключаем кнопку через внутренний резистор pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, ledState); // принудительно гасим LED Serial.println("\nReady..."); } void loop() { // ================ обработчик состояния кнопки ==================== boolean reading = !digitalRead(BUTTON_PIN); // читаем состояние пина кнопки (инвертированное, т.к. подключено через внутренний резистор) // проверка первичного нажатия if (reading && !lastReading) { onTime = millis(); } // проверка удержания if (reading && lastReading) { if ((millis() - onTime) > holdTime) { buttonHold = true; } } // проверка отпускания кнопки if (!reading && lastReading) { if (((millis() - onTime) > bounceTime) && !buttonHold) { if ((millis() - lastSwitchTime) >= doubleTime) { lastSwitchTime = millis(); buttonSingle = true; } else { lastSwitchTime = millis(); buttonDouble = true; buttonSingle = false; Serial.println("Button: double press"); isButtonDouble(); buttonDouble = false; // сброс состояния после выполнения команды } } if (buttonHold) { buttonDouble = false; Serial.println("Button: hold"); isButtonHold(); buttonHold = false; // сброс состояния после выполнения команды } } lastReading = reading; if (buttonSingle && (millis() - lastSwitchTime) > doubleTime) { buttonDouble = false; Serial.println("Button: single press"); isButtonSingle(); buttonSingle = false; // сброс состояния после выполнения команды } // ================ конец обработчика состояния кнопки ================== // ================ обработчик отключения LED по таймауту =============== if ((ledStartTime !=0) && (millis() - ledStartTime > ledTimeout)) // если LED включен по даблклику и прошло больше 5 сек { Serial.println("Timeout"); ledToggle(); // то гасим LED ledStartTime = 0; // и обнуляем переменную-флаг } // ================ конец обработчика отключения LED ==================== } // конец loop void isButtonSingle() // действия после одиночного нажатия кнопки { //При однократном нажатии диод загорается , если еще раз нажать то тухнет. //Если однократно нажать на кнопку то он погаснет, вне зависимости как его включили. ledToggle(); } void isButtonDouble() // действия после двойного нажатия кнопки { //При двойном нажатии диод загорается и тухнет через 5 минут ledState = true; // однозначно включаем LED digitalWrite(LED_PIN, ledState); ledStartTime = millis(); // начинаем отсчет времени Serial.println("LED on. Will turn off after 5 min"); } void isButtonHold() // действия после удержания кнопки { // здесь код для этого действия Serial.println("nothing to do..."); } void ledToggle() // функция переключения (инвертирования) LED { ledState = !ledState; digitalWrite(LED_PIN, ledState); ledState ? Serial.println("LED on"): Serial.println("LED off");ser97 , ты точно думаешь , что все ОБЯЗАНЫ сразу тибе помогать ?
раз - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
два - вовсе не отжался - читай книжки.....
или спроси толково.....
нет НЕ ОБЯЗАНЫ.
нет НЕ ОБЯЗАНЫ.
спроси не от нервов , подумай , спроси гугл , потом здесь....
ни гугл ни ндекс не помогают.
Помоги пожалуйста, нашел скейч который мне подходит кроме одного но, внем при кратковременном одном нажатии включается светодиод(это нужно убрать а все остальное оставить) помоги .
можно указать - что не так...
НО пока сам не "ПОТРОГАЕШЬ" - время даром ....
ни гугл ни ндекс не помогают.
нееееее , голова не так думает !!!!!
нет ?
тибе поможет только ТВОЯ ГОЛОВА - если есть такая имеет быть место....
Есть такое средство для думания ?
помогите написать скейч.
Скетч (англ. sketch, буквально — эскиз, набросок, зарисовка)