Taula de continguts:

Projecte de despertador Arduino: 14 passos
Projecte de despertador Arduino: 14 passos

Vídeo: Projecte de despertador Arduino: 14 passos

Vídeo: Projecte de despertador Arduino: 14 passos
Vídeo: Projeto de Robótica e Automação usando Arduino Robô Paletizador 2024, De novembre
Anonim
Projecte de despertador Arduino
Projecte de despertador Arduino

En aquest projecte, utilitzarem l’Arduino Uno per controlar una pantalla LCD per mostrar l’hora i l’hora actuals per a les quals s’estableix una alarma. Utilitzarem botons per configurar-los cada vegada.

Materials:

  • Arduino Uno -
  • Taula de pa:
  • Jumper Wires (x13 +) -
  • 10 resistències de kohm (x4) -
  • Pantalla LCD:
  • 7 botons:
  • Piezo Speaker:

Pas 1: instruccions de connexió

Instruccions de connexió
Instruccions de connexió

1. Connecteu un cable de pont des del pin de 5 V a l'Arduino a un dels rails + de la placa de control.

Pas 2:

Imatge
Imatge

2. Connecteu un cable de pont des del passador GND a l'Arduino al carril - al costat del carril + que heu triat a la taula de tall.

Pas 3:

Imatge
Imatge

3. Connecteu la pantalla LCD a l'alimentació, a terra i al pin TX (pin 1).

Pas 4:

Imatge
Imatge

4. Col·loqueu 7 botons a la pissarra amb les potes sobre l’espai de la pissarra.

Pas 5:

Imatge
Imatge

5. Col·loqueu resistències de 10 kohm des del carril - amb el pin GND connectat als pins de la part inferior esquerra dels botons.

Pas 6:

Imatge
Imatge

6. Col·loqueu els cables de pont entre el passador inferior dret dels botons i el carril de 5V de la taula de suport.

Pas 7:

Imatge
Imatge

7. Col·loqueu els cables del pont entre els pins 6 i després 8-13 i el pin del botó al qual està connectada la resistència.

Pas 8:

Imatge
Imatge

8. A continuació, col·loqueu l'altaveu Piezo a la placa de connexió i connecteu el pin 7 al pin d'alimentació i, a continuació, una resistència de 100 ohm a terra.

Pas 9: instruccions de programació

1. Visió general: aquest projecte demanarà a l’usuari que estableixi l’hora actual a l’alimentació inicial de la pantalla, l’hora actual i l’hora en què s’estableix l’alarma. Els botons connectats més amunt s’utilitzaran per configurar-los cada vegada. D’esquerra a dreta, s’estableixen l’hora actual, es defineixen els minuts actuals, es defineixen l’actual AM o PM, es defineixen l’hora de l’alarma, es defineixen els minuts d’alarma, es defineixen les alarmes AM o PM. L’últim botó s’utilitza per silenciar l’alarma quan sona.

Pas 10:

2. El primer que hem de fer és inicialitzar la variable que utilitzarem.

// Inicialitzar les variables a utilitzar en hora = 0; // Hora de l'hora actual int minut = 0; //

Minut per al temps actual int segon = 0; // Segon per a l’hora actual

int hora_a = 0; int // Hora per a l’hora d’alarma

minut_a = 0; // Minut per a l'hora d'alarma

bool am_pm = false; // Marca de commutació AM / PM. Fals és AM, True és PM

bool am_pm_a = false; // Canvia la bandera AM / PM per alarma. Fals és AM, True és PM

int set_hr = 13; // Utilitzeu el pin 13 per configurar l'hora

int set_min = 12; // Utilitzeu el pin 12 per definir el minut int

set_am_pm = 11; // Utilitzeu el pin 11 per definir am / pm

int set_hr_a = 10; // Utilitzeu el pin 10 per configurar l'hora de l'alarma int set_min_a = 9; // Utilitzeu el pin 9 per definir el minut de l'alarma int set_am_pm_a = 8; // Utilitzeu el pin 8 per definir am / pm com a alarma

int speaker = 7; // Pin per utilitzar per als altaveusint quiet = 6; // Fixa per aturar l’altaveu

alarma bool = falsa; // Marca per alternar per mantenir alarmant

bool quieted = fals; // No s'ha premut la bandera que mostra silenci

int cur_time = 0; // Variable per a l’hora actual

int etime = 0; // Variable pel temps transcorregut

Pas 11:

3. A continuació, hem de configurar la pantalla LCD i dir-li a l'usuari que defineixi l'hora actual. Com que només cal fer-ho una vegada, ho farem a la rutina de configuració.

configuració nul·la () {

// Configureu la pantalla LCD

Serial.begin (9600); // Inicialitzar la sèrie a 9600 baud

Serial.write (17); // Enceneu la llum del darrere

Serial.write (24); // Activeu la pantalla, amb el cursor i sense parpellejar

Serial.write (12); // Esborreu la pantalla

Serial.write (128); // Mou el cursor a l'extrem superior esquerre // Estableix pinModes pinMode (set_hr, INPUT); 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 (altaveu, OUTPUT);

pinMode (quiet, INPUT);

// A l'alimentació inicial, haureu de configurar l'hora actual de l'usuari. Serial.print ("Estableix l'hora actual"); endarreriment (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Emmagatzema l'hora actual}

Pas 12:

4. A continuació, a la rutina de bucles, fem un seguiment de l’hora i llegim l’estat del botó per veure si l’usuari està configurant alguna de les vegades.

bucle buit () {

// Mantenir el temps

keepTime ();

// Comproveu si és hora d’alarmar!

if ((hour == hour_a && minute == minute_a &&! quieted) || alarm) {to (altaveu, 2000, 500); // Emet un so de 2000 Hz a l’altaveu durant 500 ms

retard (500); // Retardar 500 ms si (! Alarm) {// Si l’alarma està desactivada, activeu-la

}

}

// Si l'usuari silencia l'alarma prement el botó de silenci, deixeu d'alarmar si (alarm &&! Quieted && digitalRead (quiet)) {

alarma = fals;

quieted = cert; }

// Restableix l'alarma si (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Comproveu si els pins establerts són alts i, si és així, incrementeu el valor corresponent (digitalRead (set_hr) && hour <12) {

hora ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

més {}

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 = false;

printTimes ();

debounce ();

}

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

debounce ();

}

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

hora_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) {

minut_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 = false;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

més {}

}

Pas 13:

5. Aquí, notareu un parell de subrutines que he creat: debounce () i printTimes (). Debounce () s’utilitza per assegurar-nos que només llegim els botons una vegada. Atès que l'Arduino escaneja milers de vegades per segon, és possible que pensi que es prem el botó diverses vegades quan només es volia llegir una vegada. Debounce () congelarà el programa fins que es deixi anar el botó. printTimes () actualitza la pantalla LCD, però, ja que es tractava de diverses ordres, les he escrit una vegada i després puc trucar a la subrutina cada vegada que canviï un valor horari.

// Mentre es prem qualsevol dels botons, mantingueu-vos en aquesta funció i retardeu 250 ms.

buid debounce () {

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

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

digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} delay (250);

}

// Imprimeix els horaris actualitzats si hi ha canvis

void printTimes () {

Serial.write (12);

Serial.print ("Hora actual:");

Serial.write (148);

si (hora <10) {

Serial.print ("0");

}

Serial.print (hora);

Serial.print (":");

si (minut <10) {

Serial.print ("0");

}

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

si (segon <10) {

Serial.print ("0");

}

Serial.print (segon);

if (am_pm) {

Serial.print ("PM");

}

més {

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Conjunt d'alarma per a:");

Serial.write (188);

if (hora_a <10) {

Serial.print ("0");

}

Serial.print (hour_a);

Serial.print (":");

si (minut_a <10) {

Serial.print ("0");

}

Serial.print (minut_a);

if (am_pm_a) {

Serial.print ("PM");

}

més {

Serial.print ("AM");

}

}

// Incrementeu els paràmetres de temps buits

keepTime () {

etime = millis () - cur_time;

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

segon ++;

cur_time = millis ();

printTimes ();

}

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

minut ++;

cur_time = millis ();

printTimes ();

}

else if (etime> = 1000 && second == 59 && minute == 59 && hour <12) {

segon = 0; minut =

0; hora ++; cur_time =

millis (); printTimes ();

}

else if (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

segon = 0; minut =

0; hora = 1; am_pm =

!am PM;

cur_time = millis ();

printTimes ();

}

més {}

}

Pas 14:

6. Això és tot!

Compileu i pengeu i ja heu acabat.

Recomanat: