Mundarija:

Arduino boshqaruvchilari: 10 qadam (rasmlar bilan)
Arduino boshqaruvchilari: 10 qadam (rasmlar bilan)

Video: Arduino boshqaruvchilari: 10 qadam (rasmlar bilan)

Video: Arduino boshqaruvchilari: 10 qadam (rasmlar bilan)
Video: MINI PUL ZAVOD bu albatta fokus siri bilan 2024, Iyul
Anonim
Arduino boshqaruvchilari
Arduino boshqaruvchilari
Arduino boshqaruvchilari
Arduino boshqaruvchilari

Arduino va p5.js kutubxonasidan foydalanadigan Arduino o'yinlarini boshqarish tizimi, bu osonlikcha takrorlanadigan va kengaytiriladigan Arduino loyihasini yaratishdir. Nazoratchi ulanishlari har bir tekshirgichga qarab o'zgarishi mumkin bo'lgan turli xil sensorlar va kirishlar to'plamidan foydalanishga mo'ljallangan.

Bu loyiha p5.js uchun mo'ljallangan p5.play kutubxonasi bilan bir qatorda p5.js JavaScript kutubxonasidan ham foydalanish uchun mo'ljallangan. Bu kutubxonalar o'yinlarimizni oson dasturlashimizga imkon beradi. P5.play veb -saytida foydalanuvchilar uchun o'yinlar yaratish uchun ko'plab darsliklar va misollar mavjud. Bu loyiha foydalanuvchilarga apparat va dasturiy ta'minotni ishlab chiqish ko'nikmalarini amalda qo'llash imkonini beradi.

1 -qadam: Sizga nima kerak

Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi

Asboblar:

  • Lehimlash temir
  • Lehim
  • Tel -striptizchilar
  • Yon kesgichlar
  • Pense

Uskuna:

  • Arduino -ga mos keladigan taxta (men Sparkfun Redboard -dan, Arduino Uno va Leonardodan foydalandim)
  • Takliflar taxtasi:

    • 8 sm x 6 sm uzunlikdagi yashil pardalar
    • Aduino Uno himoya paneli
  • Har xil sensorlar

    • Joystiklar
    • Tugmalar (rezistorlar bilan, 10k ohm, ular bilan birga)
    • Potentsiometrlar
    • Moslashuvchan sensorlar
    • Bosim sensorlar
    • Va boshqalar…
  • Tel:

    • Yagona sim (men 26 AWG Solid ishlatganman)
    • Ip va qisqichlar
  • Sarlavhalarni uzing (ulardan kamida 20 tasi)
  • Ixtiyoriy uskuna (buning o'rniga karton va hotglue/zip rishtalarini ishlatishingiz mumkin):

    • Prototip yaratish uchun non paneli va o'tish kabellari
    • 3D bosma idishlar
    • Uskuna mahkamlagichlari (men M2.5 vintlarini ishlatardim)

Dasturiy ta'minot:

  • Arduino IDE
  • p5.js kutubxonasi

    P5.play kutubxonasi

  • p5.serial nazorat
  • Node.js

2 -qadam: Qurilish: konsol uyasi, qalqonni o'rnatish

Bino: konsol uyasi, qalqonni o'rnatish
Bino: konsol uyasi, qalqonni o'rnatish

Sarlavhalarni Arduino Uno qalqonsimon paneliga lehimlang.

  • Men qalqon sarlavhalaridan boshladim (quvvat, analog va raqamli)
  • Keyingi - 2x5 sarlavhali pinlar. Siz 2x5 sarlavhadan foydalanishingiz mumkin, yoki atigi 5 qatorli 5 ta sarlavhadan foydalanishingiz mumkin. Men ularni A3 va A4 bilan vertikal ravishda joylashtirdim va ular orasida 2 ta bo'sh joy qoldirdim.

3 -qadam: Qurilish: konsol uyasi, qalqonni ulash

Bino: konsoli uyasi, qalqonni ulash
Bino: konsoli uyasi, qalqonni ulash
Bino: konsoli uyasi, qalqonni ulash
Bino: konsoli uyasi, qalqonni ulash
Bino: konsoli uyasi, qalqonni ulash
Bino: konsoli uyasi, qalqonni ulash

Keyinchalik, biz simlarimizni qalqonga o'tkazmoqchimiz. Simlarni tepada ishlatish osonroq, lekin agar siz toza ko'rinishni xohlasangiz, ularni pastdan o'tkazishingiz mumkin.

Ushbu simlarni yo'naltirishda siz sxemaga (burgut sxemasi yuklab olish mumkin) e'tibor berishni xohlaysiz. Bundan tashqari, sizga yordam berish uchun ranglar qo'llanmasiga qarashingiz mumkin.

Ushbu qalqon dizaynining g'oyasi, har bir tekshirgichdan 3 ta analog kirish va 5 ta raqamli kirishga ruxsat berishdir. Bu Arduino Uno -dagi barcha analog kirishlar va tasma kabelidagi qolgan simlardan to'liq foydalanadi.

4 -qadam: Qurilish: nazoratchilar, ehtiyot qismlaringizni sozlash

Bino: nazoratchilar, ehtiyot qismlaringizni sozlash
Bino: nazoratchilar, ehtiyot qismlaringizni sozlash
Bino: nazoratchilar, ehtiyot qismlaringizni sozlash
Bino: nazoratchilar, ehtiyot qismlaringizni sozlash
Bino: nazoratchilar, ehtiyot qismlaringizni sozlash
Bino: nazoratchilar, ehtiyot qismlaringizni sozlash

Tekshirgichni yaratish uchun birinchi qadam - qaysi sensorlardan foydalanishni rejalashtirish. Mening misollarimda menda joystik va bir nechta tugmachali standart standart nazoratchi bor. Menda ikkita slayder potansiyometrli nazoratchi bor.

Agar siz buni takrorlamoqchi bo'lsangiz, joylashtirish uchun rasmlarimni ko'rishingiz mumkin.

Keyingi qadam, lenta kabelini perflat taxtasiga lehimlash.

  1. Ip kabelini torting va qalaylang
  2. Lenta kabelini kartangizning yuqori markaziga lehimlang.

Keyingi qadam - simlarni yo'naltirish. Men kuchni (5V/qizil sim) va erni (jigarrang sim) sensorlarga ulashdan boshladim. Keyin analog kirishni uladim. Men gorizontal harakat uchun to'q sariq simni (Analog A0 yoki A3), vertikal harakat uchun sariq simni (Analog A1 yoki A4) ishlatishni oson topdim.

Vaziyatni izchil ushlab turish uchun men ham barcha boshqargichlarimdagi binafsha rangga kichik tugmachani uladim. Bu ketma -ket portni yopish (masalani keyinroq ko'rib chiqaman), shuningdek menyular yoki variantlar kabi narsalar uchun foydalidir.

Agar siz buni ko'rishni xohlasangiz, men joystik boshqaruvchisining tezkor sxemasini yukladim. Diagrammadan biz har bir tekshirgichning ulanish imkoniyatini ko'rishingiz mumkin (3 ta analog kirish va 5 ta raqamli).

5 -qadam: ixtiyoriy: korpuslar

Majburiy emas: korpuslar
Majburiy emas: korpuslar
Majburiy emas: korpuslar
Majburiy emas: korpuslar
Majburiy emas: korpuslar
Majburiy emas: korpuslar

Bu qadam ixtiyoriy, lekin agar sizda 3D printer mavjud bo'lsa, sizning loyihangiz natijasi biroz nozik va tugallangan ko'rinadi. Prototiplarimda ko'rib turganingizdek, men kartondan yasalgan bo'laklarning pastki qismidagi lehim bo'g'inlari barmoqlaringizga tegmasligini oldini oldim.

Siz bu qadamga biriktirilgan 3D modellarimni topishingiz mumkin. Men markaz uchun Arduino Uno/Leonardo va Sparkfun RedBoard uchun korpuslar yaratdim (bu taxta biroz kengroq va mini USB -dan foydalanadi).

Tekshirgichlar uchun siz ularni M2.5 vintlari bilan ulashingiz mumkin. Men yong'oqni tenglikni yon tomonida ushlab turdim va pastki qismidagi yuvish va vintni ishlatdim.

Men ishlatgan potentsiometrlar uchun slayderlar uchun 3D modelini ham qo'shdim.

GitHub -da barcha 3D fayllarni topishingiz mumkin.

6 -qadam: Dasturlash: Arduino

Dasturlash: Arduino
Dasturlash: Arduino

Sinash uchun oddiy eskizni o'rnatishdan boshlaylik. Men NYUda ITP tomonidan yaratilgan qo'llanmani bu erda topishni taklif qilaman. Ushbu qo'llanmani bajarish uchun sizga p5.serialcontroll va node.js o'rnatilgan bo'lishi kerak. Ushbu qo'llanmada sizga p5.js javascript kutubxonamiz foydalanishi mumkin bo'lgan ketma -ket ma'lumotlarni yuborish uchun Arduino -ni sozlash bilan tanishasiz. Buni amalga oshirish uchun siz avvalgi bosqichlarda biz yaratgan uyadan va boshqaruvchidan foydalanishingiz mumkin yoki darslikda ko'rsatilgan sxemalarni takrorlashingiz mumkin. Ushbu qo'llanmada Arduino Uno -ning A0 analog kirish pinidan foydalaniladi, u sizning birinchi tekshirgichingizning to'q sariq simiga bog'langan.

Siz kuzatmoqchi bo'lgan keyingi qo'llanmani bu erda topishingiz mumkin. Ushbu qo'llanma sizga bir nechta kirishni sozlash va ularni p5.js da ishlatishga yordam beradi. Qo'llanmada A0 va A1 analogli kirishlar ishlatiladi. Bular bizning tizimimizning 1 -kontrolleridagi to'q sariq va sariq simlarga to'g'ri keladi.

Yuqoridagi ko'rsatmalarni o'rganib chiqqaningizdan so'ng, biz Arduino -ni dasturlashimiz mumkin. Biz foydalanmoqchi bo'lgan kod quyida:

// nazoratchi 1const int dig2 = 2; // ko'k const int dig3 = 3; // binafsha const int dig4 = 4; // kulrang const int dig5 = 5; // oq const int dig6 = 6; // qora // nazoratchi 2 const int dig7 = 7; // ko'k const int dig8 = 8; // binafsha rang const int dig9 = 9; // kulrang const int dig10 = 10; // oq const int dig11 = 11; // qora

bo'sh o'rnatish () {

Serial.begin (9600); while (Serial.available () <= 0) {Serial.println ("salom"); // boshlang'ich xabarni kechiktirishni yuborish (300); // 1/3 soniya kuting} pinMode (dig2, INPUT); pinMode (dig3, INPUT); pinMode (dig4, INPUT); pinMode (dig5, INPUT); pinMode (dig6, INPUT); pinMode (dig7, INPUT); pinMode (dig8, INPUT); pinMode (dig9, INPUT); pinMode (dig10, INPUT); pinMode (dig11, INPUT); }

void loop () {

if (Serial.available ()> 0) {// kiruvchi baytni o'qing: int inByte = Serial.read (); // sensorni o'qing:

// ANALOG tekshiruvi 1

int analog0 = analogRead (A0); int analog1 = analogRead (A1); int analog2 = analogRead (A2); // ANALOG Controller 2 int analog3 = analogRead (A3); int analog4 = analogRead (A4); int analog5 = analogRead (A5); // DIGITAL Controller 1 int digital2 = digitalRead (dig2); int digital3 = digitalRead (dig3); int digital4 = digitalRead (dig4);

int digital5 = digitalRead (dig5);

int digital6 = digitalRead (dig6); // DIGITAL Controller 2 int digital7 = digitalRead (dig7); int digital8 = digitalRead (dig8); int digital9 = digitalRead (dig9); int digital10 = digitalRead (dig10); int digital11 = digitalRead (dig11); // natijalarni chop eting: Serial.print (analog0); // [0] Serial.print (","); Serial.print (analog1); // [1] Serial.print (","); Serial.print (analog2); // [2] Serial.print (","); // Start Controller 2 ma'lumotlari Serial.print (analog3); // [3] Serial.print (","); Serial.print (analog4); // [4] Serial.print (","); Serial.print (analog5); // [5] Serial.print (","); Serial.print (raqamli2); // [6] Serial.print (","); Serial.print (raqamli3); // [7] Serial.print (","); Serial.print (raqamli4); // [8] Serial.print (","); Serial.print (raqamli5); // [9] Serial.print (","); Serial.print (raqamli6); // [10] Serial.print (","); // Controller 2 ma'lumotlarini ishga tushiring Serial.print (digital7); // [11] Serial.print (","); Serial.print (raqamli8); // [12] Serial.print (","); Serial.print (raqamli9); // [13] Serial.print (","); Serial.println (raqamli10); // [14] Serial.print (","); Serial.println (raqamli11); // [15]}}

Bu kod har ikkala nazoratchimizdan ketma -ket ma'lumotlarni 16 raqamli qator sifatida yuboradi. Bu raqamlarning birinchi 6 tasi analog kirishlarimiz (0-1023 oralig'ida), qolgan 10 qiymatlari esa raqamli qiymatlarimiz (0 yoki 1).

Bizning kod yuklanganidan so'ng, biz buni seriyali monitorni ochish va ITP -ning 2 -darsligida bo'lgani kabi, ketma -ket monitorimizga qiymat kiritish orqali sinab ko'rishimiz mumkin. Biz vergul bilan ajratilgan qadriyatlarimiz qatorini olishimiz kerak.

7 -qadam: Dasturlash: HTML

Biz Arduino -ni o'rnatganimiz va ishga tushirganimizdan so'ng, biz o'z veb -materiallarimizni dasturlashni boshlashimiz mumkin. HTML kodi juda oddiy.

tana {to'ldirish: 0; chegara: 0;}

HTML kodi bizning javascript fayllarimizni birlashtiradi. Bizning kodimizning aksariyati.js sketch faylimizda bo'ladi.

8 -qadam: Dasturlash: P5.js va Javascript

HTML -ni o'rnatgandan so'ng, biz JavaScript -da ishlashimiz mumkin. Agar sizda hali yo'q bo'lsa, endi p5.js va p5.play -ni yuklab olishingiz va ularni veb -saytingiz katalogidagi kutubxonalar papkasiga qo'shishingiz kerak.

  • p5.js
  • p5. o'yin

Oldingi qadamda biz HTML faylimizni p5.js va p5.play kutubxonalariga qo'ng'iroq qilish uchun o'rnatdik. Biz uni sketch.js faylidan foydalanadigan qilib o'rnatdik, u erda biz dasturlashning ko'p qismini qilamiz. Quyida skeletimiz uchun kod mavjud. Siz uni bu erda ham topishingiz mumkin.

// Serial Variablesvar ketma -ket; // o'zgaruvchi serportport kutubxonasi misolini ushlab turish uchun var portName = 'COM4'; // ketma-ket port nomini bu yerga to'ldiring // Global o'yin o'zgaruvchilari ---------------

// O'rnatish funktsiyasi ----------------------

funktsiyani sozlash () {createCanvas (640, 480); serial = yangi p5. SerialPort (); // serial.on kutubxonasining yangi nusxasini yaratish serial.on ('ro'yxat', printList); // serial.on ("ulangan", serverConnected) serialport ro'yxati hodisasi uchun qayta qo'ng'iroq qilish funktsiyasini o'rnatish; // serial.on ("ochiq", portOpen) serveriga ulanish uchun qayta qo'ng'iroq; // serial.on portini ochish uchun qayta qo'ng'iroq ('ma'lumotlar', serialEvent); // yangi ma'lumotlar serial.on kelganda ("xato", serialError) qo'ng'iroq qilish; // serial.on ("yaqin", portClose) xatolar uchun qayta qo'ng'iroq qilish; // serial.list () portining yopilishi uchun qayta qo'ng'iroq; // serial.open (portName) ketma -ket portlarini ro'yxatlash; // ketma-ket port ochish} // Draw Function ----------------------- draw draw () {background (0); // qora fon} // Bu erda ketma-ket ma'lumotlarni sharhlang ---------- funktsiyasi serialEvent () {// ketma-ket portdan satrni o'qing // vagon qaytarilishi va yangi qator bo'lmaguncha: var inString = serial. readStringUntil ('\ r / n'); // u erda haqiqatan ham ssetring borligini tekshiring: if (inString.length> 0) {if (inString! == 'salom') {// agar salom bersangiz, unga e'tibor bermang var sensors = split (inString, ', '); // agar (sensorlar.length> 16) {// agar o'n oltita element bo'lsa (6 analog, 10 raqamli) satrni vergul ustiga ajrating // Sensor ma'lumotlarini bu erda ishlating:

}

} serial.write ('x'); // ko'proq ketma -ket ma'lumotlarni talab qiladigan baytni yuboring}} // portlar ro'yxatini oling: printList funktsiyasi (portList) {// portList - ketma -ket port nomlari qatori (var i = 0; i <portList.length; i ++) {// Konsol ro'yxatini ko'rsatish: chop etish (i + "" + portList ); }} serverConnected funktsiyasi () {print ('serverga ulangan.'); } function portOpen () {print ('ketma -ket port ochildi.')} funksiyasi serialError (err) {print ('Seriya portida biror narsa noto'g'ri ketdi' + xato); } funktsiyasi portClose () {print ('Seriya porti yopildi.'); } funksiyasi closCode () {serial.close (portName); qaytarish null; } window.onbeforeunload = yopilish kodi;

Agar skelet saqlangan bo'lsa. Siz bu qiymatlarni ITP qo'llanmasida bo'lgani kabi ishlatishingiz mumkin. 6 -qadamda Arduino -dan biz yuborgan qiymatlar qatori 16 ta raqamli qator sifatida yuborilmoqda. Quyida biz bu qatorni tahlil qilamiz.

// Seriya ma'lumotlarini bu erda izohlang ----------

serialEvent () {// funktsiyasi ketma -ket portdan // qatorni o'qing va siz yangi qatorni olmaguningizcha: var inString = serial.readStringUntil ('\ r / n'); // u erda aslida ssetring borligini tekshiring: if (inString.length> 0) {if (inString! == 'salom') {// agar salom olsangiz, unga e'tibor bermang var sensors = split (inString, ', '); // agar (sensorlar.length> 16) {// agar o'n oltita element bo'lsa (6 analog, 10 raqamli) satrni vergul ustiga ajratish // Sensor ma'lumotlaridan bu erda foydalaning:}} serial.write ('x'); // ko'proq ketma -ket ma'lumotlarni talab qiladigan bayt yuboring}}

Endi biz dasturimizni ishga tushirishimiz mumkin, u ishlayaptimi?

9 -qadam: Dasturingizni ishga tushiring

Sizning dasturingizni ishga tushirish
Sizning dasturingizni ishga tushirish

Endi biz o'z dasturimizni ishga tushiramiz, u ishlayaptimi? Siz avvalgi faylimizdagi skeleton.js faylidan foydalanib, o'zingizning shaxsiy o'yiningizni yaratishingiz mumkin yoki siz bu erda topilgan oddiy Pipe o'yinidan foydalanishingiz mumkin.

ITP laboratoriyasiga o'xshab, dasturimizni ishga tushirish uchun biz quyidagi amallarni bajaramiz.

  • Arduino -ni ishlatmoqchi bo'lgan kontroller (lar) ga ulang.
  • P5.serialcontrolni oching
  • P5 eskiz portini siz foydalanadigan portga o'zgartiring (agar siz skeletdan foydalansangiz, bu 3 -qatorda)
  • P5 eskiziga havola qilingan HTML faylini oching

Agar sizda rasm yoki yuklangan shrift kabi tashqi muhit bo'lsa, uni serverda ishga tushirishni xohlaysiz. Agar xohlasangiz, oddiy mahalliy python serverini ishga tushirishingiz mumkin.

10 -qadam: Oldinga borish

Oldinga borish va buning uchun ko'proq o'yinlar ishlab chiqish uchun siz bu erda topilgan p5.play shaklidagi turli misollarga amal qilishingiz mumkin. Quyida men yaratgan murakkab o'yinning misoli keltirilgan. Bu 1 vs 1 tank otishma o'yini. Buning uchun barcha manbalarni GitHub -da topishingiz mumkin.

Tavsiya: