Mundarija:
- 1 -qadam: materiallar
- 2 -qadam: prototip yaratish
- 3 -qadam: Kosonni lazer bilan kesish
- 4 -qadam: Arja tugmachalarini lehimlash
- 5 -qadam: tugmachalarni yig'ing va ularni taxtangizga ulang
- 6 -qadam: Jahannamni kodlash
- 7 -qadam: Hammasi ishlaydi
Video: Arja tugmachalarini ulash va ishlatish: 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Men yaqinda o'z loyihalarimni amalga oshirish uchun Arduino -dan foydalana boshladim. Dizayner sifatida men o'yinlarim/interaktiv loyihalarim uchun maxsus interfeyslarni yaratishni yaxshi ko'raman.
Men duch kelgan bitta muammo shundaki, ketma -ket aloqadan foydalanish juda murakkab va muammolarga va xatolarga moyil, shuning uchun men o'z o'yinlarimni boshqarish uchun tashqi tugmalardan foydalanishimga imkon beradigan tez va oson echimni xohlardim.
Men istalgan kompyuterda bir zumda ishlata oladigan ulanish moslamasini xohlardim, men Arduino Leonardoni sotib oldim. Bu deyarli Uno bilan bir xil, lekin bir nechta farqlar bilan. Men bu loyihani o'z foydamga ishlatadigan asosiy farq - bu HID sifatida harakat qilish qobiliyati. HID yoki inson interfeysi qurilmasi - bu har bir qurilma uchun maxsus drayverlarni o'rnatmasdan kompyuteringizga klaviatura va sichqonchadan kirishni aniqlash va qabul qilish imkonini beruvchi USB protokoli.
Eslatma: agar siz dasturiy ta'minotni bu erda ko'rsatilganidek yangilasangiz, Uno -dan ham foydalanishingiz mumkin.
1 -qadam: materiallar
Ushbu loyiha uchun sizga kerak bo'ladi:
1 ta HID qobiliyatli mikrokontroller (Arduino micro, Due & Leonardo kabi bir nechtasi bor, men Arduino Leonardodan foydalanaman)
1 x USB - arduino kabeli (Leonardo uchun bu USB mikro)
3x Arja tugmalari (men ularni sotib oldim)
1x lehimsiz non paneli
3x 10k ohmli rezistorlar
3x 220 ohmli rezistorlar
Jumper simlari
Siz, albatta, ko'proq tugmachalarni qo'shishingiz yoki hamma narsani non paneliga lehimlashingiz mumkin, bu esa ishni yanada barqaror qiladi.
2 -qadam: prototip yaratish
Shunday qilib, men foydalanmoqchi bo'lgan arja tugmachalarini sotib olishdan oldin men buni standart tugmalar yordamida sinab ko'rdim. Tugmalarni standart usulda ulang, menimcha, 10K ohmli rezistorlar ishlatilgan.
Leonardo tufayli dasturlash juda oddiy. Siz klaviatura kutubxonasini kiritishingiz kerak. Men kodim uchun asos sifatida "Klaviatura xabari" Arduino standart misolini ishlatdim.
Endi savol tugmachalarning qanday ishlashini xohlaysiz. Sizda asosan ikkita tanlov bor: bitta tugmani bosish va agar bosilsa harflarning uzluksiz oqimi. Bu, albatta, siz xohlagan narsani loyihangizga bog'liq.
Agar siz biror narsani bosishni xohlasangiz, masalan, o'tish yoki yoqish/o'chirish tugmachasi bosilsa, siz bitta bosish usulini tanlaysiz. Ushbu usul yordamida siz tugma holatiga qaraysiz, u yuqorimi yoki pastga? Keyin siz uni oldingi holat bilan solishtirasiz, u allaqachon yuqorimi yoki pastmi? Agar oldingi tugma holati hozirgi tugma holati bilan bir xil bo'lsa, hech narsa bo'lmaydi. Ammo agar tugma holati o'zgarsa, xuddi siz tugmani bosganingizda yoki bo'shatganingizda, nimadir bo'ladi. Mening kodimda u faqat tugma bosilganda harfni yozadi, qo'yib yuborilganda emas, lekin siz buni o'zgartirishingiz mumkin.
#"Keyboard.h" ni qo'shing
const int buttonLeft = A0; // tugma uchun kirish pimi
const int buttonRight = A1; const int buttonUp = A2;
int oldingiButtonStateLeft = YUQORI; // tugma holatini tekshirish uchun
int oldingiButtonStateRight = YUQORI; int previousButtonStateUp = HIGH;
bo'sh o'rnatish () {
// pushButton pinini kirishga aylantiring: pinMode (buttonLeft, INPUT); pinMode (tugmachaning o'ng, kirish); pinMod (tugmani yuklash, Kirish); // klaviatura ustidan boshqaruvni ishga tushirish: Keyboard.begin (); }
void loop () {
// tugmachani o'qing: int buttonStateLeft = digitalRead (buttonLeft); // agar tugma holati o'zgargan bo'lsa, agar ((buttonStateLeft! = previousButtonStateLeft) // va hozirda u bosilgan bo'lsa: && (buttonStateLeft == HIGH)) {// xabar yozing Keyboard.print ("a"); } // keyingi tugma holatini keyingi taqqoslash uchun saqlang: previousButtonStateLeft = buttonStateLeft;
// tugmachani o'qing:
int buttonStateRight = digitalRead (buttonRight); // agar tugma holati o'zgargan bo'lsa, ((buttonStateRight! = previousButtonStateRight) // va hozirda u bosilgan: && (buttonStateRight == HIGH)) {// xabarni yozing Keyboard.print ("w"); } // keyingi tugma holatini keyingi taqqoslash uchun saqlang: previousButtonStateRight = buttonStateRight;
// tugmachani o'qing:
int buttonStateUp = digitalRead (buttonUp); // agar tugma holati o'zgargan bo'lsa, agar ((buttonStateUp! = previousButtonStateUp) // va hozirda u bosilgan bo'lsa: && (buttonStateUp == HIGH)) {// xabar yozing Keyboard.print ("d"); } // keyingi tugma holatini keyingi taqqoslash uchun saqlang: previousButtonStateUp = buttonStateUp; }
Agar siz biror narsa doimiy ravishda sodir bo'lishini xohlasangiz, tugma bosilganda, siz xohlaganingizcha, chap yoki o'ng harakatni xohlasangiz, oldingi tugma holatini tekshirmasdan xat yozishiga ruxsat bering. Aqldan ozishining oldini olish va tugmachalarning sakrashiga qarshi turish uchun biroz kechiktirishni unutmang. Bu muammoni hal qilishning yanada oqilona usullari bor, lekin bu oson va tez.
#"Keyboard.h" ni qo'shing
const int buttonLeft = A0; // tugma uchun kirish pimi
const int buttonRight = A1; const int buttonUp = A2;
bo'sh o'rnatish () {
// pushButton pinini kirishga aylantiring: pinMode (buttonLeft, INPUT); pinMode (tugmachaning o'ng, kirish); pinMode (tugmani yuklash, kiritish); // klaviatura ustidan nazoratni boshlash: Keyboard.begin (); }
void loop () {
// tugmachani o'qing: int buttonStateLeft = digitalRead (buttonLeft); if (buttonStateLeft == HIGH) // agar tugma bosilsa {// xabarni yozing Keyboard.print ("a"); kechikish (50); // Siqish va kompyuterni ushlab qolish uchun kechikish}
// tugmachani o'qing:
int buttonStateRight = digitalRead (buttonRight); if (buttonStateRight == HIGH) // agar tugma bosilsa {// xabarni yozing Keyboard.print ("w"); kechikish (50); // Siqish va kompyuterni ushlab qolish uchun kechikish}
// tugmachani o'qing:
int buttonStateUp = digitalRead (buttonUp); if (buttonStateUp == HIGH) // agar tugma bosilsa {// xabar yozing Keyboard.print ("d"); kechikish (50); // Siqilish va kompyuterni ushlab qolish uchun kechikish}}
Sizning ehtiyojlaringizga eng mos kelishiga qarab, har doim ikkala usuldan ham foydalanishingiz mumkin.
3 -qadam: Kosonni lazer bilan kesish
Ish uchun men 2 mm pleksiglas qo'shimchali 3 mm mdf ishlatganman. Men qo'shimchani qo'shdim, chunki keyingi bosqichda korpusning ichki qismiga bir nechta LEDlarni qo'shib, uni chiroyli va yorqin qilishini xohlayman.
Men o'z o'lchamimni kiritdim va svg faylini yukladim. Men uni Illustrator -da ochdim va kerakli teshiklarni qo'shdim. Agar sizda Illustrator bo'lmasa, bu qadam uchun Inkscape -dan foydalanishingiz mumkin.
Albatta, lazerli kesgichni ishlatishning hojati yo'q, chunki bu bir nechta teshiklari bo'lgan oddiy quti. An'anaviy elektr asboblari (yoki hatto qo'lda ishlaydigan asboblar) yordamida uni yaratish juda oson bo'lishi kerak, men juda dangasa va lazerli kesgichga ega bo'ldim.
4 -qadam: Arja tugmachalarini lehimlash
Arja tugmasi (yoki hech bo'lmaganda meniki) uch qismdan iborat. Plastik korpus, LED ushlagichi (uning ichida LED bilan) va mikro kalit. Mikro kalit - bu tugmachaning haqiqiy tugmasi va siz Arduino -ga ulanish uchun kerak bo'ladi. Mikro kalitda uchta terminal bor (ular metall simlar, siz simlaringizni lehimlaysiz). Yuqorida (yoki pastda, siz xohlagan narsa) - bu er. Boshqa ikkita terminal - Oddiy Ochiq (YO'Q) va Oddiy Yopiq (NC). YO'Q degani, agar tugma bosilsa, u ulanadi. NC degani, agar tugma bosilsa, u aloqani uzadi. Biz ushbu loyiha uchun NO ni ishlatamiz. Men rasmda mikro kalitimga erni, NO va NC ni belgiladim.
Mening tugmalarim yoritilgan, shuning uchun men LED ushlagichiga simlarni lehimladim. Anodning qaysi tomoni va qaysi katod (LEDning ijobiy va salbiy tomonlari) ekanligini bilish uchun simlar rangini belgilang.
Lehimsiz non taxtasi bilan ishlashni osonlashtirish uchun men simlarimga bosh pinlarini lehimladim. Men shunchaki simni bosh piniga lehimlab qo'ydim va ularni yanada chidamli qilish uchun atrofiga ozgina issiqlik o'tkazuvchi trubka qo'ydim.
5 -qadam: tugmachalarni yig'ing va ularni taxtangizga ulang
Endi sizning holatingizda arja tugmachalarini to'plash vaqti keldi. Plastik korpusdan qulflash halqasini chiqarib oling va uni korpus teshigidan mahkamlang. Tugmani joyiga mahkamlash uchun qulflash halqasini boshqa tomondan mahkamlang. LED ushlagichini mahkamlang va mahkamlang. Mikro kalitlarda qimirlatib turing (uni ushlab turish uchun bir -biriga mos keladigan kichik zodagonlar va teshiklar bor).
Kalitlarni taxtaga ulash uchun siz qo'shgan yoki qo'shmagan tugmachalarni olib tashlang. Mikro kalitning eridan keladigan simni Arduino va rezistorning eriga ulang (bu erda tugmachaning oyog'i joylashgan). Mikro kalitning NO -dan keladigan simni Arduino -ning 5v -ga ulang.
LED simlari uchun manfiy simni erga va musbatni 220V qarshilik bilan 5V ga ulang. Agar siz ularni shunday bog'lasangiz, ular doimo yonib turadi. Agar xohlasangiz, ularni kodga qo'shishingiz va tugmalar bilan sinxronlashda yoqishingiz va o'chirishingiz mumkin.
6 -qadam: Jahannamni kodlash
Shunday qilib, endi siz o'zingizning yangi tugmalaringizni eski kodingizga biriktirdingiz va birdan u endi kerak bo'lmaganday ishlamayapti. Harflar birdaniga ikki yoki uchtadan paydo bo'ladi va u oddiy HTML5 o'yinlarida bo'lgani kabi ishlamaydi. Jahannamdan voz kechishga xush kelibsiz.
Birinchi narsa birinchi. Prototiplash paytida biz yozgan kod? u yaxshi ishlaydi va oddiy, lekin u nafis emas. Agar siz boshqa tugmachalarni qo'shmoqchi bo'lsangiz, kod parchalarini nusxalash va joylashtirish va undagi barcha qiymatlarni o'zgartirish kerak. Agar siz ulardan birini unutib qo'ysangiz, xato tuzatish do'zaxiga kirasiz. Bu yerda mavzu aniqlansinmi? Kodlash - bu do'zax, lekin do'zaxni hal qilish juda kulgili.
Biz chiroyli, qisqa kodni xohlaymiz. Shunday qilib, biz butun individual tugmachalarni massivlarga o'zgartiramiz. Shunday qilib, agar siz ko'proq tugmachalarni qo'shmoqchi bo'lsangiz, siz faqat tugma miqdorini, ular joylashgan pinlarni va ularning chiqishini o'zgartirishingiz kerak. Biz shuningdek, asosiy kirishni ASCII ga o'zgartiramiz, chunki … u yaxshiroq ishlaydi?
Agar siz menga o'xshagan bo'lsangiz, tugmalarni ishlatishning oddiy va oson usulini yozasiz va u siz xohlagandek ishlamaydi. Shunday qilib, siz yangi versiyalarni yaratasiz (bolalarni eslang, zaxira nusxalarini eslang!), Har xil narsalarni sinab ko'ring, doimo ishlamaydigan murakkab kodni yozing va oxir-oqibat bir necha soat oldin yozgan oddiy kodingizga qayting va kichik xatoga e'tibor bering. hamma narsani darhol tuzatadi.
Sizga bu sayohatni qoldirishga ijozat bering, mana bu ish kodi:
Ogohlantirish: bu matn bir necha soatlik kodlash va xatolarni tuzatgandan so'ng yozilgan. Iltimos, umidsizlik belgilariga e'tibor bermang va quyida keltirilgan ish kodiga e'tibor bering;)
#"Keyboard.h" ni qo'shish
int tugmachasi = {
A0, A1, A2}; // Tugmalar qayerda? int asciiLetter = {97, 100, 119}; // ASCII -dagi harflar, bu erda: a, d, w int tugmasiState [buttonAmount]; // Tugma bosiladimi yoki bosilmayaptimi?
bo'sh o'rnatish () {
for (int i = 0; i <buttonAmount; i ++) {// pinMode qatori orqali o'tish (buttonPin , INPUT); // barcha pinlarni kiritishga sozlang}}
void loop () {
for (int i = 0; i <buttonAmount; i ++) // {buttonState = digitalRead (buttonPin ) qatori orqali aylanish; // Tugmalar nima qiladi? if (buttonState == HIGH) {// Agar tugma bosilsa Keyboard.press (asciiLetter ); // tegishli xatni yuborish} else // agar tugma bosilmasa {Keyboard.release (asciiLetter ); // xatni qo'yib yuboring}}
}
7 -qadam: Hammasi ishlaydi
Maxsus boshqaruvchini ulang va o'ynang!
Agar sizga bu ko'rsatma yoqqan bo'lsa, iltimos, tanlovda menga ovoz bering!
Tavsiya:
Makey Makey yordamida pianino tugmachalarini o'rganing: 6 qadam (rasmlar bilan)
Makey Makey yordamida pianino tugmachalarini o'rganing: Men buni "Maker" stantsiyasida o'tkaziladigan kechada qurdim. Bu o'yin pianino klaviaturasida eslatmalar qaerda ekanligini o'ynash orqali bilib olishga yordam beradi. Bizning guruhimiz ta'lim ko'rgazmasida Maker Station paviloniga taklif qilindi. Tarbiyachi bilan gaplashayotganda
Mac terminalini qanday ishlatish va asosiy funktsiyalarni qanday ishlatish kerak: 4 qadam
Mac terminalini qanday ishlatish va asosiy funktsiyalarni qanday ishlatish kerak: Biz sizga MAC terminalini qanday ochish kerakligini ko'rsatamiz. Shuningdek, biz sizga terminalda ifconfig, kataloglarni o'zgartirish, fayllarga kirish va arp kabi bir nechta xususiyatlarni ko'rsatamiz. Ifconfig sizga IP manzilingizni va MAC reklamangizni tekshirishga imkon beradi
Retro Arja Art bilan LED pikselli san'at ramkasi, ilova boshqariladi: 7 qadam (rasmlar bilan)
LED -pikselli san'at ramkasi, ilova boshqariladigan, retro -arcade san'ati bilan: 8024 -yillar ARCADE O'YIN ART qismlarini aks ettiruvchi 1024 LEDli LED -ART ramkali boshqaruv panelini yarating PIXEL ishlab chiqaruvchilar to'plami - $ 59Adafruit 32x32 P4 LED matritsasi - $ 49.9512x20, 1 dyuymli akril plastmassa. qalinligi dyuym - Tap Plastics shaffof engil tutuni -
Qo'l bilan bo'yalgan retro/kosmik tematik arja shkafi: 6 qadam (rasmlar bilan)
Qo'l bilan bo'yalgan retro/kosmik tematik arja shkafi: Space/Retro Gaming mavzusidagi stol usti retro arkadali shkafni yaratish bo'yicha qo'llanmamga xush kelibsiz! Buning uchun sizga quyidagilar kerak bo'ladi: Raspberry Pi 3 yoki 2 ta taxta (RSComponent yoki Pimoroni) va funt; 28- 34 Micro USB kabeli Raspberry Pi-ni quvvatlaydi; 28-1
Maxsus Arduino RAN g'ildiraklari tugmachalarini yangi avtomobil stereo bilan ushlab turishi uchun: 9 qadam (rasmlar bilan)
Maxsus Arduino RAN g'ildiraklari tugmachalarini yangi avtomobil stereolari bilan ushlab turishi uchun: Men Volvo V70 -02 rusumidagi original avtomobil stereosini yangi stereo bilan almashtirishga qaror qildim, shunda men mp3, bluetooth va ovoz balandligi kabi narsalardan bahramand bo'la olaman. Mening mashinamda hali ham ishlatishni xohlagan stereo uchun rulni boshqarish elementlari mavjud.