Arduino binaire réveil (10 / 16 étapes)

Étape 10 : Bouton et capteur code

Le code gère les boutons, l’interrupteur et le capteur tactile est divisé en deux fonctions, pour vérifier si les touches sont pressées et un pour faire ce que les boutons doit si elles sont pressées c'est-à-dire réglage de l’heure, réglage de l’alarme, snooze et activer ou désactiver l’alarme.

Tout d’abord, j’ai écrit le code avec debouncing pour les boutons, mais plus tard quand j’ai testé mes boutons, que j’ai remarqué que je ne semble pas en avoir besoin, alors j’ai enlevé l’antirebonds pour obtenir moins et plus facile à lire le code, mais j’ai inclus la fonction avec debouncing dans le f_comments_etc d’onglet dans le sketch.

Recherchez sur les touches :
Le code qui vérifie si les boutons sont pressés sont très simples. Il lit juste l’état des broches boutons. Les résistances de pullup interne arduinos sont utilisés afin que les États de boutons sont élevés lorsqu’elles ne sont pas pressées et faible lorsqu’elles sont pressées.

Le capteur tactile est lu avec l’aide de la bibliothèque CapSense: touch_sensor.capSense(10) ce mesurera la capacité 10 fois et retour en moyenne. Selon la valeur retournée de la snooze_button_state variable va être définie soit haute ou basse. J’ai trouvé que quand je repose ma main sur le couvercle de l’horloge je vais obtenir une valeur d’environ 150 et avec aucune main environ 30 (si je me souviens bien). J’ai donc utilisé 100 comme limite pour modifier l’état de la répétition-« bouton ». Modifiez la valeur si nécessaire.
______________________________________________________________________

La fonction qui vérifie les touches :

Sub update_buttons_state()
{
hour_button_state = digitalRead(hour_button_pin) ;
minute_button_state = digitalRead(minute_button_pin) ;
setting_switch_state = digitalRead(setting_switch_pin) ;
/ * Lire le capteur de touche snooze: * /
if(touch_sensor.capSense(10) > 100) / / ajuster cette valeur si nécessaire
snooze_button_state = bas ;
d’autre
snooze_button_state = élevé ;
l’if-else ci-dessus j’ai pense que peut être écrite plus courtes comme :
snooze_button_state = (touch_sensor.capSense(10) > 100) ? BAS : HAUT ;
}
______________________________________________________________________

Faire des choses si les boutons sont pressés :
Le commutateur de réglages modifiera les deux pointeurs hours_p minutes_p pour pointer vers soit les variables heures et les minutes, ou les alarm_hours et les alarm_minutes. Le code pour les boutons heure et minute utilisera ces pointeurs, donc lorsque le commutateur change ils définira automatiquement la bonne chose ; alarme ou l’heure. La fonction d’affichage utilise également le hours_p et minutes_p pointeurs alors lorsque le sélecteur de paramètres est sur alarme, l’heure de l’alarme est affiché.

L’heure et minute boutons augmentation les heures et minutes en un temps elles sont pressées.

La touche snooze va désactiver le signal d’alarme et définir un Roupillon hors temps (heure + 10 minutes) quand le signal devrait recommencer. Il affecte également la variable snooze_on la valeur true, cela provoquera la fonction d’alarme pour commencer à vérifier lors de la répétition du temps est.

Si le bouton snooze est maintenu enfoncée pendant 3 secondes, il basculera l’alarme désactivée ou activée. Un ton aigu est joué lorsque l’alarme est activée et une tonalité faible pente est émises lorsque l’alarme est désactivée.

______________________________________________________________________

La fonction des boutons :

VARIABLES « INTERNES » POUR LES BOUTONS DE FONCTION :
Boolean first_time_hour = true ;   ceux-ci sont utilisés pour s’assurer que les heures
Boolean first_time_minute = true ; et minutes seulement est augmenté une fois chaque keypress.
unsigned long snooze_button_timer ; utilisée pour garder une trace de combien de temps le bouton snooze a
été maintenue enfoncée. Quand la touche a été enfoncée
un certain laps de temps, l’alarme est activée
de complètement.
Sub buttons()
{
BAS == touche enfoncée
HAUT == relâchez le bouton
(c’est parce que les résistances pullup est utilisé)
/ / Décider si nous devons définir l’heure ou :
(cela donne aussi l’afficheur indique l’heure de l’alarme)
if(setting_switch_state==Low) / / faible = temporisation
{
hours_p = & heures ;
minutes_p = & minutes ;
}
else / / HIGH = alarme
{
hours_p = & alarm_hours ;
minutes_p = & alarm_minutes ;
}

Si l’heure est enfoncée, augmenter le nombre d’heures :
Si (hour_button_state == LOW & & first_time_hour) / / seulement augmenter les heures une fois
{/ / appuyer sur chaque bouton.
Si (* hours_p < 23)
(* hours_p) ++ ;
d’autre
* hours_p = 0 ;
first_time_hour = false ;
if(DEBUG)
{
Serial.println ("augmentation d’heure") ;
Serial.println(hour_button_state) ;
}
}
d’autre if(hour_button_state==HIGH)
{
first_time_hour = true ; remis à zéro quand le bouton est relâché,
} / / afin que la presse prochaine sera inscrit.
/ / Si la touche minute, augmentation minutes :
Si (minute_button_state == LOW & & first_time_minute) / / seulement augmenter le procès-verbal
{/ / une fois appuyer sur chaque bouton.
Si (* minutes_p < 59)
(* minutes_p) ++ ;
d’autre
* minutes_p = 0 ;
first_time_minute = false ;
}
d’autre if(minute_button_state==HIGH)
{
first_time_minute = true ; remis à zéro quand le bouton est relâché,
} / / afin que la presse prochaine sera inscrit.

if(snooze_button_state==Low)
{
if(signal_on)
{
régler l’heure lorsque le signal d’alarme reprendra à nouveau
Cela vous donnera 10 minutes snooze :
if(minutes<50)
{
snooze_off_minutes = minutes + 10 ;
snooze_off_hours = heures ;
}
d’autre
{
snooze_off_minutes = minutes - 50 ;
snooze_off_hours = heures + 1 ;
}
snooze_on = true ;
signal_on = false ;
}
Si le bouton snooze a été maintenu enfoncée pour plus de 3 secondes activer/désactiver l’alarme
if((Millis() - snooze_button_timer) > 3000)
{
if(alarm_on) / / si on, éteignez
{
signal_on = false ;
alarm_on = false ;
Jouez le ton afin que l’utilisateur connaît l’alarme désactivée :
tone_maker.Play (NOTE_A3, 100) ;
}
if(alarm_on==false) Else / / si off, allumez
{
alarm_on = true ;
Jouez le ton afin que l’utilisateur connaît l’alarme désactivée :
tone_maker.Play (NOTE_A7, 100) ;
}
réinitialiser le compteur de bouton snooze
snooze_button_timer=Millis() ;
}
  }
d’autre
{
réinitialiser le compteur de bouton snooze
snooze_button_timer=Millis() ;
}
}
___________________________________________________________________

Articles Liés

Rise and Shine ! -Arduino LDR réveil

Rise and Shine ! -Arduino LDR réveil

Cette instructable a été créée dans l'accomplissement de l'exigence de projet de la MakeCourse à l'Université de Floride du Sud (www.makecourse.com).Principe de fonctionnementCe réveil est conçu pour vous laisser lever avec le soleil. Lorsque la lumi
Arduino binaire 7 Segment affichage horloge & calendrier

Arduino binaire 7 Segment affichage horloge & calendrier

Contrairement à la plupart des autres horloges binaires cette horloge affiche la date et binaire sur 3 rangées de 8 sept segments affiche un et zéro plutôt que de quelques rangées de LEDs.Tous les détails sur ce mon site web ici.Un microprocesseur de
NESBot : Arduino alimenté Robot battre Super Mario Bros de la NES

NESBot : Arduino alimenté Robot battre Super Mario Bros de la NES

ce guide vous emmènera à travers les étapes pour construire un NDA jeu robot.Vous aurez besoin :Un Arduino Duemilanove (autres conseils fonctionnera probablement, mais vous devrez ajuster les étapes de votre appareil)Travail de Console NESSuper Mario
Radio-réveil avec Tetris pour prouver vous êtes éveillé

Radio-réveil avec Tetris pour prouver vous êtes éveillé

il s'agit d'un Arduino alimenté réveil qui, après avoir frappé, répéter deux fois l'alarme ne s'annulent pas jusqu'à ce que l'utilisateur a supprimé 4 lignes dans le jeu Tetris. Vous transformer physiquement l'horloge sur le côté, afin que l'écran so
Arduino congélateur alarme

Arduino congélateur alarme

J'ai commencé ce projet pour remédier à un défaut de conception dans notre congélateur. Son commutateur d'alarme de porte se trouve à proximité des charnières et exige que la porte s'ouvrir grand avant que l'alarme se déclenche. Notre porte de congél
Contrôler n’importe quel appareil électrique ou lumineux avec vous tablette ou smartphone (wifi)

Contrôler n’importe quel appareil électrique ou lumineux avec vous tablette ou smartphone (wifi)

Contrôler n'importe quel appareil électrique ou lumineux avec vous tablette ou smartphone (wifi) à l'aide d'arduino, Billy et un wemos / ESP8266 ConseilDans ce tutoriel nous allons faire quelque chose j'ai appeler un wifi contrôlée ac switch. (Mais i
Capteur infrarouge pour appareil photo reflex numérique

Capteur infrarouge pour appareil photo reflex numérique

Longue histoire courte : il était nécessaire de prendre des photos en plein air chaque fois quand un animal s'approchait un reflex numérique, donc j'ai construit une boîte avec un capteur PIR et un petit Arduino Pro Mini pour contrôler la caméra.Les
Arbre de Noël, lumières contrôlée par téléphone ? Un simple Internet of Things hack.

Arbre de Noël, lumières contrôlée par téléphone ? Un simple Internet of Things hack.

Mon fils voulait être en mesure de tourner l'arbre de Noël avec son téléphone sous et hors tension. Nous avons creusé autour dans le laboratoire de montagne secrète (AKA le sous-sol) et est venu avec le projet suivant, qui utilise un Arduino pour rév
Gazouillis Laser Tripwire avec Webcam Capture

Gazouillis Laser Tripwire avec Webcam Capture

Cette instructable va vous montrer comment construire un tripwire laser peut twitter et saisir une image à partir d'une webcam, aussi bien qu'exécuter toute commande que vous pouvez mettre dans un script bash.Cette instructable est en fait assez simp
Le Robot 4Omni CHAMPION de Soccer roue !

Le Robot 4Omni CHAMPION de Soccer roue !

Ses un Bluetooth contrôlée 4 Wheel drive omni roue robot basé sur Arduino Mega 2560 (vous pouvez utiliser n'importe quel arduino UNO ou régulière ou tout autre, vous voulez), ce n'est pas un robot ordinaire c'est un Robot de Soccer et il a participé
Lampe de 12V Neopixel RV

Lampe de 12V Neopixel RV

... ou, fabricants de combien faut-il pour changer une ampoule ?Une 12V lumière LED dans notre camping-car grillée sans raison évidente. Je suis seulement à apprendre comment utiliser mon nouveau bureau machine CNC et voulait essayer de fraisage des
Ada Robotic Hand - Open Bionics

Ada Robotic Hand - Open Bionics

Il s'agit d'un guide étape par étape sur comment faire une main robotique Open bionique Ada. Il est dérivé de la main robotique Dextrus, par le Projet de main ouverte. Il suppose que vous avez soit ordonné l' Ada robotique main kit ou avez accès à un
RomoBOT - Robot animatronique Face

RomoBOT - Robot animatronique Face

Il s'agit de mon premier instructable, alors soyez gentil. Le RomoBOT est un projet de la mine dans la dernière année de mes études de génie mécanique. C'était une étude indépendante et axé sur la robotique. Le projet a changé plusieurs fois et le pl
Comment faire un chauffage et une veste de refroidissement

Comment faire un chauffage et une veste de refroidissement

projet étudiants CU Boulder GEEN 1400 projets d'ingénierie :Diana George, Jenna Sobieray, Alex Cossoff et Chris Francklyn Vous avez toujours rêvé d'avoir une veste qui a gardé l'équilibre?Eh bien, aujourd'hui est votre jour de chance ! Maintenant pré