INHOUDSOPGAWE:

Arduino -wekkerprojek: 14 stappe
Arduino -wekkerprojek: 14 stappe

Video: Arduino -wekkerprojek: 14 stappe

Video: Arduino -wekkerprojek: 14 stappe
Video: Измерьте ток до 500A с помощью шунтирующего резистора с помощью Arduino 2024, November
Anonim
Arduino -wekkerprojek
Arduino -wekkerprojek

In hierdie projek gebruik ons die Arduino Uno om 'n LCD -skerm te beheer om die huidige tyd en tyd te wys waarvoor 'n alarm ingestel is. Ons gebruik elke keer knoppies om in te stel.

Materiaal:

  • Arduino Uno -
  • Breadboard -
  • Jumper Wires (x13+) -
  • 10 kohm weerstande (x4) -
  • LCD -skerm -
  • 7 knoppies-https://vilros.com/collections/raspberry-pi-acces…
  • Piezo -luidspreker -

Stap 1: Aansluitingsinstruksies

Aansluitingsinstruksies
Aansluitingsinstruksies

1. Koppel 'n jumperdraad van die 5V -pen op die Arduino aan een van die + relings op die broodbord.

Stap 2:

Beeld
Beeld

2. Koppel 'n jumperdraad van die GND -pen op die Arduino aan die - rail langs die + rail wat u op die broodbord gekies het.

Stap 3:

Beeld
Beeld

3. Koppel die LCD -skerm aan op krag, grond en die TX -pen (pen 1).

Stap 4:

Beeld
Beeld

4. Plaas 7 knoppies op die broodbord met die pote oor die gaping in die broodbord.

Stap 5:

Beeld
Beeld

5. Plaas 10 kohm -weerstande van die - rail met die GND -pen daaraan gekoppel aan die onderste penne van die knoppies.

Stap 6:

Beeld
Beeld

6. Plaas springdrade tussen die regterkantste pen van die knoppies en die 5V -reling op u broodbord.

Stap 7:

Beeld
Beeld

7. Plaas springdrade tussen penne 6, dan 8-13, en die pen op die knoppie waarmee die weerstand gekoppel is.

Stap 8:

Beeld
Beeld

8. Plaas dan u Piezo -luidspreker op die broodbord en verbind pen 7 met die kragpen, dan 'n weerstand van 100 ohm aan die grond.

Stap 9: programmeringsinstruksies

1. Oorsig: Hierdie projek sal die gebruiker vra om die huidige tyd op aanvanklike krag op die skerm die huidige tyd en die tyd waarop die alarm ingestel is, in te stel. Die knoppies wat hierbo gekoppel is, sal elke keer gebruik word om in te stel. Van links na regs word die huidige uur, die huidige minuut, die huidige AM of PM ingestel, die alarmuur, die alarmminuut, die alarm AM of die PM ingestel. Die laaste knoppie word gebruik om die alarm stil te maak wanneer dit klink.

Stap 10:

2. Die eerste ding wat ons moet doen, is om ons veranderlike wat ons gaan gebruik, te initialiseer.

// Initialiseer veranderlikes wat gebruik moet word in uur = 0; // Uur vir huidige tyd int minuut = 0; //

Minuut vir huidige tyd int tweede = 0; // Tweede vir die huidige tyd

int uur_a = 0; int // Uur vir alarmtyd

minuut_a = 0; // Minute vir alarmtyd

bool am_pm = vals; // AM/PM wissel vlag. Onwaar is AM, waar is PM

bool am_pm_a = vals; // AM/PM skakel vlag vir alarm. Onwaar is AM, waar is PM

int set_hr = 13; // Gebruik pen 13 om die uur in te stel

int set_min = 12; // Gebruik pin 12 om die minuut int te stel

stel_am_pm = 11; // Gebruik speld 11 om am/pm in te stel

int set_hr_a = 10; // Gebruik pin 10 om die uur in te stel vir alarm int set_min_a = 9; // Gebruik pin 9 om die minuut in te stel vir alarm int set_am_pm_a = 8; // Gebruik pin 8 om am/pm vir alarm in te stel

int spreker = 7; // Speld om te gebruik vir luidspreker: nie stil nie = 6; // Speld om die luidspreker te stop

bool alarm = vals; // Vlag om te skakel om aan te hou alarm

bool stilgemaak = vals; // Vlag wat stil wys, is nie ingedruk nie

int cur_time = 0; // Veranderlik vir huidige tyd

int etime = 0; // Veranderlik vir verloop van tyd

Stap 11:

3. Vervolgens moet ons die LCD -skerm opstel en die gebruiker vertel om die huidige tyd in te stel. Aangesien dit slegs een keer gedoen moet word, doen ons dit in die opstelroetine.

ongeldige opstelling () {

// Stel 'n LCD -skerm op

Serial.begin (9600); // Initialiseer Serial op 9600 baud

Reeks.skryf (17); // Skakel die agterlig aan

Reeks.skryf (24); // Skakel die skerm aan met die wyser en sonder om te knip

Reeks.skryf (12); // Maak die skerm skoon

Reeks.skryf (128); // Beweeg wyser na linker boonste hoek // Stel pinModes pinMode (set_hr, INVOER); 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 (luidspreker, UITGANG);

pinMode (stil, INVOER);

// Stel die gebruiker die huidige tyd op aanvanklike krag in. Serial.print ("Stel die huidige tyd in"); vertraging (2000);

Reeks.skryf (12);

printTimes ();

cur_time = millis (); // Stoor die huidige tyd}

Stap 12:

4. Dan hou ons in die looproetine die tyd dop en lees ons die status van die knoppies om te sien of die gebruiker een van die tye instel.

leemte -lus () {

// Hou tyd

keepTime ();

// Kyk of dit tyd is om te alarm!

as ((uur == uur_a && minuut == minuut_a &&! stilgemaak) || alarm) {toon (spreker, 2000, 500); // Gee 'n geluid van 2000 Hz aan die luidspreker vir 500 ms

vertraging (500); // Vertraag 500 ms as (! Alarm) {// As alarm af is, skakel dit aan

}

}

// As die gebruiker die alarm stilmaak deur op die stil knoppie te druk, stop die alarm as (alarm &&! Stilgemaak && digitalRead (stil)) {

alarm = vals;

stilgemaak = waar; }

// Stel die alarm terug as (! Alarm && stilgemaak && minute! = Minute_a) {stil = valse;

}

// Kontroleer of die stelpenne hoog word, en verhoog die ooreenstemmende waarde as (digitalRead (set_hr) && uur <12) {

uur ++;

printTimes ();

debounce ();

}

anders as (digitalRead (set_hr) && hour == 12) {uur = 1;

printTimes ();

debounce ();

}

anders {}

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

minuut ++; printTimes ();

debounce ();

}

anders as (digitalRead (set_min) && minute == 59) {minute = 0;

printTimes ();

debounce ();

}

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

am_pm = vals;

printTimes ();

debounce ();

}

anders as (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

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

uur_a ++;

printTimes ();

debounce ();

}

anders as (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

debounce ();

}

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

minute_a ++;

printTimes ();

debounce ();

}

anders as (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

debounce ();

}

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

am_pm_a = vals;

printTimes ();

debounce ();

}

anders as (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

anders {}

}

Stap 13:

5. Hier sien u 'n paar onderroetines wat ek geskep het - debounce () en printTimes (). Debounce () word gebruik om seker te maak dat ons slegs die knoppies een keer lees. Aangesien die Arduino duisende kere per sekonde skandeer, dink hy miskien dat die knoppie 'n paar keer ingedruk is as u dit net een keer wou lees. Debounce () sal die program vries totdat die knoppie losgemaak word. printTimes () werk die LCD -skerm op, maar aangesien dit verskeie opdragte was, het ek dit een keer getik en dan kan ek die subroutine bel wanneer die tydwaarde verander.

// Terwyl enige van die knoppies ingedruk word, bly in hierdie funksie en vertraag dan 250 ms.

leegte debounce () {

terwyl (digitalRead (set_hr) || digitalRead (set_min) ||

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

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

}

// Druk die opgedateerde tye af as daar veranderinge is

void printTimes () {

Reeks.skryf (12);

Serial.print ("Huidige tyd:");

Reeks.skryf (148);

as (uur <10) {

Serial.print ("0");

}

Reeks.afdruk (uur);

Serial.print (":");

as (minuut <10) {

Serial.print ("0");

}

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

as (tweede <10) {

Serial.print ("0");

}

Serial.print (tweede);

as (am_pm) {

Serial.print ("PM");

}

anders {

Serial.print ("AM");

}

Reeks.skryf (168);

Serial.print ("Alarm gestel vir:");

Reeks.skryf (188);

as (uur_a <10) {

Serial.print ("0");

}

Reeks.afdruk (uur_a);

Serial.print (":");

as (minute_a <10) {

Serial.print ("0");

}

Reeks.afdruk (minute_a);

as (am_pm_a) {

Serial.print ("PM");

}

anders {

Serial.print ("AM");

}

}

// Verhoog die tydparameters leeg

keepTime () {

etime = millis () - cur_time;

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

tweede ++;

cur_time = millis ();

printTimes ();

}

anders as (etime> = 1000 && second == 59 && minute <59) {second = 0;

minuut ++;

cur_time = millis ();

printTimes ();

}

anders as (etime> = 1000 && second == 59 && minute == 59 && uur <12) {

tweede = 0; minuut =

0; uur ++; cur_time =

millis (); printTimes ();

}

anders as (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

tweede = 0; minuut =

0; uur = 1; am_pm =

! am_pm;

cur_time = millis ();

printTimes ();

}

anders {}

}

Stap 14:

6. Dit is dit!

Stel op en laai op en u is klaar!

Aanbeveel: