Orodha ya maudhui:
- Hatua ya 1: Maagizo ya Kuunganishwa
- Hatua ya 2:
- Hatua ya 3:
- Hatua ya 4:
- Hatua ya 5:
- Hatua ya 6:
- Hatua ya 7:
- Hatua ya 8:
- Hatua ya 9: Maagizo ya Programu
- Hatua ya 10:
- Hatua ya 11:
- Hatua ya 12:
- Hatua ya 13:
- Hatua ya 14:
Video: Mradi wa Saa ya Kengele ya Arduino: Hatua 14
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Katika mradi huu, tutatumia Arduino Uno kudhibiti skrini ya LCD kuonyesha wakati na wakati wa sasa ambao kengele imewekwa. Tutatumia vifungo kuweka kila wakati.
Vifaa:
- Arduino Uno -
- Bodi ya mkate -
- Waya za Jumper (x13 +) -
- Vipinga 10 vya kohm (x4) -
- Skrini ya LCD -
- Vifungo 7 -
- Spika wa Piezo -
Hatua ya 1: Maagizo ya Kuunganishwa
1. Unganisha waya ya kuruka kutoka kwa pini ya 5V kwenye Arduino hadi moja ya reli + kwenye ubao wa mkate.
Hatua ya 2:
2. Unganisha waya ya kuruka kutoka kwenye pini ya GND kwenye Arduino hadi - reli karibu na reli + uliyochagua kwenye ubao wa mkate.
Hatua ya 3:
3. Unganisha skrini ya LCD kwa nguvu, ardhi, na pini ya TX (pin 1).
Hatua ya 4:
4. Weka vifungo 7 kwenye ubao wa mkate na miguu kuvuka pengo kwenye ubao wa mkate.
Hatua ya 5:
5. Weka vipinga 10 vya kohm kutoka kwa - reli na pini ya GND iliyounganishwa nayo kwa pini za kushoto za chini za vifungo.
Hatua ya 6:
6. Weka waya za kuruka kati ya pini ya kulia chini ya vifungo na reli ya 5V kwenye ubao wako wa mkate.
Hatua ya 7:
7. Weka waya za kuruka kati ya pini 6, kisha 8-13, na pini kwenye kitufe ambacho kontena imeunganishwa nayo.
Hatua ya 8:
8. Halafu, weka spika yako ya Piezo kwenye ubao wa mkate na unganisha pini 7 kwenye pini ya nguvu, halafu kipinga cha 100 ohm chini.
Hatua ya 9: Maagizo ya Programu
1. Muhtasari: Mradi huu utamwuliza mtumiaji kuweka wakati wa sasa kwenye nguvu ya kwanza kwenye onyesho wakati wa sasa na wakati ambao kengele imewekwa. Vifungo vilivyounganishwa hapo juu vitatumika kuweka kila wakati. Kutoka kushoto kwenda kulia, wamewekwa saa ya sasa, weka dakika ya sasa, weka AM au PM ya sasa, weka saa ya kengele, weka dakika ya kengele, weka kengele AM au PM. Kitufe cha mwisho hutumiwa kunyamazisha kengele wakati inalia.
Hatua ya 10:
2. Jambo la kwanza tunalohitaji kufanya ni kuanzisha mabadiliko yetu ambayo tutatumia.
// Anzisha vigezo vitakavyotumikaint hour = 0; // Saa kwa wakati wa sasa wa dakika = 0; //
Dakika kwa wakati wa sasa int pili = 0; // Pili kwa wakati wa sasa
saa_a = 0; int // Saa kwa wakati wa kengele
dakika_a = 0; // Dakika kwa wakati wa kengele
bool am_pm = uongo; // AM / PM kugeuza bendera. Uongo ni AM, kweli ni PM
bool am_pm_a = uongo; // AM / PM kugeuza bendera kwa kengele. Uongo ni AM, kweli ni PM
int set_hr = 13; // Tumia pin 13 kuweka saa
int set_min = 12; // Tumia pin 12 kuweka dakika int
set_am_pm = 11; // Tumia pin 11 kuweka am / pm
int set_hr_a = 10; // Tumia pini 10 kuweka saa kwa kengele int set_min_a = 9; // Tumia pini 9 kuweka dakika kwa kengele int set_am_pm_a = 8; // Tumia pini 8 kuweka asubuhi / jioni kwa kengele
msemaji wa int = 7; // Pini ya kutumia kwa speakerint utulivu = 6; // Bandika ili kusimamisha spika
kengele ya bool = uwongo; // Bendera kugeuza ili kuendelea kutisha
bool imetulia = uongo; // Bendera inayoonyesha utulivu haijasisitizwa
wakati cur_time = 0; // Kubadilika kwa wakati wa sasa
int etime = 0; // Kubadilika kwa muda uliopita
Hatua ya 11:
3. Ifuatayo, tunahitaji kusanidi skrini ya LCD na kumwambia mtumiaji aweke wakati wa sasa. Kwa kuwa hii inahitaji kufanywa mara moja tu, tutaifanya katika utaratibu wa usanidi.
usanidi batili () {
// Weka skrini ya LCD
Kuanzia Serial (9600); // Anzisha Serial kwa baud 9600
Serial.write (17); // Washa taa ya nyuma
Serial.write (24); // Washa onyesho, na mshale na hakuna kupepesa
Serial.write (12); // Futa skrini
Serial.write (128); // Sogeza mshale kwenye kona ya juu kushoto // Weka pinMode ya pinMode ya pin (set_hr, Pembejeo); 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 (spika, OUTPUT);
pinMode (utulivu, INPUT);
// Kwenye nguvu ya awali, uwe na mtumiaji kuweka wakati wa sasa. Serial.print ("Weka wakati wa sasa"); kuchelewa (2000);
Serial.write (12);
Nyakati za kuchapa ();
cur_time = millis (); // Hifadhi wakati wa sasa}
Hatua ya 12:
4. Halafu, katika utaratibu wa kitanzi, tunafuatilia wakati na kusoma hali ya kitufe ili kuona ikiwa mtumiaji anaweka mojawapo ya nyakati.
kitanzi batili () {
// Weka Wakati
KeepTime ();
// Angalia kuona ikiwa ni wakati wa kengele!
ikiwa ((saa == hour_a && dakika == minute_a &&! imetulia) || kengele) {toni (spika, 2000, 500); // Pato la sauti ya 2000 Hz kwa spika kwa 500 ms
kuchelewesha (500); // Kuchelewesha ms 500 ikiwa (! Kengele) {// Ikiwa kengele imezimwa, iwashe
}
}
// Ikiwa mtumiaji atanyamazisha kengele kwa kubonyeza kitufe cha utulivu, acha kutisha ikiwa (kengele &&! Imetuliza && digitalRead (kimya)) {
kengele = uwongo;
kimya = kweli; }
// Weka upya kengele ikiwa (! Kengele && imetulia && dakika! = Dakika_a) {imetulia = uwongo;
}
// Angalia kuona ikiwa pini zilizowekwa zimepanda juu, na ikiwa ni hivyo, ongeza thamani inayolingana (digitalRead (set_hr) && hour <12) {
saa ++;
Nyakati za kuchapa ();
kufuta ();
}
vinginevyo ikiwa (digitalRead (set_hr) && hour == 12) {hour = 1;
Nyakati za kuchapa ();
kufuta ();
}
mwingine {}
ikiwa (digitalRead (set_min) && dakika <59) {
dakika ++; nyakati za kuchapisha ();
kufuta ();
}
vinginevyo ikiwa (digitalRead (set_min) && minute == 59) {minute = 0;
Nyakati za kuchapa ();
kufuta ();
}
vinginevyo {} ikiwa (digitalRead (set_am_pm) && am_pm) {
am_pm = uongo;
Nyakati za kuchapa ();
kufuta ();
}
vinginevyo ikiwa (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; TimesTimes ();
kufuta ();
}
vingine {} ikiwa (digitalRead (set_hr_a) && hour_a <12) {
saa_a ++;
Nyakati za kuchapa ();
kufuta ();
}
vinginevyo ikiwa (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
Nyakati za kuchapa ();
kufuta ();
}
kingine {} ikiwa (digitalRead (set_min_a) && minute_a <59) {
dakika_a ++;
Nyakati za kuchapa ();
kufuta ();
}
vinginevyo ikiwa (digitalRead (set_min) && minute_a == 59) {minute_a = 0;
Nyakati za kuchapa ();
kufuta ();
}
vingine {} ikiwa (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = uwongo;
Nyakati za kuchapa ();
kufuta ();
}
vinginevyo ikiwa (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = kweli;
Nyakati za kuchapa ();
kufuta ();
}
mwingine {}
}
Hatua ya 13:
5. Hapa, utagundua sheria ndogo kadhaa nilizounda - kuondoa () na Nyakati za kuchapisha (). Dondoa () hutumiwa kuhakikisha tunasoma tu vifungo mara moja. Kwa kuwa Arduino inatafuta mara maelfu kwa sekunde, inaweza kufikiria kuwa kitufe kilibonyeza mara kadhaa wakati ulikusudia isomwe mara moja tu. Debounce () itasimamisha programu hiyo mpaka kitufe kitolewe. printTimes () inasasisha skrini ya LCD, lakini kwa kuwa hiyo ilikuwa amri kadhaa, niliichapa mara moja na kisha ninaweza kupiga simu wakati wowote mabadiliko ya thamani ya wakati.
// Wakati vifungo vyovyote vinabanwa, kaa katika kazi hii kisha ucheleweshe 250 ms.
utupu wa kujiondoa () {
wakati (DigitalRead (set_hr) || DigitalRead (set_min) ||
DigitalRead (set_am_pm) || DigitalRead (set_hr_a) ||
DigitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} kuchelewesha (250);
}
// Chapa nyakati zilizosasishwa ikiwa kuna mabadiliko yoyote
Nyakati za kuchapisha batili () {
Serial.write (12);
Serial.print ("Wakati wa Sasa:");
Serial.write (148);
ikiwa (saa <10) {
Serial.print ("0");
}
Printa ya serial (saa);
Serial.print (":");
ikiwa (dakika <10) {
Serial.print ("0");
}
Serial.print (dakika); Serial.print (":");
ikiwa (pili <10) {
Serial.print ("0");
}
Serial.print (pili);
ikiwa (asubuhi_jioni) {
Serial.print ("PM");
}
mwingine {
Serial.print ("AM");
}
Serial.write (168);
Serial.print ("Alarm Set for:");
Serial.write (188);
ikiwa (saa_a <10) {
Serial.print ("0");
}
Printa ya serial (saa_a);
Serial.print (":");
ikiwa (dakika_a <10) {
Serial.print ("0");
}
Printa ya serial (dakika_a);
ikiwa (am_pm_a) {
Serial.print ("PM");
}
mwingine {
Serial.print ("AM");
}
}
// Kuongeza vigezo vya wakati batili
KeepTime () {
etime = millis () - muda wa cur_;
ikiwa (etime> = 1000 && pili <59) {
++ ya pili;
cur_time = millis ();
Nyakati za kuchapa ();
}
vinginevyo ikiwa (etime> = 1000 && pili == 59 && dakika <59) {pili = 0;
dakika ++;
cur_time = millis ();
Nyakati za kuchapa ();
}
vinginevyo ikiwa (etime> = 1000 && pili == 59 && minute == 59 && hour <12) {
pili = 0; dakika =
0; saa ++; muda wa cur_ =
millis (); Nyakati za kuchapa ();
}
vinginevyo ikiwa (etime> = 1000 && pili == 59 && minute == 59 && hour == 12) {
pili = 0; dakika =
0; saa = 1; asubuhi_juma =
! am_pm;
cur_time = millis ();
Nyakati za kuchapa ();
}
mwingine {}
}
Hatua ya 14:
6. Hiyo tu!
Kusanya na kupakia na umemaliza!
Ilipendekeza:
Yote katika Chronometer Moja ya Dijiti (Saa, Saa, Kengele, Joto): Hatua 10 (na Picha)
Yote katika Chronometer Moja ya Dijitali (Saa, Saa, Kengele, Joto): Tulikuwa tukipanga kutengeneza Timer kwa mashindano mengine, lakini baadaye tulitekeleza saa (bila RTC). Tulipoingia kwenye programu, tulipenda kutumia matumizi zaidi ya kifaa na kuishia kuongeza DS3231 RTC, kama
Saa ya Kengele ya Smart: Saa ya Alarm ya Smart iliyotengenezwa na Raspberry Pi: Hatua 10 (na Picha)
Saa ya Alarm ya Smart: Saa ya Alarm ya Smart iliyotengenezwa na Raspberry Pi: Je! Umewahi kutaka saa nzuri? Ikiwa ndivyo, hii ndio suluhisho kwako! Nilitengeneza Saa ya Kengele ya Smart, hii ni saa ambayo unaweza kubadilisha wakati wa kengele kulingana na wavuti. Wakati kengele inalia, kutakuwa na sauti (buzzer) na taa 2 zita
Kutengeneza Saa na M5stick C Kutumia Arduino IDE - RTC Saa Saa Saa Na M5stack M5stick-C: Hatua 4
Kutengeneza Saa na M5stick C Kutumia Arduino IDE | RTC Saa Saa Saa Na M5stack M5stick-C: Halo jamani katika mafundisho haya tutajifunza jinsi ya kutengeneza saa na bodi ya maendeleo ya m5stick-C ya m5stack kutumia Arduino IDE.So m5stick itaonyesha tarehe, saa & wiki ya mwezi kwenye maonyesho
Jenga Saa ya Kupiga Kengele halisi kwa PC yako na Saa ya kushangaza ya Kizima moto. 3 Hatua (na Picha)
Jenga Saa ya Kugonga Kengele halisi kwa PC yako na Saa ya kushangaza ya Kizima moto. OS X pia, niliamua kusanikisha Ubuntu Linux kwenye PC niliyoipata kwenye takataka na kuifanyia kazi hiyo: sikuwahi
Kukusanya "Saa ya Hekima 2" (Saa ya Kengele inayotegemea Arduino na Vipengele vingi vya Ziada): Hatua 6
Kukusanya "Saa ya Hekima 2" (Saa ya Alarm-based Alarm Clock na Vipengele vingi vya ziada): Mafunzo haya yanaonyesha jinsi ya kukusanya kit kwa Wise Clock 2, mradi wa chanzo wazi (vifaa na programu). Kiti kamili ya Hekima 2 inaweza kununuliwa hapa. Kwa muhtasari, hii ndio Hekima ya Saa 2 inaweza kufanya (na chanzo cha sasa cha chanzo wazi