Innehållsförteckning:

Arduino väckarklocka: 14 steg
Arduino väckarklocka: 14 steg

Video: Arduino väckarklocka: 14 steg

Video: Arduino väckarklocka: 14 steg
Video: How to use 4 channel Relay to control AC load with Arduino code 2024, Juli
Anonim
Arduino väckarklocka projekt
Arduino väckarklocka projekt

I detta projekt kommer vi att använda Arduino Uno för att styra en LCD -skärm för att visa aktuell tid och tid som ett larm är inställt för. Vi kommer att använda knapparna för att ställa in varje gång.

Material:

  • Arduino Uno -
  • Breadboard -
  • Jumper Wires (x13+) -
  • 10 kohm -motstånd (x4) -
  • LCD -skärm -
  • 7 Knappar-https://vilros.com/collections/raspberry-pi-acces…
  • Piezo -högtalare -

Steg 1: Anslutningsinstruktioner

Instruktioner för anslutning
Instruktioner för anslutning

1. Anslut en bygelkabel från 5V -stiftet på Arduino till en av + -skenorna på brödbrädet.

Steg 2:

Bild
Bild

2. Anslut en bygelkabel från GND -stiftet på Arduino till - skenan bredvid + skenan du valde på brödbrädan.

Steg 3:

Bild
Bild

3. Anslut LCD -skärmen till ström, jord och TX -stift (stift 1).

Steg 4:

Bild
Bild

4. Placera 7 knappar på brödbrädet med benen tvärs över springan i brödbrädet.

Steg 5:

Bild
Bild

5. Placera 10 kohm -motstånd från - skenan med GND -stiftet anslutet till knapparnas nedre vänstra stift.

Steg 6:

Bild
Bild

6. Placera bygelkablarna mellan knapparnas nedre högra stift och 5V -skenan på din brödbräda.

Steg 7:

Bild
Bild

7. Placera bygelkablar mellan stiften 6, sedan 8-13, och tappen på knappen som motståndet är anslutet till.

Steg 8:

Bild
Bild

8. Lägg sedan din Piezo -högtalare på brödbrädet och anslut stift 7 till strömstiftet, sedan ett 100 ohm motstånd till jord.

Steg 9: Programmeringsinstruktioner

1. Översikt: Detta projekt kommer att be användaren att ställa in den aktuella tiden på startströmmen på displayen den aktuella tiden och den tid alarmet är inställt för. Knapparna som är anslutna ovan används för att ställa in varje gång. Från vänster till höger, de ställs in aktuell timme, ställer in aktuell minut, ställer in aktuell AM eller PM, ställer in alarmtid, ställer in alarmminut, ställer in alarm AM eller PM. Den sista knappen används för att tysta larmet när det ljuder.

Steg 10:

2. Det första vi behöver göra är att initiera vår variabel som vi ska använda.

// Initiera variabler som ska användas under timme = 0; // Timme för aktuell tid int minut = 0; //

Minut för aktuell tid int sekund = 0; // Andra för aktuell tid

int timme_a = 0; int // Timme för larmtid

minut_a = 0; // Minut för larmtid

bool am_pm = false; // AM/PM växla flagga. Falskt är AM, sant är PM

bool am_pm_a = falskt; // AM/PM växla flagga för larm. Falskt är AM, sant är PM

int set_hr = 13; // Använd stift 13 för att ställa in timme

int set_min = 12; // Använd stift 12 för att ställa in minutint

set_am_pm = 11; // Använd stift 11 för att ställa in am/pm

int set_hr_a = 10; // Använd stift 10 för att ställa in timme för alarm int set_min_a = 9; // Använd stift 9 för att ställa in minut för larm int set_am_pm_a = 8; // Använd stift 8 för att ställa in am/pm för larm

int -högtalare = 7; // Nål som ska användas för högtalare: tyst = 6; // Pin för att stoppa högtalaren

bool alarm = false; // Flagga för att växla för att fortsätta vara alarmerande

bool tystas = falskt; // Flaggan som visar tyst har inte tryckts

int cur_time = 0; // Variabel för aktuell tid

int etime = 0; // Variabel för förfluten tid

Steg 11:

3. Därefter måste vi ställa in LCD -skärmen och berätta för användaren att ställa in aktuell tid. Eftersom detta bara behöver göras en gång, gör vi det i installationsrutinen.

void setup () {

// Ställ in LCD -skärm

Serial.begin (9600); // Initiera Serial vid 9600 baud

Serial.write (17); // Slå på bakljuset

Serial.write (24); // Slå på displayen, med markör och ingen blinkning

Serial.write (12); // Rensa skärmen

Serial.write (128); // Flytta markören till övre vänstra hörnet // Ställ in pinModes pinMode (set_hr, INMATNING); 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 (högtalare, OUTPUT);

pinMode (tyst, INGÅNG);

// Vid initial effekt, låt användaren ställa in aktuell tid. Serial.print ("Ställ in aktuell tid"); fördröjning (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Spara aktuell tid}

Steg 12:

4. Sedan, i loop -rutinen, håller vi koll på tiden och läser knappens status för att se om användaren ställer in någon av tiderna.

void loop () {

// Håll tiden

håll tiden();

// Kontrollera om det är dags att larma!

om ((timme == tim_a && minut == minut_a &&! tyst) || larm) {ton (högtalare, 2000, 500); // Mata ut ett ljud på 2000 Hz till högtalaren i 500 ms

fördröjning (500); // Fördröj 500 ms om (! Alarm) {// Om alarmet är avstängt, slå på det

}

}

// Om användaren tystnar larmet genom att trycka på den tysta knappen, sluta larma om (alarm &&! Quieted && digitalRead (tyst)) {

larm = falskt;

tystnad = sant; }

// Återställ larmet om (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Kontrollera om de inställda stiften går högt och öka i så fall motsvarande värde if (digitalRead (set_hr) && hour <12) {

timme ++;

printTimes ();

debounce ();

}

annars om (digitalRead (set_hr) && hour == 12) {hour = 1;

printTimes ();

debounce ();

}

annan{}

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

minut ++; printTimes ();

debounce ();

}

annars om (digitalRead (set_min) && minute == 59) {minute = 0;

printTimes ();

debounce ();

}

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

am_pm = falskt;

printTimes ();

debounce ();

}

annars om (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

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

timme_a ++;

printTimes ();

debounce ();

}

annars om (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

debounce ();

}

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

minut_a ++;

printTimes ();

debounce ();

}

annars om (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

debounce ();

}

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

am_pm_a = falskt;

printTimes ();

debounce ();

}

annars om (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

annan{}

}

Steg 13:

5. Här kommer du att märka ett par underrutiner jag skapade - debounce () och printTimes (). Debounce () används för att se till att vi bara läser knapparna en gång. Eftersom Arduino skannar tusentals gånger per sekund kan det tro att knappen trycktes flera gånger när du bara tänkt att den skulle läsas en gång. Debounce () fryser programmet tills knappen släpps. printTimes () uppdaterar LCD -skärmen, men eftersom det var flera kommandon skrev jag in dem en gång och kan sedan ringa subrutinen när som helst ett tidsvärde ändras.

// Medan någon av knapparna trycks in, stanna kvar i den här funktionen och fördröj sedan 250 ms.

void debounce () {

medan (digitalRead (set_hr) || digitalRead (set_min) ||

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

digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} fördröjning (250);

}

// Skriver ut uppdaterade tider om det finns några ändringar

void printTimes () {

Serial.write (12);

Serial.print ("Aktuell tid:");

Serial.write (148);

om (timme <10) {

Serial.print ("0");

}

Serial.print (timme);

Serial.print (":");

om (minut <10) {

Serial.print ("0");

}

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

om (andra <10) {

Serial.print ("0");

}

Serial.print (andra);

om (am_pm) {

Serial.print ("PM");

}

annan{

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Larm inställt för:");

Serial.write (188);

om (timme_a <10) {

Serial.print ("0");

}

Serial.print (hour_a);

Serial.print (":");

om (minut_a <10) {

Serial.print ("0");

}

Serial.print (minut_a);

om (am_pm_a) {

Serial.print ("PM");

}

annan{

Serial.print ("AM");

}

}

// Öka tidsparametrarna ogiltiga

håll tiden(){

etime = millis () - cur_time;

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

andra ++;

cur_time = millis ();

printTimes ();

}

annars om (etime> = 1000 && second == 59 && minute <59) {second = 0;

minut ++;

cur_time = millis ();

printTimes ();

}

annars om (etime> = 1000 && second == 59 && minute == 59 && timme <12) {

andra = 0; minut =

0; timme ++; cur_time =

millis (); printTimes ();

}

annars om (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

andra = 0; minut =

0; timme = 1; am_pm =

!am PM;

cur_time = millis ();

printTimes ();

}

annan{}

}

Steg 14:

6. Det är det!

Kompilera och ladda upp och du är klar!

Rekommenderad: