Sisällysluettelo:
- Vaihe 1: Liitäntäohjeet
- Vaihe 2:
- Vaihe 3:
- Vaihe 4:
- Vaihe 5:
- Vaihe 6:
- Vaihe 7:
- Vaihe 8:
- Vaihe 9: Ohjelmointiohjeet
- Vaihe 10:
- Vaihe 11:
- Vaihe 12:
- Vaihe 13:
- Vaihe 14:
Video: Arduino -herätyskelloprojekti: 14 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Tässä projektissa käytämme Arduino Unoa LCD -näytön ohjaamiseen näyttämään kellonaika ja aika, jolle hälytys on asetettu. Käytämme painikkeita asettaaksemme joka kerta.
Materiaalit:
- Arduino Uno -
- Breadboard -
- Hyppyjohdot (x13+) -
- 10 kohm vastusta (x4) -
- LCD -näyttö -
- 7 painiketta-https://vilros.com/collections/raspberry-pi-acces…
- Pietsokaiutin -
Vaihe 1: Liitäntäohjeet
1. Kytke hyppyjohto Arduinon 5 V: n nastasta johonkin leipälevyn + kiskoon.
Vaihe 2:
2. Kytke hyppyjohto Arduinon GND -nastasta leipälaudalla valitsemasi + -kiskon vieressä olevaan - kiskoon.
Vaihe 3:
3. Liitä nestekidenäyttö virtalähteeseen, maahan ja TX -nastaan (nasta 1).
Vaihe 4:
4. Aseta 7 painiketta leipälaudalle jalat leipälaudan raon yli.
Vaihe 5:
5. Aseta 10 kohmin vastusta - kiskosta ja GND -nasta on kytketty siihen painikkeiden vasempaan alakulmaan.
Vaihe 6:
6. Aseta hyppyjohdot painikkeiden oikean alakulman ja leipälevyn 5 V: n kiskon väliin.
Vaihe 7:
7. Aseta hyppyjohtimet nastojen 6, sitten 8-13 ja vastuksen liitetyn painikkeen väliin.
Vaihe 8:
8. Aseta seuraavaksi Piezo -kaiutin leipälevylle ja liitä nasta 7 virtatappiin ja sitten 100 ohmin vastus maahan.
Vaihe 9: Ohjelmointiohjeet
1. Yleiskatsaus: Tämä projekti pyytää käyttäjää asettamaan nykyisen kellonajan käynnistyksen yhteydessä näytölle nykyisen ajan ja hälytyksen asettamisajan. Yllä olevia painikkeita käytetään asettamaan joka kerta. Vasemmalta oikealle asetetaan nykyinen tunti, asetetaan nykyinen minuutti, asetetaan nykyinen AM tai PM, asetetaan herätysaika, asetetaan hälytys minuutti, asetetaan hälytys AM tai PM. Viimeistä painiketta käytetään mykistämään hälytys, kun se soi.
Vaihe 10:
2. Ensimmäinen asia, joka meidän on tehtävä, on alustaa muuttuja, jota aiomme käyttää.
// Alusta käytettävät muuttujattunti = 0; // Tunti nykyiselle ajalle int minuutti = 0; //
Nykyisen ajan minuutti int sekunti = 0; // Toinen ajankohta
int tunti_a = 0; int // Hälytysaika
minuutti_a = 0; // Hälytysajan minuutti
bool am_pm = false; // AM/PM toggle flag. False on AM, True on PM
bool am_pm_a = epätosi; // AM/PM toggle flag for alarm. False on AM, True on PM
int set_hr = 13; // Aseta tunti näppäimellä 13
int set_min = 12; // Määritä minuutti int. Näppäimellä 12
set_am_pm = 11; // Käytä nasta 11 asettaaksesi am/pm
int set_hr_a = 10; // Aseta nasta 10 hälytyksen tunnille int set_min_a = 9; // Aseta nastalla 9 hälytyksen minuutit int set_am_pm_a = 8; // Aseta hälytys am/pm näppäimellä 8
int kaiutin = 7; // Kiinnitin käytettäväksi kaiutinint hiljainen = 6; // Pysäytä kaiutin
bool hälytys = epätosi; // Vaihda merkitsemällä hälytys
bool hiljainen = väärä; // Hiljaisuutta osoittavaa lippua ei ole painettu
int cur_time = 0; // Muuttuja nykyiseen aikaan
int etime = 0; // Muuttuja kuluneelle ajalle
Vaihe 11:
3. Seuraavaksi meidän on asetettava nestekidenäyttö ja kerrottava käyttäjälle, että hän asettaa kellonajan. Koska tämä on tehtävä vain kerran, teemme sen asennusohjelmassa.
void setup () {
// Aseta LCD -näyttö
Sarja.alku (9600); // Alusta sarja 9600 baudilla
Sarja.kirjoitus (17); // Kytke taustavalo päälle
Sarja.kirjoitus (24); // Kytke näyttö päälle ilman kohdistinta
Sarja.kirjoitus (12); // Tyhjennä näyttö
Sarja.kirjoitus (128); // Siirrä kohdistin vasempaan yläkulmaan // Aseta 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 (kaiutin, OUTPUT);
pinMode (hiljainen, INPUT);
// Käynnistä virta, anna käyttäjän asettaa kellonaika. Serial.print ("Aseta nykyinen aika"); viive (2000);
Sarja.kirjoitus (12);
printTimes ();
cur_time = millis (); // Tallenna nykyinen aika}
Vaihe 12:
4. Seuraamme sitten silmukkarutiinissa aikaa ja luemme painikkeen tilan nähdäksemme, onko käyttäjä asettanut kumpaakaan aikaa.
void loop () {
// Pidä aikaa
keepTime ();
// Tarkista, onko aika hälyttää!
if ((tunti == tunti_a && minuutti == minuutti_a &&! hiljentynyt) || hälytys) {ääni (kaiutin, 2000, 500); // Lähettää 2000 Hz: n äänen kaiuttimeen 500 ms
viive (500); // Viive 500 ms, jos (! Hälytys) {// Jos hälytys on pois päältä, kytke se päälle
}
}
// Jos käyttäjä mykistää hälytyksen painamalla hiljaista painiketta, lopeta hälytys, jos (hälytys &&! Hiljainen && digitalRead (hiljainen)) {
hälytys = epätosi;
hiljainen = totta; }
// Nollaa hälytys, jos (! Alarm && quieted && minute! = Minute_a) {quieted = false;
}
// Tarkista, nousevatko nastat korkealle, ja jos on, lisää vastaavaa arvoa if (digitalRead (set_hr) && hour <12) {
tunti ++;
printTimes ();
debounce ();
}
else if (digitalRead (set_hr) && hour == 12) {hour = 1;
printTimes ();
debounce ();
}
muu{}
if (digitalRead (set_min) && minuutti <59) {
minuutti ++; 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) {
tunti_a ++;
printTimes ();
debounce ();
}
muuten jos (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
debounce ();
}
else {} if (digitalRead (set_min_a) && minute_a <59) {
minuutti_a ++;
printTimes ();
debounce ();
}
muuten jos (digitalRead (set_min) && minute_a == 59) {minute_a = 0;
printTimes ();
debounce ();
}
else {} if (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = epätosi;
printTimes ();
debounce ();
}
else if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;
printTimes ();
debounce ();
}
muu{}
}
Vaihe 13:
5. Täällä huomaat pari luomaani aliohjelmaa - debounce () ja printTimes (). Debounce (): n avulla varmistetaan, että luemme painikkeet vain kerran. Koska Arduino skannaa tuhansia kertoja sekunnissa, se saattaa ajatella, että painiketta painettiin useita kertoja, kun tarkoitit vain sen lukemista. Debounce () pysäyttää ohjelman, kunnes painike vapautetaan. printTimes () päivittää nestekidenäytön, mutta koska se oli useita komentoja, kirjoitin ne kerran ja voin sitten soittaa aliohjelmaan milloin tahansa ajan arvon muuttuessa.
// Kun jotakin painiketta painetaan, pysy tässä toiminnossa ja viivästytä sitten 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)) {} viive (250);
}
// Tulostaa päivitetyt ajat, jos muutoksia tapahtuu
void printTimes () {
Sarja.kirjoitus (12);
Serial.print ("Nykyinen aika:");
Sarja.kirjoitus (148);
jos (tunti <10) {
Serial.print ("0");
}
Sarjajälki (tunti);
Serial.print (":");
jos (minuutti <10) {
Serial.print ("0");
}
Serial.print (minuutti); Serial.print (":");
jos (toinen <10) {
Serial.print ("0");
}
Sarjanjälki (toinen);
jos (am_pm) {
Serial.print ("PM");
}
muu{
Serial.print ("AM");
}
Sarja.kirjoitus (168);
Serial.print ("Alarm Set for:");
Sarja.kirjoitus (188);
jos (tunti_a <10) {
Serial.print ("0");
}
Sarjajälki (tunti_a);
Serial.print (":");
jos (minuutti_a <10) {
Serial.print ("0");
}
Sarjajälki (minuutti_a);
jos (am_pm_a) {
Serial.print ("PM");
}
muu{
Serial.print ("AM");
}
}
// Aikaparametrien lisääminen mitätön
keepTime () {
etime = millis () - cur_time;
if (etime> = 1000 && sekunti <59) {
toinen ++;
cur_time = millis ();
printTimes ();
}
muuten jos (etime> = 1000 && second == 59 && minute <59) {second = 0;
minuutti ++;
cur_time = millis ();
printTimes ();
}
muuten jos (etime> = 1000 && second == 59 && minute == 59 && hour <12) {
toinen = 0; minuutti =
0; tunti ++; cur_time =
millis (); printTimes ();
}
muuten jos (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {
toinen = 0; minuutti =
0; tunti = 1; am_pm =
!aamupäivä iltapäivä;
cur_time = millis ();
printTimes ();
}
muu{}
}
Vaihe 14:
6. Siinä se!
Kokoa ja lähetä ja olet valmis!
Suositeltava:
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen
Halvin Arduino -- Pienin Arduino -- Arduino Pro Mini -- Ohjelmointi -- Arduino Neno: 6 vaihetta (kuvilla)
Halvin Arduino || Pienin Arduino || Arduino Pro Mini || Ohjelmointi || Arduino Neno: …………………………. Tilaa YouTube -kanavani saadaksesi lisää videoita ……. Tässä projektissa keskitytään kaikkien aikojen pienimpään ja halvinan arduinoon. Pienin ja halvin arduino on arduino pro mini. Se muistuttaa arduinoa