Turinys:

„Arduino“žadintuvo projektas: 14 žingsnių
„Arduino“žadintuvo projektas: 14 žingsnių

Video: „Arduino“žadintuvo projektas: 14 žingsnių

Video: „Arduino“žadintuvo projektas: 14 žingsnių
Video: Arduino LED Light Sunrise Alarm Clock 2024, Lapkritis
Anonim
„Arduino“žadintuvo projektas
„Arduino“žadintuvo projektas

Šiame projekte mes naudosime „Arduino Uno“LCD ekranui valdyti, kad būtų rodomas dabartinis laikas ir laikas, kuriam nustatytas žadintuvas. Kiekvieną kartą nustatymui naudosime mygtukus.

Medžiagos:

  • „Arduino Uno“-
  • Duonos lenta -
  • Trumpieji laidai (x13+) -
  • 10 kohm rezistorių (x4) -
  • LCD ekranas -
  • 7 mygtukai-https://vilros.com/collections/raspberry-pi-acces…
  • Pjezo garsiakalbis -

1 žingsnis: prijungimo instrukcijos

Prijungimo instrukcijos
Prijungimo instrukcijos

1. Prijunkite trumpąjį laidą nuo 5 V kištuko ant „Arduino“prie vieno iš + bėgių ant duonos lentos.

2 žingsnis:

Vaizdas
Vaizdas

2. Prijunkite jungiamąjį laidą nuo „Arduino“GND kaiščio prie bėgio, esančio šalia + bėgio, kurį pasirinkote ant duonos lentos.

3 žingsnis:

Vaizdas
Vaizdas

3. Prijunkite LCD ekraną prie maitinimo, įžeminimo ir TX kaiščio (1 kaištis).

4 žingsnis:

Vaizdas
Vaizdas

4. Padėkite 7 mygtukus ant duonos lentos, kojomis skersai duonos lentos.

5 veiksmas:

Vaizdas
Vaizdas

5. Įdėkite 10 kohm rezistorių nuo bėgio su prijungtu GND kaiščiu prie apatinių kairiųjų mygtukų kaiščių.

6 žingsnis:

Vaizdas
Vaizdas

6. Įdėkite trumpiklius tarp apatinio dešiniojo mygtukų kaiščio ir 5V bėgelio ant jūsų duonos lentos.

7 žingsnis:

Vaizdas
Vaizdas

7. Įdėkite trumpiklius tarp 6, tada 8-13 kaiščių ir mygtuko, prie kurio yra prijungtas rezistorius, kaiščio.

8 žingsnis:

Vaizdas
Vaizdas

8. Tada padėkite „Piezo“garsiakalbį ant duonos lentos ir prijunkite 7 kaištį prie maitinimo kaiščio, tada 100 omų rezistorių prie žemės.

9 žingsnis: programavimo instrukcijos

1. Apžvalga: Šis projektas paprašys vartotojo nustatyti dabartinį pradinio maitinimo laiką ekrane dabartinį laiką ir žadintuvo nustatymo laiką. Aukščiau prijungti mygtukai bus naudojami kiekvieną kartą nustatyti. Iš kairės į dešinę jie nustato dabartinę valandą, dabartinę minutę, dabartinę AM arba PM, žadintuvo valandą, žadintuvo minutę, žadintuvą AM arba PM. Paskutinis mygtukas naudojamas nutildyti aliarmą, kai jis skamba.

10 veiksmas:

2. Pirmas dalykas, kurį turime padaryti, yra inicijuoti mūsų kintamąjį, kurį ketiname naudoti.

// Inicijuoti naudojamus kintamuosiusvalandas = 0; // Valanda dabartiniam laikui int minute = 0; //

Esamo laiko minutė int sekundė = 0; // Antras dabartiniam laikui

int valanda_a = 0; int // Žadintuvo valanda

minutė_a = 0; // Žadintuvo laiko minutė

bool am_pm = false; // AM/PM perjungimo vėliava. Netiesa yra AM, tiesa yra PM

bool am_pm_a = klaidinga; // AM/PM perjungimo vėliava aliarmui. Netiesa yra AM, tiesa yra PM

int set_hr = 13; // Naudodami 13 kaištį nustatykite valandą

int set_min = 12; // Naudokite 12 kaištį, kad nustatytumėte minutės int

set_am_pm = 11; // Naudokite 11 kaištį, kad nustatytumėte am/pm

int set_hr_a = 10; // Naudokite 10 kaištį, kad nustatytumėte žadintuvo valandą int set_min_a = 9; // Naudokite 9 kaištį, kad nustatytumėte žadintuvo minutę int set_am_pm_a = 8; // Norėdami nustatyti žadintuvą am/pm, naudokite 8 kaištį

int garsiakalbis = 7; // Smeigtukas, naudojamas garsiakalbiui tyliai = 6; // Prisegti, kad sustabdytumėte garsiakalbį

bool signalizacija = klaidinga; // Žymėti, kad perjungtumėte, kad nerimautumėte

bool tylus = klaidinga; // Vėliava, rodanti tylą, nebuvo nuspausta

int cur_time = 0; // Kintamasis dabartiniam laikui

int etime = 0; // Kintamas laikas

11 veiksmas:

3. Toliau turime nustatyti LCD ekraną ir liepti vartotojui nustatyti dabartinį laiką. Kadangi tai reikia padaryti tik vieną kartą, tai darysime sąrankos metu.

void setup () {

// LCD ekrano nustatymas

Serial.begin (9600); // Inicijuoti seriją 9600 baudų greičiu

Serial.write (17); // Įjunkite galinį apšvietimą

Serial.write (24); // Įjunkite ekraną su žymekliu ir nemirksėkite

Serial.write (12); // Išvalyti ekraną

Serial.write (128); // Perkelti žymeklį į viršutinį kairįjį kampą // Nustatyti pinModes pinMode (set_hr, INPUT); pinMode (set_min, INPUT);

pinMode (nustatyti_am_pm, INPUT);

pinMode (set_hr_a, INPUT);

pinMode (set_min_a, INPUT);

pinMode (nustatyti_am_pm_a, INPUT);

pinMode (garsiakalbis, OUTPUT);

pinMode (tylus, Įvestis);

// Įjungus pradinį maitinimą, leiskite vartotojui nustatyti dabartinį laiką. Serial.print ("Nustatyti dabartinį laiką"); vėlavimas (2000 m.);

Serial.write (12);

printTimes ();

cur_time = milis (); // Išsaugoti dabartinį laiką}

12 žingsnis:

4. Tada ciklo rutinoje mes sekame laiką ir skaitome mygtukų būseną, kad pamatytume, ar vartotojas nustato kurį nors laiką.

void loop () {

// Laikyk laiką

keepTime ();

// Patikrinkite, ar atėjo laikas įspėti!

if ((valanda == valanda_a && minutė == minutė_a &&! nutildyta) || žadintuvas) {tonas (garsiakalbis, 2000, 500); // Išveskite 2000 Hz garsą į garsiakalbį 500 ms

vėlavimas (500); // Atidėkite 500 ms, jei (! Signalizacija) {// Jei signalas išjungtas, įjunkite jį

}

}

// Jei naudotojas nutildo signalą paspausdamas tylų mygtuką, nustokite nerimauti, jei (alarm &&! Quieted && digitalRead (tyliai)) {

aliarmas = klaidingas;

tylus = tiesa; }

// Iš naujo nustatyti žadintuvą, jei (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Patikrinkite, ar nustatyti kaiščiai yra aukšti, ir jei taip, padidinkite atitinkamą reikšmęif (digitalRead (set_hr) && hour <12) {

valanda ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

Kitas{}

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

minutė ++; 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) {

valanda_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 = klaidinga;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

Kitas{}

}

13 žingsnis:

5. Čia pastebėsite porą mano sukurtų paprogramių - debounce () ir printTimes (). Debounce () naudojamas norint įsitikinti, kad mygtukus skaitome tik vieną kartą. Kadangi „Arduino“nuskaito tūkstančius kartų per sekundę, jis gali manyti, kad mygtukas buvo paspaustas kelis kartus, kai ketinote jį perskaityti tik vieną kartą. Debounce () užšaldys programą, kol mygtukas bus atleistas. „printTimes“() atnaujina LCD ekraną, bet kadangi tai buvo kelios komandos, jas vieną kartą įvedžiau ir tada galiu paskambinti paprogramei bet kuriuo metu, kai pasikeičia laiko vertė.

// Kol spaudžiamas bet kuris mygtukas, pasilikite šią funkciją ir atidėkite 250 ms.

void 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)) {} delsa (250);

}

// Spausdina atnaujintą laiką, jei yra kokių nors pakeitimų

void printTimes () {

Serial.write (12);

Serial.print ("Dabartinis laikas:");

Serial.write (148);

jei (valanda <10) {

Serial.print ("0");

}

Serijinis atspaudas (valanda);

Serial.print (":");

jei (minutė <10) {

Serial.print ("0");

}

Serijos atspaudas (minutė); Serijos atspaudas („:“);

jei (antra <10) {

Serial.print ("0");

}

Serial.print (antras);

jei (am_pm) {

Serial.print („PM“);

}

Kitas{

Serial.print („AM“);

}

Serial.write (168);

Serial.print ("Alarm Set for:");

Serial.write (188);

jei (valanda_a <10) {

Serial.print ("0");

}

Serijinis atspaudas (valanda_a);

Serial.print (":");

jei (minutė_a <10) {

Serial.print ("0");

}

Serijinis atspaudas (minutė_a);

jei (am_pm_a) {

Serial.print („PM“);

}

Kitas{

Serial.print („AM“);

}

}

// Laiko parametrų padidinimas tuščias

keepTime () {

etime = millis () - cur_time;

if (etime> = 1000 && sekundė <59) {

antras ++;

cur_time = milis ();

printTimes ();

}

kitaip jei (etime> = 1000 && second == 59 && minute <59) {second = 0;

minutė ++;

cur_time = milis ();

printTimes ();

}

kitaip jei (etime> = 1000 && sekundė == 59 && minutė == 59 && valanda <12) {

antras = 0; minutė =

0; valanda ++; cur_time =

milis (); printTimes ();

}

kitaip jei (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

antras = 0; minutė =

0; valanda = 1; am_pm =

!ryto vakaro;

cur_time = milis ();

printTimes ();

}

Kitas{}

}

14 žingsnis:

6. Štai ir viskas!

Surinkite ir įkelkite - ir viskas!

Rekomenduojamas: