Despertador binario de Arduino (10 / 16 paso)

Paso 10: Botón y sensor del código

El código de manipulación de los botones, el interruptor y el sensor de contacto se divide en dos funciones, una para comprobar si se pulsan los botones y uno para hacer lo que los botones debe pulsar que son es decir, establecer tiempo, configuración de la alarma, snooze y activar o desactivar la alarma.

Primero escribí el código contra rebotes para los botones, pero más tarde, cuando probé mi botones que me di cuenta de que no parece necesitarla, por lo que quité el debouncing obtener menos y más fácil de leer código, sin embargo incluí la función contra rebotes en la pestaña f_comments_etc en el bosquejo.

Verificación de pulsar un botón:
El código que comprueba si se pulsan los botones son realmente sencillos. Simplemente lee el estado de los pines botones. Las resistencias de pullup interna arduinos se utilizan para que los Estados de botones son altos cuando no se presionan y baja cuando se presionan.

El sensor de contacto se lee con ayuda de la biblioteca CapSense: touch_sensor.capSense(10) esto medir la capacitancia de 10 veces y regresar un promedio. Según el valor devuelto de la snooze_button_state variable se establecerá ya sea alta o baja. He encontrado que cuando apoye mi mano sobre la tapa del reloj será obtener un valor alrededor de 150 y con ninguna mano cerca de 30 (si recuerdo mal). usé 100 como límite para cambiar el estado de pausa-"botón". Cambiar el valor.
______________________________________________________________________

La función que pulsar un botón:

void update_buttons_state()
{
hour_button_state = digitalRead(hour_button_pin);
minute_button_state = digitalRead(minute_button_pin);
setting_switch_state = digitalRead(setting_switch_pin);
/ * Leer el sensor de contacto snooze: * /
if(touch_sensor.capSense(10) > 100) / / Ajuste este valor si es necesario
snooze_button_state = bajo;
otra cosa
snooze_button_state = alto;
el if-else de arriba yo creo que se podría escribir más corto como:
¿snooze_button_state = (touch_sensor.capSense(10) > 100)? BAJA: ALTA;
}
______________________________________________________________________

Hacer las cosas si se pulsan los botones:
El interruptor de configuración cambiarán los dos punteros hours_p y minutes_p para indicar tanto las horas variables y minutos, o alarm_hours y alarm_minutes. El código para los botones hour y minute utilizará estos punteros, así que cuando el interruptor se establece automáticamente lo correcto; alarma o tiempo. La función de visualización también utiliza el hours_p y minutes_p punteros así que cuando el interruptor de configuración está en alarma, la hora de alarma se muestra.

Hora y minuto botones aumento el tiempo horas y minutos por cada uno que se pulsan.

El botón snooze se apague la señal de alarma y establecer una pausa de tiempo (hora + 10 minutos) cuando la señal debe empezar de nuevo. también establece la variable snooze_on a true, esto hará que la función de alarma empezar a comprobar cuando la repetición del tiempo.

Si se mantiene el botón snooze pulsado durante 3 segundos accionará la alarma apagada o encendida. Un tono agudo se toca cuando la alarma está activada y un tono bajo tono se reproduce cuando la alarma se apaga.

______________________________________________________________________

La función de botones:

VARIABLES "INTERNAS" PARA LA FUNCIÓN DE BOTONES:
Boolean first_time_hour = true;   se utilizan para asegurarse de que las horas
Boolean first_time_minute = true; minutos sólo se incrementa una vez cada tecla.
snooze_button_timer largo sin firmar; utilizado para realizar un seguimiento de cuánto tiempo tiene el botón snooze
se ha pulsado. Cuando se ha celebrado el botón de
una cierta cantidad de tiempo, la alarma se activará
de totalmente.
void buttons()
{
BAJO == botón pulsado
ALTO == botón liberado
(esto es porque se utiliza de enderezamiento)
/ / Decidir si deberíamos establecer hora o alarma:
(esto también hace la pantalla muestra la hora de alarma)
if(setting_switch_state==Low) / / bajo = tiempo
{
hours_p = & horas;
minutes_p = & minutos;
}
Else / / alta = alarma
{
hours_p = & alarm_hours;
minutes_p = & alarm_minutes;
}

Si se presiona el botón de la hora, aumentar horas:
Si (hour_button_state == baja & & first_time_hour) / / sólo aumentar las horas una vez
{/ / Pulse cada botón.
Si (* hours_p < 23)
(* hours_p) ++;
otra cosa
* hours_p = 0;
first_time_hour = false;
if(DEBUG)
{
Serial.println ("aumento de horas");
Serial.println(hour_button_state);
}
}
if(hour_button_state==HIGH) más
{
first_time_hour = true; Cuando se suelta el botón,
} / / para que la prensa siguiente sean registrados.
/ / Si se pulsa el botón de minutos, minutos aumentar:
Si (minute_button_state == baja & & first_time_minute) / / sólo para aumentar los minutos
{/ / una vez que pulsa cada botón.
Si (* minutes_p < 59)
(* minutes_p) ++;
otra cosa
* minutes_p = 0;
first_time_minute = false;
}
if(minute_button_state==HIGH) más
{
first_time_minute = true; Cuando se suelta el botón,
} / / para que la prensa siguiente sean registrados.

if(snooze_button_state==Low)
{
if(signal_on)
{
ajustar la hora cuando la señal de alarma comenzará de nuevo,
Esto le dará pausa de 10 minutos:
if(minutes<50)
{
snooze_off_minutes = minutos + 10;
snooze_off_hours = horas;
}
otra cosa
{
snooze_off_minutes = minutos - 50;
snooze_off_hours = horas + 1;
}
snooze_on = true;
signal_on = false;
}
Si el botón snooze ha sido presionado para más de 3 segundos activar/desactivar la alarma
if((Millis() - snooze_button_timer) > 3000)
{
if(alarm_on) / / si, apagar
{
signal_on = false;
alarm_on = false;
jugar a tono para que el usuario sepa la alarma apagada:
tone_maker.Play (NOTE_A3, 100);
}
if(alarm_on==false) else / / si apagado, encender
{
alarm_on = true;
jugar a tono para que el usuario sepa la alarma apagada:
tone_maker.Play (NOTE_A7, 100);
}
reiniciar el temporizador botón de snooze
snooze_button_timer=Millis();
}
  }
otra cosa
{
reiniciar el temporizador botón de snooze
snooze_button_timer=Millis();
}
}
___________________________________________________________________

Artículos Relacionados

¿Arduino despertador binario (bolsillo)

¿Arduino despertador binario (bolsillo)

Ever quería un despertador binario? Yo también. Así que miré a mi alrededor en Instructables, porque hay muchos buenos alrededor.Lo que es aún mejor: están basados en Arduino, uno de mis juguetes favoritos.Mi favorito es este: Me inspiró mucho y sí t
Cwik Clock v1.0 - un reloj binario de Arduino

Cwik Clock v1.0 - un reloj binario de Arduino

ResumenEsta es una guía a la construcción de un reloj accionado Arduino que utiliza LEDs para mostrar un reloj de 24 horas (horas y minutos) como dígitos binarios, un medidor analógico para mostrar a los segundos, un interruptor para conmutar entre e
Reloj binario de Arduino

Reloj binario de Arduino

Finalmente he dicho, el reloj binario la gente alrededor de mí oído me habló para tan de largo. Estaba tratando de hacer esto durante las últimas vacaciones de Navidad, pero le faltaba tiempo, cambié empleos 2 veces en los últimos 6 meses... por lo q
Reloj binario de Arduino usando LED Matrix

Reloj binario de Arduino usando LED Matrix

Este sitio tiene muchos puestos finas que describe la construcción de los relojes binarios. Soy tremendamente inestable, sin embargo y tienen dificultad para cualquier soldadura. Por lo tanto quería hacer mío de una matriz de 8 x 8 LED MAX7219-contro
Mi reloj binario de Arduino

Mi reloj binario de Arduino

Hola desde ItaliaAunque muchos relojes binarios creados, mi proyecto se inspiró principalmente a esto:http:// muy inteligente y divertido.He intentado mejorar el diseño y para añadir algo personal.Creo que es un buen resultado al final.El proyecto no
Despertador de Bacon - Arduino

Despertador de Bacon - Arduino

Este es un proyecto que surgió inspirado por mi amor de tocino!Este es un reloj alarma diseñado para despertar con el olor de tocino. Con la ayuda de un arduino que el despertador ya tendrá el aroma de tocino llenando la sala de despertar hasta antes
Reloj métrico binario; proyecto Arduino fácil.

Reloj métrico binario; proyecto Arduino fácil.

Se trata de una muy extraña clase de reloj, que fácilmente se puede hacer con materiales simples.Para empezar la explicación, me gustaría decir que siempre he querido tiempo métrico. 5:00 sería mediodía, 7:5 (18:00), las tres cuartas partes y así suc
Reloj binario de Arduino (horas, minutos y segundos)

Reloj binario de Arduino (horas, minutos y segundos)

Hola a todos; Estaba buscando este proyecto durante mucho tiempo.  Finalmente yo se que con mucho esfuerzo.  Para este proyecto necesitarás:1 - Arduino Uno ($30 de Radio Shack)2 - RTC DS1307 (como $2 por EBay)3 - 2 registros de desplazamiento 74HC595
Edificio IllyClock - despertador basado en Arduino en una poder de café

Edificio IllyClock - despertador basado en Arduino en una poder de café

actualizado 04 de agosto de 2011Una versión simplificada es ahora descrito aquí.El propósito de este proyecto es construir un reloj de alarma similar a la que se presenta en el siguiente video.Al lado de la caja, la función original de IllyClock mues
Arduino Powered reloj binario

Arduino Powered reloj binario

este instructable le ayudará a construir un reloj binario de Arduino.  La idea orignial de este instructable fue diseñado por Daniel Andrade.  Mi instructable utiliza componentes de montaje superficial, pero puede ser fácilmente adaptado para a travé
Fracaso y éxito de Arduino Watch

Fracaso y éxito de Arduino Watch

Decidí construir un reloj binario de Arduino. Sé que un reloj de pulsera debe ser de tamaño pequeño ya que es un proyecto usable. Para ello, he seleccionado dispositivo de montaje superficial (SMD) como TQFP Atmega IC, SMD LED y resistencia SMD. Como
Alimentación de Circuts

Alimentación de Circuts

vamos a hacerExplorar publicarSecompartir lo que makeFeatured:IoT de IntelCorte por láserHacks de la vidaJoyeríaCon Instructables pueden compartir lo que hacemos con el mundo y aprovechar una comunidad creciente de expertos creativos. Cómo funciona»
Construcción de droides C3PO

Construcción de droides C3PO

El droide C3PO es un pedazo de pantalla que hice que está parado sobre una base iluminada. El droide es controlado por Arduino dosmicrocontroladores y un controlador de servo de Pololu Maestro USB. Contraté a un imitador de voz para leer un script qu
NerdClock: Un RGB reloj binario [Software de Arduino]

NerdClock: Un RGB reloj binario [Software de Arduino]

IntroducciónRelojes binarios son una manera genial para mostrar el tiempo de una manera misteriosa. Y a los que no saben leer ese tipo de reloj es una manera simple, pero eficaz para incrementar su nerdiness nivel nubes. ¿Que podría ser algo que gust