Mundarija:
- Ta'minotlar
- 1 -qadam: Har xil modullar
- 2 -qadam: Assambleya 1 -qism
- 3 -qadam: 2 -qism
- 4 -qadam: Ko'zlarni bog'lash
- 5 -qadam: PIR sensori va modulini ulash
- 6 -qadam: MP3 pleer va kuchaytirgich
- 7 -qadam: Yakuniy yig'ilish
- 8 -qadam: INCLOSURE
Video: Xellouin qo'rqinchli ko'zlar: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Yillar mobaynida turli loyihalarni amalga oshirishda a
ishlatilmay yotgan turli xil modullarning to'liq to'plami va men hech bo'lmaganda ulardan ba'zilarini bir vaqtning o'zida qiziqarli va ijodiy bo'lishi uchun ishlatmoqchi edim.
Fikrlar uchun "Instructables.com sayti" orqali o'tib, men bu "Xellouin" uchun biror narsa qilish uchun ularni bir -biriga aralashtirish mumkin deb o'yladim.
Men o'z g'oyalarini ishlatgani uchun kutilmagan ishlab chiqaruvchi Stiv Quinnga kredit berishim kerak.
Ta'minotlar
FOYDALANILGAN MADDALAR VA MODULLAR
Ishlatilgan modullar
1 yolg'iz Atmega8 taxtasi
5 voltli chiqish uchun 2 ta PIR asosidagi boshqaruv paneli
3 LM386 kuchaytirgich paneli
4 umumiy MP3 pleer moduli
5 MAX7219 8x8 LED modullari
6 ta PIR moduli (umumiy)
7 4”4 Ohmli dinamik
Boshqa materiallar
a. Bo'sh karton quti
b. Bo'sh bir martalik suv idishlari
v. Rangni o'zgartirish LED 5V
d. Turli xil simlar
e. Yelimli qurol
f. Lehimlash temir
g. Har xil asboblar va kesgichlar
h. 12V 1A pastga tushadigan transformator
Muhim
1 Arduion IDE
2 AVR chiplari uchun dasturiy kengash
3 Dasturlash (yonish) dasturi
1 -qadam: Har xil modullar
Birinchidan, biz turli xil modullarni ishlab chiqarishni ko'rib chiqamiz
Albatta, barcha elektronika uchun bitta PCB yasash mumkin edi va loyiha juda yaxshi ishlay olardi, lekin men uchun ilgari tayyorlagan turli xil buyumlarni turli loyihalar uchun ishlatish kerak edi va endi ularga ehtiyoj tugadi. faqat o'sha narsalarni qayta ishlatmoqchi edim.
ATmega8 platasi
Men ATmega8 chipini tashqi kristalsiz ishlataman. Aslida, bu taxtalar P10 16x32 LED modullarini ishlatish uchun qilingan va menda bu loyihadan qolganlari bor edi. Kengash va tenglikni sxemasi rasmi quyidagicha (rasmlarga qarang). O'zingizning Arduino taxtangizni "o'rgatish mumkin" haqida ko'p sonli maqolalar mavjud. Siz yotishingiz mumkin bo'lgan eski Arduino taxtasidan foydalanishingiz mumkin.
PIR boshqaruv paneli
Ushbu PIR taxtasi LED -ga asoslangan kichik bayram bezaklarini yoqish va o'chirish uchun qilingan va hozir u shunchaki yotibdi va men uni ishlatishga qaror qildim. O'chirish sxemasi rasmlarda ko'rsatilgan
LM 386 kuchaytirgich paneli
Bu MP3 pleer modulidan ovoz chiqarishni kuchaytiradigan kuchaytirgich moduli. sxemasi va sxemasi juda oddiy va rasmlar hammasini aytadi. O'chirish sxemasi va to'ldirilgan taxtaning tasviri o'z -o'zidan tushunarli.
MP3 pleer moduli
Men rasmda ko'rsatilgan MP3 pleer modulidan foydalandim. U Amazon va boshqalarda mavjud, arzon va ulardan foydalanish oson. Ushbu modulning eng yaxshi tomoni shundaki, u o'ynashni boshlash uchun hech qanday qo'shimcha buyruq yoki ulanishni talab qilmaydi. Kengashga tegishli quvvat berilgach, u o'z vazifasini bajarishni boshlaydi.
MAX7219 8x8 LED modullari
Bu 8x8 LED displeyli modullar Amazonda osonlikcha mavjud bo'lib, men ishlatganlarning rasmlari taqdim etiladi.
PIR moduli
Men hozirda mavjud bo'lgan PIR Sensor modulidan foydalandim. U Amazonda va boshqalarda mavjud, u arzon va ulardan foydalanish oson. Rasmlar ma'lumot olish uchun berilgan.
2 -qadam: Assambleya 1 -qism
Kontseptsiya bu modullarning barchasini birlashtirib, kimdir rekvizit oldidan o'tganda faollashtiriladigan Xellouin bayramini yasash edi. Buning uchun men 12 voltli quvvat manbaini PIR boshqaruv kengashiga uladim, bu esa o'z navbatida 7805 IC yordamida 5V DC ga tushdi va bu 5V DC kuchlanish PIR sensori va boshqa modullarga uzatildi., ATmega8 taxtasi, kuchaytirgich moduli va MP3 pleer moduli, kimdir PIR sensori oldiga kelganida. Oqim jadvali hammasini aytadi.
Ko'rib turganimizdek, PIR sensori ATmega8 kartasini, kuchaytirgich modulini va MP3 pleer modulini ishga tushiradi, ATmega8 "ko'zlar" LED matritsasini boshqaradi, MP3 pleer ovoz effektlarini ijro etadi va kuchaytirgich moduli signalni karnayga yuboradi..
Arduino kodi - bu Stiv Kvinning ko'rsatmalaridan to'g'ridan -to'g'ri o'chirish, faqat vaqt kodda o'zgartirilgan. Amaldagi kod quyida keltirilgan. INO fayli ham biriktirilgan.
Kodeks
// D10 = Raqamli O/P CS pin
// D11 = Raqamli O/P soat pimi
// D12 = Raqamli O/P ma'lumot pimi
//
#qo'shing
#qo'shing
const int numDevices = 2; // ishlatilgan MAX7219 soni
const int dataPin = 12;
const int clkPin = 11;
const int csPin = 10;
LedControl lc = LedControl (dataPin, clkPin, csPin, numDevices);
// Ushbu kodni Arduino rivojlanish muhitiga qo'ying
#Define LeftEye1 0
#o'ngEye1ni belgilang 1
#chap ko'zni belgilang2 2
#o'ng ko'zni belgilang2 3
#Chap Ko'zni belgilang3 4
#o'ngEye3 ni aniqlang 5
#chap ko'zni aniqlang 4 6
#o'ngEye4ni aniqlang 4 7
#chap ko'zni aniqlang5 8
#o'ng ko'zni aniqlang5 9
#chap ko'zni aniqlang 6 10
#o'ngEye6 ni belgilang 11
#Chap Ko'zni belgilang7 12
#O'ng ko'zni belgilang7 13
#Chap Ko'zni aniqlang8 14
#o'ngEye88 ni aniqlang
#Chap Ko'zni aniqlang 16 16
#o'ngEye99 ni belgilang
#Davlat Chap Ko'z10 18
#o'ngEye10 ni belgilang 19
#chap ko'zni aniqlang 11 20
#o'ng ko'zni aniqlang 21 21
22
23
#Chap Ko'zni aniqlang 13 24
25
26
27
28
29
30
#o'ng ko'zni aniqlang 31 31
32
#33
34
35
36
37
38
39
typedef tuzilishi {
const unsigned char qator1 [8];
}
binaryArrayType;
binaryArrayType binaryArray [40] =
{
{// Chap Ko'z1, 0
B01111110, B10000001, B10000001, B10011001, B10011001, B10000001, B10000001, B01111110
}, {// o'ng ko'z1, 1
B01111110, B10000001, B10000001, B10011001, B10011001, B10000001, B10000001, B01111110
}, {// Chap Ko'z2, 2
B00000000, B00111100, B01000010, B01011010, B01011010, B01000010, B00111100, B00000000
}, {// o'ng ko'z2, 3
B00000000, B00111100, B01000010, B01011010, B01011010, B01000010, B00111100, B00000000
}, {// Chap Ko'z3, 4
B00000000, B00111100, B00100100, B00110100, B00110100, B00100100, B00111100, B00000000
}, {// o'ng ko'z3, 5
B00000000, B00111100, B00100100, B00110100, B00110100, B00100100, B00111100, B00000000
}, {// Chap Ko'z4, 6
B00011000, B00011000, B00011000, B00011000, B00011000, B00011000, B00011000, B00000000
}, {// o'ng ko'z4, 7
B00000000, B00011000, B00011000, B00011000, B00011000, B00011000, B00011000, B00011000
}, {// Chap Ko'z5, 8
B01111110, B10000001, B10000001, B10011001, B10011001, B10000001, B10000010, B01111100
}, {// o'ng ko'z 5, 9
B01111100, B10000010, B10000001, B10011001, B10011001, B10000001, B10000001, B01111110
}, {// Chap Ko'z6, 10
B01111110, B10000001, B10000001, B10011001, B10011001, B10000010, B10000100, B01111000
}, {// o'ng ko'z 6, 11
B01111000, B10000100, B10000010, B10011001, B10011001, B10000001, B10000001, B01111110
}, {// Chap Ko'z7, 12
B01111110, B11000001, B10000001, B10011001, B10011010, B10000100, B10001000, B01110000
}, {// o'ng ko'z 7, 13
B01110000, B10001000, B10000100, B10011010, B10011001, B10000001, B11000001, B01111110
}, {// Chap Ko'z8, 14
B00111110, B01000001, B10000001, B10011001, B10011010, B10000100, B01001000, B00110000
}, {// o'ng ko'z8, 15
B00110000, B01001000, B10000100, B10011010, B10011001, B10000001, B01000001, B00111110
}, {// Chap Ko'z9, 16
B01111110, B10000001, B10000001, B10011001, B10011001, B10000001, B10000001, B01111110
}, {// o'ng ko'z 9, 17
B01111110, B10000001, B10000001, B10011001, B10011001, B10000001, B10000001, B01111110
}, {// Chap Ko'z10, 18
B01111110, B10000001, B10000001, B10000001, B10011001, B10011001, B10000001, B01111110
}, {// RightEye10, 19
B01111110, B10000001, B10000001, B10000001, B10011001, B10011001, B10000001, B01111110
}, {// Chap Ko'z11, 20
B01111110, B10000001, B10000001, B10000001, B10011001, B10011001, B10000001, B01111110
}, {// o'ng ko'z 11, 21
B01111110, B10000001, B10000001, B10000001, B10011001, B10011001, B10000001, B01111110
}, {// Chap Ko'z12, 22
B01111110, B10000001, B10000001, B10000001, B10000001, B10011001, B10011001, B01111110
}, {// o'ng ko'z 12, 23
B01111110, B10000001, B10000001, B10000001, B10000001, B10011001, B10011001, B01111110
}, {// Chap Ko'z13, 24
B01111110, B10000001, B10000001, B10000001, B10000001, B10000001, B10011001, B01111110
}, {// o'ng ko'z 13, 25
B01111110, B10000001, B10000001, B10000001, B10000001, B10000001, B10011001, B01111110
}, {// Chap Ko'z14, 26
B00000000, B00111100, B01000010, B01000010, B01000010, B01011010, B00111100, B00000000
}, {// o'ng ko'z 14, 27
B00000000, B00111100, B01000010, B01000010, B01000010, B01011010, B00111100, B00000000
}, {// Chap Ko'z15, 28
B00000000, B00111100, B00100100, B00100100, B00100100, B00111100, B00111100, B00000000
}, {// o'ng ko'z 15, 29
B00000000, B00111100, B00100100, B00100100, B00100100, B00111100, B00111100, B00000000
}, {// Chap ko'z 16, 30
B00011000, B00011000, B00011000, B00011000, B00011000, B00011000, B00011000, B00000000
}, {// o'ng ko'z 16, 31
B00000000, B00011000, B00011000, B00011000, B00011000, B00011000, B00011000, B00011000
}, {// Chap Ko'z17, 32
B00010000, B00010000, B00010000, B00010000, B00010000, B00010000, B00010000, B00000000
}, {// o'ng ko'z 17, 33
B00000000, B00010000, B00010000, B00010000, B00010000, B00010000, B00010000, B00010000
}, {// Chap Ko'z18, 34
B01111110, B10000001, B10000001, B10000001, B10000001, B10000001, B10001101, B01111110
}, {// RightEye18, 35
B01111110, B10000001, B10000001, B10000001, B10000001, B10000001, B10001101, B01111110
}, {// Chap Ko'z19, 36
B01111110, B10000001, B10000001, B10000001, B10000001, B10000001, B10000111, B01111110
}, {// o'ng ko'z 19, 37
B01111110, B10000001, B10000001, B10000001, B10000001, B10000001, B10000111, B01111110
}, {// Chap Ko'z20, 38
B01111110, B10000001, B10000001, B10000001, B10000001, B10000011, B10000011, B01111110
}, {// o'ng ko'z 20, 39
B01111110, B10000001, B10000001, B10000001, B10000001, B10000011, B10000011, B01111110
}
};
typedef tuzilishi {
int frameCount; // indikator ko'rsatgichi animatsion ramkani bildiruvchi binaryArray
int frameDelay; // Bu animatsion kadrni ko'rsatish uchun Milisaniyadagi taxminan kechikish
int frameLuminance; // 0… 15, berilgan ramka uchun bosh matritsaning intensivligi
} frameType;
frameType film =
{
// Ko'z yuming
{Chap ko'z1, 1000, 1}, {chap ko'z2, 5, 1}, {chap ko'z3, 10, 1}, {chap ko'z4, 10, 1}, {chap ko'z 17, 100, 1}, {chap ko'z4, 10, 1}, {chap ko'z3), 10, 1}, {Chap Ko'z2, 5, 1}, // Yana to'liq
{LeftEye1, 1500, 2}, // qoshlarini burish
{LeftEye5, 5, 3}, {LeftEye6, 5, 4}, {LeftEye7, 5, 5}, {LeftEye8, 1000, 11}, {LeftEye7, 5, 5}, {LeftEye6, 5, 4}, {LeftEye5, 5, 3}
};
bo'sh kechikish Millis (int millisekundlarda)
{
uchun (int i = 0; i <millisekundlar; i ++)
kechikish mikrosaniyalari (1000);
}
bo'sh o'rnatish () {
uchun (int x = 0; x <numDevices; x ++) {
lc.shutdown (x, noto'g'ri); // MAX72XX ishga tushganda quvvatni tejash rejimida
lc.setIntensivlik (x, 1); // Yorqinlikni standart qiymatga o'rnating
lc.clearDisplay (x); // va displeyni tozalang
}
}
void loop () {
lc.setIntensity (0, 3);
lc.setIntensity (1, 3);
while (rost) {
uchun (int a = 0; a <(sizeof (film) / sizeof (frameType)); a ++)
{
uchun (int i = 0; i <8; i ++)
{
lc.setRow (0, i, binaryArray [film [a].frameCount].array1 );
lc.setRow (1, i, binaryArray [film [a].frameCount + 1].array1 );
lc.setIntensity (0, film [a].frameLuminance);
lc.setIntensity (1, film [a].frameLuminance);
}
delayMillis (film [a].frameDelay);
}
}
}
3 -qadam: 2 -qism
Arduino IDE -ni ishga tushirgandan so'ng, siz kodni nusxalashingiz va kodni kompilyatsiya qilishingiz/tasdiqlashingiz kerak. Kodni kompilyatsiya qilganingizda, HEX fayli kompyuterning TEMP papkasida yaratiladi. Arduino IDE -ni yopishdan oldin, siz HEX faylini temp papkasidan nusxalashingiz mumkin va bu faylni ishlashi uchun biz ATmega8 chipiga yozishimiz kerak.
Kodni tuzayotganda men taxtani "Arduino NG yoki Older" va protsessorni "ATmega8" deb tanladim va kompilyatsiya qilgandan so'ng, Arduino IDE yopilishidan oldin HEX faylini kompyuterning Temp papkasidan nusxa ko'chirdim.
Bu HEX fayli tashqi AVR Burner bilan ATmega8 chipiga yoqilgan. Buning uchun men "Extreme Burner_AVR" dasturidan va AVR Burner Board -dan foydalandim. Kengashning rasmiga ilova qilingan. O'zingizga qulay bo'lgan har qanday AVR dasturiy ta'minotidan foydalanishingiz mumkin.
Tashqi dasturchidan foydalanishning sababi shundaki, men yuklagichni Atmega8 chiplariga yoqishni xohlamadim va yuklovchisiz ular oddiy Arduino kartasida yoki Arduion IDE bilan ishlamaydi. Kodni Arduino IDE bilan kompilyatsiya qilganingizdan so'ng HEX fayllarini chiqarib olish juda oson va men shunday qildim.
ESLATMA
Tashqi dasturchidan foydalanganda sug'urta bitining to'g'ri sozlamalarini tanlash juda muhim.
Bunday holda, biz tashqi kristallni ishlatmayapmiz va ATmega8 chipining ichki soatiga tayanamiz, shuning uchun sug'urta bitlarini shunga mos ravishda sozlashimiz kerak. Men quyidagi sug'urta sozlamalarini tanladim.
Lfuse- E4
Hfuse - D9
Bu nimani anglatadi
Demak, biz tashqi kristal yoki rezonatordan foydalanmayapmiz
Soat 8 MGts ichki soatga o'rnatiladi
ATmega8 chipi dasturlashtirilgach, loyihani yig'ish va uni sinab ko'rish vaqti keldi.
4 -qadam: Ko'zlarni bog'lash
MAX7219 8x8 LED matritsasi quyidagi tarzda ulangan.
ATmega8 kartasi MAX7219 matritsasiga
IO Pin D10 dan CS PIN kodiga
PIN kodini bosish uchun IO Pin D11
IO Pin D12 TO DIN PIN
VCC VCC ga
GND - GND
Rasmga qarang
5 -qadam: PIR sensori va modulini ulash
Keyin PIR sensori PIR boshqaruvchisiga ulandi
Kengash, ulanishlar quyidagicha
PIR sensori uchun PIR boshqaruv paneli
VCC - VCC
CTRL - CTRL
GND dan GNDgacha
Diagramma ga qarang
Bu hammasini amalga oshiradigan qism. PIR sensori har qanday issiq qonli mavjudotning harakatini oladi va har xil sxemalar/modullarning quvvat manbaini yoqadi. PIR sensori vaqti talabga muvofiq sozlangan va bu holda bu 40-45 soniyani tashkil qiladi. Taxminan 40-45 soniya davomida unga ulangan barcha kontaktlarning zanglashiga 5 voltli shaharni yuboradi.
6 -qadam: MP3 pleer va kuchaytirgich
KEYINGI MP3 pleer moduli va kuchaytirgich moduli.
Men ishlatgan MP3 pleerni yoqish uchun hech qanday tugmani bosishning hojati yo'q, unga kerakli kuchlanish berilgan vaqtda u avtomatik ravishda o'ynay boshlaydi. Menga faqat bitta trek kerak edi, shuning uchun men xotirasi past bo'lgan SD -kartani topdim (4 Gb, chunki shu kunlarda sig'imi pastroq kartani olish deyarli mumkin emas). Men internetdan yuklagan tovushlar, aslida bir qancha ovoz effektlari yuklangan va ularning hammasi ovozli muharrir dasturidan foydalanib bitta MP3 trekni yaratish uchun tuzilgan. Men "To'lqin muharriri" dan foydalandim va nihoyat, bu trekni SD -kartaga yukladim. SD -karta MP3 pleer moduliga o'rnatildi va karnaydan ovoz olish uchun chiqish kuchaytirgich moduliga ulandi.
Rasmga qarang
LM386 kuchaytirgich chipi juda kam tashqi komponentlarni talab qiladi va kichik karnaylardan yaxshi ovoz chiqaradi. Perforator taxtasini yig'ish sxemasi juda oson va uni yig'ishimga 15-20 daqiqa vaqt ketdi. Rasm o'z -o'zidan tushunarli.
7 -qadam: Yakuniy yig'ilish
Hamma narsani korpusga joylashtirishdan oldin, men hamma narsani sinab ko'rishni va modullarni kerakli tarzda joylashtirishni va oxirgi ulanishlarni o'rnatishni xohlardim. Men qismlarning ishlashidan qoniqdim. Men ularni shu maqsadda tayyorlangan kartalar taxtasi korpusiga o'rnatdim.
Men rekvizitning yakuniy yig'ilishidan so'ng videoni biriktiraman.
8 -qadam: INCLOSURE
Qoplama
Korpus eski karton qutidan qilingan, qizil rangga bo'yalgan. Ko'zlar va PIR sensori uchun joy o'tkir pichoq yordamida kesilgan. Bosh suyagining izi qutiga va ko'zlarga yopishtirilgan.mos ravishda kesilgan va kontur qora Doimiy marker qalam bilan qayta chizilgan. Men sochlarni tashlab yuborilgan suv idishlaridan yasadim, ingichka bo'laklarga bo'lib, boshiga va yonlariga Hot Melt elim bilan yopishtirdim. Men yon tomonga 2 ta rang o'zgaruvchan LEDni o'rnatdim va ular PIR boshqaruv panelidan tashqariga ulangan.
Karnay uchun kichik teshiklar qilingan va barcha buyumlar qutining ichki qismidagi Hot Melt elim yordamida tuzatilgan. Quvvat kabeli qutining orqa qismidan chiqarildi va bu haqida.
Umid qilamanki, siz ushbu Halloween bayramini bolalar uchun qilishdan zavqlanasiz !!
Yaqinda men ushbu loyihada ishlatiladigan audioklipni qo'shaman.
Hammaga Xellouin bayrami muborak !!
Tavsiya:
Yorqin LED ko'zlar: 5 qadam (rasmlar bilan)
Yorug'likni yo'qotadigan LED ko'zlari: LEDni o'chirish uchun Arduino kabi mikrokontrollerdan foydalanish har doim ham eng yaxshi variant emas. Ba'zan, siz bir necha hafta davomida batareyadan ishlayotganda to'g'ridan -to'g'ri tayanchga o'rnatilishi mumkin bo'lgan, past quvvatli zanjirni xohlaysiz
Masofadan boshqariladigan LED ko'zlar va kostyum qopqog'i: 7 qadam (rasmlar bilan)
Masofadan boshqariladigan LED ko'zlar va kostyum qopqog'i: egizak jawas! Ikkita Orko! Bubble-Bobble-dan ikkita ruhiy sehrgar! Bu kostyum qalpog'i ranglarni o'zgartirish orqali tanlagan har qanday LED ko'zli jonzot bo'lishi mumkin. Men bu loyihani birinchi marta 2015 yilda juda oddiy sxema va kod bilan yaratgan edim, lekin bu yil men bu haqda o'ylamoqchi edim
Bosh suyagi gradyanli ko'zlar bilan: 4 qadam
Bosh suyagi gradient ko'zlar bilan: hovli tozalaganda biz kichkina kemiruvchining bosh suyagini topdik. Biz Xellouin bayramiga yaqin edik va bu fikr keldi, agar sizning shkafingizda bosh suyagi bo'lmasa, uni eski qo'g'irchoq boshiga yoki yoqmoqchi bo'lgan narsaga almashtirish mumkin
Qo'rqinchli ko'zlar: 5 qadam (rasmlar bilan)
Qo'rqinchli ko'zlar: Men bu ko'rsatmalarni nashr etishga ikkinchi urinishim, chunki birinchisi barcha qadamlarni yuklamaydi. Umid qilamanki, Instructables-dagi yaxshi odamlar birinchisini o'chirib tashlashadi, men bu ko'zlarni plastik chiroqqa qo'yishni xohlardim
Qo'rqinchli va qo'rqinchli avtomatlashtirishdan so'ng animatronik: 4 qadam (rasmlar bilan)
Qo'rqinchli va qo'rqinchli avtomatlashtirishdan keyingi animatronik: Bu qo'rqinchli (uni Jek deb ataymiz) sizni hovlining turli joylarida sezadi, uyg'onadi va sizga qaraydi. Yaqinlashganda, Jek tishlarini ko'taradi va chayqaladi. Jek o'zini kunduzi harakatsiz qilib ko'rsatib, kechasi uyg'onadi (xuddi hamma yaxshi kabi