Table des matières:

Projet de réveil Arduino : 14 étapes
Projet de réveil Arduino : 14 étapes

Vidéo: Projet de réveil Arduino : 14 étapes

Vidéo: Projet de réveil Arduino : 14 étapes
Vidéo: Projet horloge simple avec Arduino sans RTC | GPS [DIY] 2024, Novembre
Anonim
Projet de réveil Arduino
Projet de réveil Arduino

Dans ce projet, nous utiliserons l'Arduino Uno pour contrôler un écran LCD afin d'afficher l'heure et l'heure auxquelles une alarme est réglée. Nous utiliserons des boutons pour régler à chaque fois.

Matériaux:

  • Arduino Uno -
  • Planche à pain - https://vilros.com/products/planche à pain
  • Cavaliers (x13+) -
  • Résistances de 10 kohms (x4) -
  • Écran LCD -
  • 7 boutons -
  • Haut-parleur piézo -

Étape 1: Instructions de connexion

Instructions de branchement
Instructions de branchement

1. Connectez un cavalier de la broche 5V de l'Arduino à l'un des rails + de la maquette.

Étape 2:

Image
Image

2. Connectez un cavalier de la broche GND de l'Arduino au rail - à côté du rail + que vous avez choisi sur la maquette.

Étape 3:

Image
Image

3. Connectez l'écran LCD à l'alimentation, à la terre et à la broche TX (broche 1).

Étape 4:

Image
Image

4. Placez 7 boutons sur la planche à pain avec les pieds à travers l'espace dans la planche à pain.

Étape 5:

Image
Image

5. Placez des résistances de 10 kohms du rail - avec la broche GND connectée aux broches en bas à gauche des boutons.

Étape 6:

Image
Image

6. Placez les cavaliers entre la broche en bas à droite des boutons et le rail 5V sur votre maquette.

Étape 7:

Image
Image

7. Placez les cavaliers entre les broches 6, puis 8-13, et la broche du bouton auquel la résistance est connectée.

Étape 8:

Image
Image

8. Ensuite, placez votre enceinte Piezo sur la maquette et connectez la broche 7 à la broche d'alimentation, puis une résistance de 100 ohms à la terre.

Étape 9: Instructions de programmation

1. Vue d'ensemble: ce projet demandera à l'utilisateur de régler l'heure actuelle lors de la mise sous tension initiale de l'écran, l'heure actuelle et l'heure à laquelle l'alarme est définie. Les boutons connectés ci-dessus seront utilisés pour régler à chaque fois. De gauche à droite, ils sont réglés sur l'heure courante, régler la minute courante, régler l'heure AM ou PM courante, régler l'heure de l'alarme, régler les minutes de l'alarme, régler l'alarme AM ou PM. Le dernier bouton est utilisé pour arrêter l'alarme lorsqu'elle sonne.

Étape 10:

2. La première chose que nous devons faire est d'initialiser notre variable que nous allons utiliser.

// Initialise les variables à utiliserint heure = 0; // Heure pour l'heure actuelle int minute = 0; //

Minute pour l'heure actuelle int seconde = 0; // Seconde pour l'heure actuelle

int heure_a = 0; int // Heure pour l'heure de l'alarme

minute_a = 0; // Minute pour l'heure de l'alarme

bool am_pm = false; // Indicateur de bascule AM/PM. Faux est AM, True est PM

bool am_pm_a = false; // Drapeau de bascule AM/PM pour l'alarme. Faux est AM, True est PM

int set_hr = 13; // Utilisez la broche 13 pour régler l'heure

int set_min = 12; // Utilisez la broche 12 pour définir l'entier des minutes

set_am_pm = 11; // Utilisez la broche 11 pour régler am/pm

int set_hr_a = 10; // Utilisez la broche 10 pour régler l'heure de l'alarme int set_min_a = 9; // Utilisez la broche 9 pour définir les minutes de l'alarme int set_am_pm_a = 8; // Utilisez la broche 8 pour régler am/pm pour l'alarme

haut-parleur int = 7; // Pin à utiliser pour speakerint quiet = 6; // Épingle pour arrêter le haut-parleur

bool alarme = faux; // Drapeau à basculer pour continuer à alarmer

bool calmé = faux; // Le drapeau indiquant le silence n'a pas été enfoncé

int cur_time = 0; // Variable pour l'heure actuelle

int heure = 0; // Variable pour le temps écoulé

Étape 11:

3. Ensuite, nous devons configurer l'écran LCD et dire à l'utilisateur de régler l'heure actuelle. Comme cela ne doit être fait qu'une seule fois, nous le ferons dans la routine de configuration.

void setup() {

// Configurer l'écran LCD

Serial.begin(9600); // Initialiser la série à 9600 bauds

Serial.write(17); // Allume le rétro-éclairage

Serial.write(24); // Allume l'affichage, avec curseur et sans clignotement

Serial.write(12); // Effacement de l'écran

Serial.write(128); // Déplacer le curseur dans le coin supérieur gauche // Définir pinModes pinMode(set_hr, SAISIR); pinMode(set_min, INPUT);

pinMode(set_am_pm, INPUT);

pinMode(set_hr_a, INPUT);

pinMode(set_min_a, INPUT);

pinMode(set_am_pm_a, INPUT);

pinMode(haut-parleur, SORTIE);

pinMode(silencieux, INPUT);

// À la mise sous tension initiale, demandez à l'utilisateur de régler l'heure actuelle. Serial.print("Définir l'heure actuelle"); retard (2000);

Serial.write(12);

printTimes();

cur_time = millis(); // Stocke l'heure actuelle}

Étape 12:

4. Ensuite, dans la routine de boucle, nous gardons une trace de l'heure et lisons l'état du bouton pour voir si l'utilisateur règle l'une ou l'autre des heures.

boucle vide() {

// Garde du temps

garde du temps();

// Vérifiez s'il est temps de déclencher l'alarme !

if((heure == heure_a && minute == minute_a && ! calme) || alarme){tone(haut-parleur, 2000, 500); // Émet un son de 2000 Hz vers le haut-parleur pendant 500 ms

retard (500); // Retard 500 ms if(!alarm){ // Si l'alarme est désactivée, activez-la

}

}

// Si l'utilisateur coupe l'alarme en appuyant sur le bouton silencieux, arrête l'alarme if(alarm && !quieted && digitalRead(quiet)){

alarme = faux;

apaisé = vrai; }

// Réinitialise l'alarme if(!alarm && quieted && minute != minute_a){ quieted = false;

}

// Vérifiez si les broches définies sont hautes, et si c'est le cas, incrémentez la valeur correspondanteif(digitalRead(set_hr) && hour < 12){

heure++;

printTimes();

debounce();

}

else if (digitalRead(set_hr) && hour == 12){ hour = 1;

printTimes();

debounce();

}

autre{}

if(digitalRead(set_min) && minute < 59){

minute++;printTimes();

debounce();

}

else if (digitalRead(set_min) && minute == 59){ minute = 0;

printTimes();

debounce();

}

else{}if(digitalRead(set_am_pm) && am_pm){

am_pm = faux;

printTimes();

debounce();

}

else if (digitalRead(set_am_pm) && !am_pm){ am_pm = true;printTimes();

debounce();

}

else{}if(digitalRead(set_hr_a) && hour_a < 12){

heure_a++;

printTimes();

debounce();

}

else if (digitalRead(set_hr_a) && hour_a == 12){hour_a = 1;

printTimes();

debounce();

}

else{}if(digitalRead(set_min_a) && minute_a < 59){

minute_a++;

printTimes();

debounce();

}

else if (digitalRead(set_min) && minute_a == 59){minute_a = 0;

printTimes();

debounce();

}

else{}if(digitalRead(set_am_pm_a) && am_pm_a){

am_pm_a = faux;

printTimes();

debounce();

}

else if (digitalRead(set_am_pm_a) && !am_pm_a){am_pm_a = true;

printTimes();

debounce();

}

autre{}

}

Étape 13:

5. Ici, vous remarquerez quelques sous-programmes que j'ai créés - debounce() et printTimes(). Debounce() est utilisé pour s'assurer que nous ne lisons les boutons qu'une seule fois. Étant donné que l'Arduino scanne des milliers de fois par seconde, il peut penser que le bouton a été enfoncé plusieurs fois alors que vous n'aviez l'intention de le lire qu'une seule fois. Debounce() gèlera le programme jusqu'à ce que le bouton soit relâché. printTimes() met à jour l'écran LCD, mais comme il s'agissait de plusieurs commandes, je les ai tapées une fois, puis je peux appeler le sous-programme à chaque fois qu'une valeur temporelle change.

// Pendant que l'un des boutons est enfoncé, restez dans cette fonction puis retardez 250 ms.

anti-rebond (){

while(digitalRead(set_hr) || digitalRead(set_min) ||

digitalRead(set_am_pm) || digitalRead(set_hr_a) ||

digitalRead(set_min_a) || digitalRead(set_am_pm_a)){} délai (250);

}

// Imprime les heures mises à jour s'il y a des changements

void printTimes(){

Serial.write(12);

Serial.print("Heure actuelle:");

Serial.write(148);

si(heure < 10){

Serial.print("0");

}

Serial.print(heure);

Serial.print(":");

si(minute < 10){

Serial.print("0");

}

Serial.print(minute);Serial.print(":");

si(seconde < 10){

Serial.print("0");

}

Serial.print(second);

si (am_pm){

Serial.print("PM");

}

autre{

Serial.print("AM");

}

Serial.write(168);

Serial.print("Alarme définie pour:");

Serial.write(188);

if(heure_a < 10){

Serial.print("0");

}

Serial.print(hour_a);

Serial.print(":");

if(minute_a < 10){

Serial.print("0");

}

Serial.print(minute_a);

si (am_pm_a){

Serial.print("PM");

}

autre{

Serial.print("AM");

}

}

// Incrémente les paramètres de temps void

garde du temps(){

ettime = millis() - cur_time;

if(etime >= 1000 && seconde < 59){

deuxième++;

cur_time = millis();

printTimes();

}

else if(etime >= 1000 && seconde == 59 && minute < 59){ seconde = 0;

minute++;

cur_time = millis();

printTimes();

}

else if(etime >= 1000 && seconde == 59 && minute == 59 && heure < 12){

seconde = 0; minute =

0; heure++; cur_time =

millièmes (); printTimes();

}

else if(etime >= 1000 && seconde == 59 && minute == 59 && heure == 12){

seconde = 0; minute =

0; heure = 1; am_pm =

!matin après-midi;

cur_time = millis();

printTimes();

}

autre{}

}

Étape 14:

6. C'est tout !

Compilez et téléchargez et vous avez terminé !

Conseillé: