Как сделать вкл\выкл с одной кнопки на mega2560
- Войдите на сайт для отправки комментариев
Чт, 11/09/2014 - 07:41
Как сделать включение выключение устройства с одной кнопки на mega2560,
при выключении устройство переходило в спящий режим ?
Выключатель поставить? Можно просто из розетки выдергивать шнурок.
Впечатление, в школе каникулы начались.
А шо за устройство - чайник, кофеварка, пылесос?
устройство портативное mega2560 + RC522 для работы с картами
мега2560 для одной кнопки...... Хотя, может она сама себя включать/выключать должна?
устройство портативное mega2560 + RC522 для работы с картами
Собираетесь в толпе читать чужие карточки?
Собираетесь в толпе читать чужие карточки?
Знал бы Puhlyaviy, что nRF24L01, серва и обыкновенный кирпич вполне могут заменить СВД :)
По теме:
#include <avr/sleep.h> #include <avr/power.h> volatile boolean onflag=false, // going on state onflagdone=false; // on state int seconds=0; unsigned long last_on=millis(); void waking(void){ onflag=true; } void sleeping(void){ onflag=false; // reset variables onflagdone=false; seconds=0; digitalWrite(5,LOW); // power LED delay(100); // do not remove set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep routines sleep_enable(); sleep_mode(); sleep_disable(); } void setup(){ pinMode(5,OUTPUT); // outs pinMode(2,INPUT_PULLUP); // on attachInterrupt(0,waking,LOW); sleeping(); // sleep by default } void loop(){ if(onflag){ if(millis()-last_on>=1000){ // on-state counter seconds++; last_on=millis(); } if(!onflagdone){ // on delay(2000); if(digitalRead(2)==LOW) onflagdone=true; else sleeping(); }else{ digitalWrite(5,HIGH); // power LED // MAIN CODE HERE if(digitalRead(2)==LOW && seconds>=5){ // off digitalWrite(5,LOW); sleeping(); } } } }D2 - вход, кнопка Power. Замыкать на землю.
D5 - выход, цепляем к нему светодиод и он будет показывать "включено". Этот код от моего плоского фонарика с SMD светиками на меге8.
Одновременно с самой Arduino нужно отключать и модуль. Камни следующие: RC522 - активная нагрузка, то есть нагрузка из которой выходят сигналы высокого уровня (плюсы). Поэтому отключать эту нагрузку необходимо, отрезая от питания плюс, то есть p-FET или PNP транзистором. Такой транзюк включается низким уровнем, т. е. digitalRead(5,LOW) - это будет включить. Если попытаться отключать модуль как обычный светодиод, по минусу NPN или n-FET транзистором, то ток может утекать через выходы Arduino. Что кстати чревато для них.
Спасибо большое!