Indholdsfortegnelse:

Arduino vækkeurprojekt: 14 trin
Arduino vækkeurprojekt: 14 trin

Video: Arduino vækkeurprojekt: 14 trin

Video: Arduino vækkeurprojekt: 14 trin
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Juli
Anonim
Arduino vækkeurprojekt
Arduino vækkeurprojekt

I dette projekt vil vi bruge Arduino Uno til at styre en LCD -skærm for at vise den aktuelle tid og tid, som en alarm er indstillet til. Vi vil bruge knapper til at indstille hver gang.

Materialer:

  • Arduino Uno -
  • Breadboard -
  • Jumper Wires (x13+) -
  • 10 kohm modstande (x4) -
  • LCD -skærm -
  • 7 knapper-https://vilros.com/collections/raspberry-pi-acces…
  • Piezo -højttaler -

Trin 1: Tilslutningsinstruktioner

Tilslutningsinstruktioner
Tilslutningsinstruktioner

1. Tilslut en jumperledning fra 5V -stiften på Arduino til en af + skinnerne på brødbrættet.

Trin 2:

Billede
Billede

2. Tilslut en jumperledning fra GND -stiften på Arduino til - skinnen ved siden af + skinnen, du valgte på brødbrættet.

Trin 3:

Billede
Billede

3. Tilslut LCD -skærmen til strøm, jord og TX -pin (pin 1).

Trin 4:

Billede
Billede

4. Placer 7 knapper på brødbrættet med benene på tværs af hullet i brødbrættet.

Trin 5:

Billede
Billede

5. Placer 10 kohm -modstande fra - skinnen med GND -stiften forbundet til den nederste venstre ben på knapperne.

Trin 6:

Billede
Billede

6. Placer jumperwires mellem knappernes nederste højre ben og 5V -skinnen på dit brødbræt.

Trin 7:

Billede
Billede

7. Anbring jumperkabler mellem stifter 6, derefter 8-13, og tappen på knappen, som modstanden er forbundet til.

Trin 8:

Billede
Billede

8. Anbring derefter din Piezo -højttaler på brødbrættet, og tilslut pin 7 til strømstiften, derefter en 100 ohm modstand til jorden.

Trin 9: Programmeringsinstruktioner

1. Oversigt: Dette projekt vil bede brugeren om at indstille den aktuelle tid på startstrømmen på displayet den aktuelle tid og den tid, alarmen er indstillet til. Knapperne tilsluttet ovenfor bruges til at indstille hver gang. Fra venstre mod højre indstilles de aktuelle timer, indstillede aktuelle minutter, indstillede aktuelle AM eller PM, alarmtimer, alarmminutter, alarm AM eller PM indstilles. Den sidste knap bruges til at dæmpe alarmen, når den lyder.

Trin 10:

2. Den første ting, vi skal gøre, er at initialisere vores variabel, vi skal bruge.

// Initialiser variabler, der skal bruges i timen = 0; // Time for aktuel tid int minut = 0; //

Minut for den aktuelle tid int sekund = 0; // Andet for den aktuelle tid

int time_a = 0; int // Time for alarmtid

minut_a = 0; // Minut for alarmtid

bool am_pm = falsk; // AM/PM skift flag. Falsk er AM, sand er PM

bool am_pm_a = falsk; // AM/PM skifteflag til alarm. Falsk er AM, sand er PM

int set_hr = 13; // Brug pin 13 til at indstille time

int set_min = 12; // Brug pin 12 til at indstille minutint

sæt_am_pm = 11; // Brug pin 11 til at indstille am/pm

int set_hr_a = 10; // Brug pin 10 til at indstille time for alarm int set_min_a = 9; // Brug pin 9 til at indstille minut for alarm int set_am_pm_a = 8; // Brug pin 8 til at indstille am/pm til alarm

int -højttaler = 7; // Pin til brug til højttalerint stille = 6; // Pin for at stoppe højttaleren

bool alarm = falsk; // Flag for at skifte for at blive ved med at være alarmerende

bool quieted = falsk; // Flag, der viser stille, er ikke blevet trykket

int cur_time = 0; // Variabel for aktuel tid

int etime = 0; // Variabel for forløbet tid

Trin 11:

3. Dernæst skal vi konfigurere LCD -skærmen og fortælle brugeren at indstille den aktuelle tid. Da dette kun skal gøres én gang, gør vi det i installationsrutinen.

ugyldig opsætning () {

// Opsætning af LCD -skærm

Serial.begin (9600); // Initialiser seriel ved 9600 baud

Serial.write (17); // Tænd baglyset

Serial.write (24); // Tænd for displayet med markøren og uden blink

Serial.write (12); // Ryd skærmen

Serial.write (128); // Flyt markøren til øverste venstre hjørne // Indstil 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 (højttaler, OUTPUT);

pinMode (stille, INPUT);

// Ved første strøm, skal brugeren indstille det aktuelle tidspunkt. Serial.print ("Indstil det aktuelle tidspunkt"); forsinkelse (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Gem det aktuelle tidspunkt}

Trin 12:

4. Derefter holder vi i loop -rutinen styr på tiden og læser knapstatus for at se, om brugeren indstiller et af tidspunkterne.

void loop () {

// Hold tid

keepTime ();

// Kontroller, om det er tid til at alarmere!

hvis ((time == time_a && minut == minut_a &&! stille) || alarm) {tone (højttaler, 2000, 500); // Udsend en lyd på 2000 Hz til højttaleren i 500 ms

forsinkelse (500); // Forsink 500 ms, hvis (! Alarm) {// Hvis alarmen er slået fra, skal du tænde den

}

}

// Hvis brugeren dæmper alarmen ved at trykke på den stille knap, skal du stoppe alarmen, hvis (alarm &&! Quieted && digitalRead (quiet)) {

alarm = falsk;

stille = sandt; }

// Nulstil alarmen hvis (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Kontroller, om de indstillede stifter går højt, og stig i givet fald den tilsvarende værdi if (digitalRead (set_hr) && time <12) {

time ++;

printTimes ();

debounce ();

}

ellers hvis (digitalRead (set_hr) && time == 12) {time = 1;

printTimes ();

debounce ();

}

andet{}

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

minut ++; printTimes ();

debounce ();

}

ellers hvis (digitalRead (set_min) && minut == 59) {minut = 0;

printTimes ();

debounce ();

}

ellers {} hvis (digitalRead (set_am_pm) && am_pm) {

am_pm = falsk;

printTimes ();

debounce ();

}

ellers hvis (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

ellers {} hvis (digitalRead (set_hr_a) && time_a <12) {

time_a ++;

printTimes ();

debounce ();

}

ellers hvis (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

debounce ();

}

ellers {} hvis (digitalRead (set_min_a) && minut_a <59) {

minut_a ++;

printTimes ();

debounce ();

}

ellers hvis (digitalRead (set_min) && minut_a == 59) {minut_a = 0;

printTimes ();

debounce ();

}

ellers {} hvis (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = falsk;

printTimes ();

debounce ();

}

ellers hvis (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

andet{}

}

Trin 13:

5. Her vil du bemærke et par underrutiner, jeg har oprettet - debounce () og printTimes (). Debounce () bruges til at sikre, at vi kun læser knapperne én gang. Da Arduino scanner tusinder af gange i sekundet, tror den måske, at der blev trykket på knappen flere gange, når du kun havde til hensigt at læse den en gang. Debounce () fryser programmet, indtil knappen slippes. printTimes () opdaterer LCD -skærmen, men da det var flere kommandoer, skrev jeg dem en gang og kan derefter ringe til underprogrammet når som helst en tidsværdi ændres.

// Mens der trykkes på en af knapperne, skal du blive i denne funktion og derefter forsinke 250 ms.

void debounce () {

mens (digitalRead (set_hr) || digitalRead (set_min) ||

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

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

}

// Udskriver de opdaterede tider, hvis der er ændringer

void printTimes () {

Serial.write (12);

Serial.print ("Aktuel tid:");

Serial.write (148);

hvis (time <10) {

Serial.print ("0");

}

Seriel.print (time);

Serial.print (":");

hvis (minut <10) {

Serial.print ("0");

}

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

hvis (anden <10) {

Serial.print ("0");

}

Serial.print (andet);

hvis (am_pm) {

Serial.print ("PM");

}

andet{

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Alarm indstillet til:");

Serial.write (188);

hvis (time_a <10) {

Serial.print ("0");

}

Serial.print (time_a);

Serial.print (":");

hvis (minut_a <10) {

Serial.print ("0");

}

Serial.print (minut_a);

hvis (am_pm_a) {

Serial.print ("PM");

}

andet{

Serial.print ("AM");

}

}

// Øg tidsparametrene ugyldige

keepTime () {

etime = millis () - cur_time;

hvis (etime> = 1000 && sekund <59) {

andet ++;

cur_time = millis ();

printTimes ();

}

ellers hvis (etime> = 1000 && second == 59 && minut <59) {second = 0;

minut ++;

cur_time = millis ();

printTimes ();

}

ellers hvis (etime> = 1000 && second == 59 && minut == 59 && time <12) {

andet = 0; minut =

0; time ++; cur_time =

millis (); printTimes ();

}

ellers hvis (etime> = 1000 && sekund == 59 && minut == 59 && time == 12) {

andet = 0; minut =

0; time = 1; am_pm =

! am_pm;

cur_time = millis ();

printTimes ();

}

andet{}

}

Trin 14:

6. Det er det!

Kompilér og upload, og du er færdig!

Anbefalede: