Mundarija:
- 1 -qadam: ulanish bo'yicha ko'rsatmalar
- 2 -qadam:
- 3 -qadam:
- 4 -qadam:
- 5 -qadam:
- 6 -qadam:
- 7 -qadam:
- 8 -qadam:
- 9 -qadam: dasturlash bo'yicha ko'rsatmalar
- 10 -qadam:
- 11 -qadam:
- 12 -qadam:
- 13 -qadam:
- 14 -qadam:
Video: Arduino budilnik loyihasi: 14 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Ushbu loyihada biz Arduino Uno -dan LCD displeyni boshqarib, signal o'rnatilgan vaqt va vaqtni ko'rsatamiz. Biz har safar sozlash uchun tugmalardan foydalanamiz.
Materiallar:
- Arduino Uno -
- Non paneli -
- Jumper simlari (x13+) -
- 10 kohmli rezistorlar (x4) -
- LCD displey -
- 7 tugma-https://vilros.com/collections/raspberry-pi-acces…
- Piezo dinamik -
1 -qadam: ulanish bo'yicha ko'rsatmalar
1. Arduino -dagi 5V -pinli o'tish simini non panelidagi + relslardan biriga ulang.
2 -qadam:
2. Arduino -dagi GND pinidagi o'tish simini non panelida siz tanlagan + relsning yonidagi temir yo'lga ulang.
3 -qadam:
3. LCD displeyni quvvatga, erga va TX piniga ulang (1 -pin).
4 -qadam:
4. Non panelidagi 7 tugmachani oyoqlari non panelidagi bo'shliq bo'ylab joylashtiring.
5 -qadam:
5. GND pimi bilan tugmalarning pastki chap pimlariga ulangan temir yo'ldan 10 kohmli rezistorni joylashtiring.
6 -qadam:
6. O'tish simlarini tugmalarning pastki o'ng pimi va 5V panjarasi orasiga joylashtiring.
7 -qadam:
7. O'tish simlarini pinlar 6, keyin 8-13 va rezina ulangan tugmachaning orasiga joylashtiring.
8 -qadam:
8. Keyin, Piezo karnayini non paneliga qo'ying va 7 -pinni quvvat piniga, so'ngra 100 ohmli rezistorni erga ulang.
9 -qadam: dasturlash bo'yicha ko'rsatmalar
1. Umumiy nuqtai: Ushbu loyiha foydalanuvchidan displeyda joriy quvvat va joriy signal vaqtini belgilashini so'raydi. Yuqorida ulangan tugmalar har safar sozlash uchun ishlatiladi. Chapdan o'ngga ular joriy soatni, joriy daqiqani, joriy AM yoki PMni, budilnikni, budilnikni, signalni AM yoki PMni o'rnatadilar. Oxirgi tugma signal eshitilganda ovozni o'chirish uchun ishlatiladi.
10 -qadam:
2. Biz qilishimiz kerak bo'lgan birinchi narsa - biz foydalanadigan o'zgaruvchini ishga tushirish.
// Ishlatiladigan o'zgaruvchilarni ishga tushiringint = 0; // Joriy vaqt uchun soat int minut = 0; //
Joriy vaqt uchun daqiqa int second = 0; // Joriy vaqt uchun ikkinchi
int hour_a = 0; int // Budilnik vaqti
daqiqa_a = 0; // Budilnik vaqti
bool am_pm = noto'g'ri; // AM/PM bayroqchasini almashtirish. Yolg'on - AM, haqiqat - PM
bool am_pm_a = noto'g'ri; // AM/PM signal uchun bayroqni o'zgartiradi. Yolg'on - AM, haqiqat - PM
int set_hr = 13; // Soatni o'rnatish uchun 13 -pindan foydalaning
int set_min = 12; // int daqiqasini o'rnatish uchun 12 -pindan foydalaning
set_am_pm = 11; // Ertalab/kechqurun sozlash uchun 11 -pinni ishlating
int set_hr_a = 10; // signal uchun soatni belgilash uchun pin 10 dan foydalaning int set_min_a = 9; // signal 9 uchun pinni ishlating int set_am_pm_a = 8; // Signal uchun ertalab/kechani o'rnatish uchun 8 -pinni ishlating
int dinamik = 7; // Karnay ovozi uchun ishlatiladigan pin = 6; // Karnayni to'xtatish uchun pin
bool signal = noto'g'ri; // Xavotirga tushmaslik uchun almashtirish uchun bayroq
bool sustlashdi = noto'g'ri; // Jim ko'rsatadigan bayroq bosilmagan
int cur_time = 0; // Joriy vaqt uchun o'zgaruvchan
int etime = 0; // O'tgan vaqt uchun o'zgaruvchan
11 -qadam:
3. Keyinchalik, biz LCD displeyni sozlashimiz va foydalanuvchiga joriy vaqtni belgilashimizni aytishimiz kerak. Buni faqat bir marta bajarish kerak bo'lgani uchun, biz buni sozlash tartibida qilamiz.
bo'sh o'rnatish () {
// LCD ekranni sozlash
Serial.begin (9600); // Serialni 9600 bodda boshlang
Serial.write (17); // Orqa chiroqni yoqing
Serial.write (24); // Displeyni kursor bilan, yonib -o'chmasdan yoqing
Serial.write (12); // Ekranni tozalang
Serial.write (128); // Kursorni chap yuqori burchakka siljiting // pinModes pinMode (set_hr, KIRITISH); pinMod (set_min, INPUT);
pinMod (set_am_pm, INPUT);
pinMod (set_hr_a, INPUT);
pinMod (set_min_a, INPUT);
pinMod (set_am_pm_a, INPUT);
pinMode (dinamik, OUTPUT);
pinMode (jim, Kirish);
// Dastlabki kuchda, foydalanuvchining joriy vaqtini belgilang. Serial.print ("Joriy vaqtni o'rnating"); kechikish (2000);
Serial.write (12);
printTimes ();
cur_time = millis (); // Joriy vaqtni saqlash}
12 -qadam:
4. Keyin, tsikl tartibida, biz vaqtni kuzatib boramiz va tugma holatini o'qiymiz, foydalanuvchi vaqtlardan birini o'rnatadimi yoki yo'qligini bilib olamiz.
void loop () {
// Vaqtni saqlang
keepTime ();
// Xavotir vaqti kelganligini tekshiring!
agar ((soat == hour_a && daqiqa == minut_a &&! jim) || signal) {ohang (karnay, 2000, 500); // Karnayga 500 ms uchun 2000 Gts chastotali ovozni chiqarish
kechikish (500); // 500 msni kechiktiring, agar (! Signal) {// Agar signal o'chirilgan bo'lsa, uni yoqing
}
}
// Agar foydalanuvchi signalni jim tugmachani bosib o'chirsa, signalni to'xtating, agar (signal &&! Jim && digitalRead (jim)) {
signal = noto'g'ri;
jim = haqiqiy; }
// Budilnikni qayta o'rnating, agar (! Signal && sustlashdi && daqiqa! = Daqiqa_a) {sessiz = noto'g'ri;
}
// O'rnatilgan pimlarning balandligini tekshiring va agar shunday bo'lsa, mos keladigan qiymatni oshiring (digitalRead (set_hr) && hour <12) {
soat ++;
printTimes ();
o'chirish ();
}
aks holda (digitalRead (set_hr) && hour == 12) {hour = 1;
printTimes ();
o'chirish ();
}
boshqa {}
if (digitalRead (set_min) && minutes <59) {
daqiqa ++; printTimes ();
o'chirish ();
}
aks holda (digitalRead (set_min) && minutes == 59) {minutes = 0;
printTimes ();
o'chirish ();
}
boshqa {} if (digitalRead (set_am_pm) && am_pm) {
am_pm = noto'g'ri;
printTimes ();
o'chirish ();
}
aks holda (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
o'chirish ();
}
boshqa {} if (digitalRead (set_hr_a) && hour_a <12) {
soat_a ++;
printTimes ();
o'chirish ();
}
aks holda (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
o'chirish ();
}
boshqa {} if (digitalRead (set_min_a) && minutes_a <59) {
daqiqa_a ++;
printTimes ();
o'chirish ();
}
aks holda (digitalRead (set_min) && minutes_a == 59) {minutes_a = 0;
printTimes ();
o'chirish ();
}
boshqa {} if (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = noto'g'ri;
printTimes ();
o'chirish ();
}
if if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = rost;
printTimes ();
o'chirish ();
}
boshqa {}
}
13 -qadam:
5. Bu erda siz men yaratgan bir nechta kichik dasturlarni ko'rasiz - debounce () va printTimes (). Debounce () tugmachalarni faqat bir marta o'qishimizga ishonch hosil qilish uchun ishlatiladi. Arduino sekundiga ming marta skanerlaganligi sababli, siz uni faqat bir marta o'qishni xohlaganingizda, tugma bir necha marta bosilgan deb o'ylashi mumkin. Debounce () tugmachasi bo'shatilmaguncha dasturni muzlatib qo'yadi. printTimes () LCD displeyni yangilaydi, lekin bu bir nechta buyruqlar bo'lgani uchun men ularni bir marta yozdim va keyin vaqt qiymati o'zgarganda istalgan vaqtda kichik dasturni chaqira olaman.
// Har qanday tugma bosilayotganda, bu funksiyada qoling va 250 msni kechiktiring.
bekor qilish () {
while (digitalRead (set_hr) || digitalRead (set_min) ||
digitalRead (set_am_pm) || digitalRead (set_hr_a) ||
digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} kechiktirish (250);
}
// O'zgarishlar bo'lsa, yangilangan vaqtlarni chop etadi
void printTimes () {
Serial.write (12);
Serial.print ("Joriy vaqt:");
Serial.write (148);
agar (soat <10) {
Serial.print ("0");
}
Ketma -ket chop etish (soat);
Serial.print (":");
agar (daqiqa <10) {
Serial.print ("0");
}
Serial.print (daqiqa); Serial.print (":");
agar (ikkinchi <10) {
Serial.print ("0");
}
Ketma -ket chop etish (ikkinchi);
agar (am_pm) {
Serial.print ("PM");
}
boshqa {
Serial.print ("AM");
}
Serial.write (168);
Serial.print ("Signal uchun:");
Serial.write (188);
agar (soat_a <10) {
Serial.print ("0");
}
Serial.print (hour_a);
Serial.print (":");
agar (daqiqa_a <10) {
Serial.print ("0");
}
Serial.print (minut_a);
agar (am_pm_a) {
Serial.print ("PM");
}
boshqa {
Serial.print ("AM");
}
}
// Vaqt parametrlarini bekor qilish
keepTime () {
etime = millis () - cur_time;
if (etime> = 1000 && second <59) {
ikkinchi ++;
cur_time = millis ();
printTimes ();
}
aks holda (etime> = 1000 && second == 59 && minutes <59) {second = 0;
daqiqa ++;
cur_time = millis ();
printTimes ();
}
aks holda (etime> = 1000 && second == 59 && minutes == 59 && hour <12) {
soniya = 0; daqiqa =
0; soat ++; cur_time =
millis (); printTimes ();
}
aks holda (etime> = 1000 && second == 59 && minutes == 59 && hour == 12) {
soniya = 0; daqiqa =
0; soat = 1; am_pm =
! am_pm;
cur_time = millis ();
printTimes ();
}
boshqa {}
}
14 -qadam:
6. Hammasi shu!
Kompilyatsiya qiling va yuklang, shunda hammasi tugadi!
Tavsiya:
Magicbit (Arduino) yordamida aqlli budilnik: 10 qadam
Magicbit (Arduino) dan foydalanadigan aqlli budilnik: Bu qo'llanmada RTC modulini ishlatmasdan Magicbit dev platasidagi OLED displey yordamida aqlli budilnikni qanday yasash ko'rsatilgan
Aqlli budilnik: Raspberry Pi -dan tayyorlangan aqlli budilnik: 10 qadam (rasmlar bilan)
Aqlli budilnik: Raspberry Pi bilan yasalgan aqlli budilnik: Siz hech qachon aqlli soatni xohlaganmisiz? Agar shunday bo'lsa, bu siz uchun yechim! Men Smart Budilnikni yaratdim, bu soat, siz budilnik vaqtini veb -saytga ko'ra o'zgartirishingiz mumkin. Signal o'chganda, ovoz eshitiladi va ikkita chiroq yonadi
DIY Arduino ikkilik budilnik: 14 qadam (rasmlar bilan)
DIY Arduino ikkilik budilnik: bu yana klassik ikkilik soat! Ammo bu safar qo'shimcha funktsiyalar bilan! Bu yo'riqnomada men sizga Arduino yordamida nafaqat vaqtni, balki sanani, oyni, hatto taymer va budilnik yordamida ko'rsatadigan ikkilik budilnikni qanday qurishni ko'rsataman
Tasodifiy budilnik (Arduino Leonardo): 3 qadam
Tasodifiy budilnik (Arduino Leonardo): Qisman kredit: https://create.arduino.cc/projecthub/EvdS/led-dice … Bu budilnik Arduino zaridan foydalanib, uning signallari chaladi yoki yo'qligini aniqlaydi. Zar 6 ga o'ralganida, budilnik 5 soniya atrofida jiringlaydi. Agar u 6 -ni chiqarmasa, u
Arduino avtomatlashtirilgan ekranli ekran loyihasi uchun qadam dvigatel va haydovchini tanlash: 12 qadam (rasmlar bilan)
Arduino avtomatlashtirilgan ekranli ekran loyihasi uchun qadam dvigateli va haydovchini tanlash: Ushbu yo'riqnomada men avtomatlashtirilgan ekran pardasi prototipi uchun qadam dvigateli va haydovchini tanlash uchun qilgan qadamlardan o'taman. Soyali ekranlar - qo'lda krankirovka qilingan mashhur va arzon modellar, va men ularni almashtirmoqchi edim