Агуулгын хүснэгт:

Arduino хянагч: 10 алхам (зурагтай)
Arduino хянагч: 10 алхам (зурагтай)

Видео: Arduino хянагч: 10 алхам (зурагтай)

Видео: Arduino хянагч: 10 алхам (зурагтай)
Видео: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, Долдугаар сарын
Anonim
Arduino хянагчид
Arduino хянагчид
Arduino хянагчид
Arduino хянагчид

Arduino болон p5.js номын санг ашигладаг Arduino тоглоомын хяналтын систем. Үүний санаа нь амархан хуулбарлагдах, өргөжүүлэх боломжтой Arduino төслийг бий болгох явдал юм. Хянагчийн холболтууд нь хянагч тус бүрээс хамааран сольж болох олон төрлийн мэдрэгч, оролтыг ашиглах зориулалттай.

Энэхүү төсөл нь p5.js -д зориулагдсан p5.play номын сангийн хамт p5.js JavaScript номын санг ашиглахад зориулагдсан болно. Эдгээр номын сан нь тоглоомоо хялбархан програмчлах боломжийг олгодог. P5.play вэбсайт нь хэрэглэгчдэд зориулан тоглоом бүтээх олон заавар, жишээг агуулдаг. Энэхүү төсөл нь хэрэглэгчид өөрсдийн техник хангамж, програм хангамж хөгжүүлэх ур чадвараа хэрэгжүүлэх боломжийг олгодог.

Алхам 1: Танд хэрэгтэй зүйл

Танд хэрэгтэй зүйл
Танд хэрэгтэй зүйл

Хэрэгсэл:

  • Гагнуурын төмөр
  • Гагнуур
  • Утас хуулагч
  • Хажуугийн таслагч
  • Бахө

Техник хангамж:

  • Arduino -тэй нийцтэй самбар (би Sparkfun Redboard, Arduino Uno, Leonardo ашигладаг байсан)
  • Хяналтын самбар:

    • 8см х 6см хэмжээтэй ногоон хавтан
    • Aduino Uno хамгаалалтын самбар
  • Төрөл бүрийн мэдрэгч

    • Тоглоомын саваа
    • Товчнууд (резистортой, 10к ом, тэдэнтэй хамт явдаг)
    • Потенциометр
    • Уян хатан мэдрэгч
    • Даралт мэдрэгч
    • Гэх мэт…
  • Утас:

    • Ганц утас (би 26 AWG Solid ашигласан)
    • Туузан утас ба хавчаар
  • Толгойг таслах (дор хаяж 20 ширхэг)
  • Нэмэлт тоног төхөөрөмж (та картон, халуун цавуу/зип холбогч ашиглаж болно):

    • Прототип хийх зориулалттай талхны самбар ба холбогч кабель
    • 3D хэвлэсэн бүрхүүл
    • Тоног төхөөрөмжийн бэхэлгээ (би M2.5 эрэг ашигласан)

Програм хангамж:

  • Arduino IDE
  • p5.js номын сан

    P5. номын сан бас тоглоорой

  • p5. цуваа хяналт
  • Node.js

Алхам 2: Барилга: Консолын төв, бамбайг тохируулах

Барилга: Консолын төв, бамбайг тохируулах
Барилга: Консолын төв, бамбайг тохируулах

Толгойг Arduino Uno shield perf board дээр гагнана.

  • Би бамбай толгойноос эхлэв (хүч, аналог, дижитал)
  • Дараагийнх нь 2х5 хэмжээтэй толгойн зүү юм. Та 2х5 толгой, эсвэл 5 мөр таслах 2 мөрийг ашиглаж болно. Би эдгээрийг босоо байдлаар А3, А4 хэмжээтэйгээр жагсааж, хооронд нь 2 зай үлдээсэн.

Алхам 3: Барилга: Консолын төв, бамбайг холбох

Барилга: Консолын төв, бамбайг холбох
Барилга: Консолын төв, бамбайг холбох
Барилга: Консолын төв, бамбайг холбох
Барилга: Консолын төв, бамбайг холбох
Барилга: Консолын төв, бамбайг холбох
Барилга: Консолын төв, бамбайг холбох

Дараа нь бид утсаа бамбай дээр чиглүүлэхийг хүсч байна. Утасыг дээд талаас нь ажиллуулах нь илүү хялбар байдаг, гэхдээ хэрэв та илүү цэвэрхэн харагдахыг хүсч байвал доороос нь ажиллуулж болно.

Эдгээр утсыг чиглүүлэхдээ та схемд анхаарлаа хандуулахыг хүсч байна (Eagle схемийг татаж авах боломжтой). Мөн танд туслахын тулд өнгөт гарын авлагыг үзэж болно.

Энэхүү бамбайгийн дизайны санаа нь хянагч бүрээс 3 аналог оролт, 5 дижитал оролтыг зөвшөөрөх явдал юм. Энэ нь Arduino Uno дээрх бүх аналог оролт болон манай тууз кабелийн үлдсэн утаснуудын давуу талыг бүрэн ашигладаг.

Алхам 4: Байшин барих: Хянагчид, эд ангиудыг тохируулах

Барилга: Хянагчид, эд ангиудыг тохируулах
Барилга: Хянагчид, эд ангиудыг тохируулах
Барилга: Хянагчид, эд ангиудыг тохируулах
Барилга: Хянагчид, эд ангиудыг тохируулах
Барилга: Хянагчид, эд ангиудыг тохируулах
Барилга: Хянагчид, эд ангиудыг тохируулах

Хянагчаа бүтээх эхний алхам бол ямар мэдрэгч ашиглахаа төлөвлөх явдал юм. Миний жишээн дээр надад джойстик, хэдэн товчлуур бүхий нэлээд стандарт хянагч бий. Би бас хоёр гулсах потенциометртэй хянагчтай.

Хэрэв та үүнийг хуулбарлахыг хүсвэл байршуулахын тулд миний зургийг үзэх боломжтой.

Дараагийн алхам бол туузны кабелийг гагнах самбар дээр гагнах явдал юм.

  1. Туузны кабелийг хуулаад, цагаан тугалга хийнэ
  2. Туузан кабелийг самбарынхаа дээд хэсэгт гагнана уу.

Дараагийн алхам бол утаснуудаа чиглүүлэх явдал юм. Би эхлээд цахилгаан (5В/улаан утас) ба газардуулгыг (хүрэн утас) мэдрэгч рүү холбож эхлэв. Дараа нь би аналог оролтыг холбосон. Улбар шар өнгийн кабелийг (Аналог А0 эсвэл А3) хэвтээ хөдөлгөөнд, шар кабелийг (Аналог А1 эсвэл А4) босоо чиглэлд ашиглахад хялбар байсан.

Аливаа зүйлийг тууштай байлгахын тулд би бүх товчлууруудаа нил ягаан болгож жижиг товчлуур дарсан. Энэ нь цуваа портыг хаах (энэ талаар дараа нь ярих болно), түүнчлэн цэс эсвэл сонголт гэх мэт зүйлүүдэд ашигтай байдаг.

Хэрэв та үүнийг үзэхийг хүсч байвал би joystick хянагчийнхаа хурдан схемийг оруулсан болно. Манай диаграмаас хянагч бүрийн холболт хийх боломжийг харж болно (3 аналог оролт, 5 дижитал).

Алхам 5: Нэмэлт: хашлага

Нэмэлт: хашлага
Нэмэлт: хашлага
Нэмэлт: хашлага
Нэмэлт: хашлага
Нэмэлт: хашлага
Нэмэлт: хашлага

Энэ алхам нь заавал байх ёстой, гэхдээ хэрэв та 3D принтер ашиглах боломжтой бол таны төслийн үр дүн арай илүү боловсронгуй болж дуусах болно. Миний прототипүүдээс харж байгаагаар би цаасан хавтангийн ёроолд байгаа гагнуурын үеийг хуруугаа цоолохоос сэргийлэхийн тулд энгийн картон цаас ашигласан.

Та энэ алхамд хавсаргасан миний 3D загварыг олох боломжтой. Би Arduino Uno/Leonardo болон Sparkfun RedBoard хоёуланд нь зориулан хашлага хийсэн (энэ самбар нь арай өргөн бөгөөд мини USB ашигладаг).

Хянагчдын хувьд та тэдгээрийг M2.5 эрэг ашиглан бэхлэх боломжтой. Би самарыг ПХБ -ийн хажуу талд байлгаж, угаагч болон боолтыг доод талд нь ашигладаг.

Би бас ашигладаг потенциометрийн бариулын гулсагчийн 3D загварыг оруулсан болно.

Та бүх 3D файлуудыг GitHub дээрээс олох боломжтой.

Алхам 6: Програмчлал: Arduino

Програмчлал: Arduino
Програмчлал: Arduino

Турших энгийн ноорог тохируулж эхэлье. Энд байгаа NYU дахь ITP -ийн үүсгэсэн хичээлийг ашиглахыг санал болгож байна. Энэ хичээлийг хийхийн тулд та p5.serialcontroll болон node.js -ийг суулгасан байх шаардлагатай. Энэхүү гарын авлагад та манай javascript номын сан, p5.js. ашиглах боломжтой цуваа өгөгдлийг илгээх Arduino -ийг тохируулах талаар танилцуулах болно. Үүнийг хийхийн тулд та өмнөх алхамуудад бидний үүсгэсэн төв ба хянагчийг ашиглаж болно, эсвэл хичээл дээр үзүүлсэн хэлхээг хуулбарлаж болно. Энэхүү гарын авлага нь Arduino Uno дээрх A0 аналог оролтын зүүг ашигладаг бөгөөд үүнийг таны анхны хянагчийн улбар шар утастай холбосон болно.

Таны дагахыг хүсч буй дараагийн хичээлийг эндээс олж болно. Энэхүү гарын авлага нь олон оролтыг тохируулах, тэдгээрийг p5.js дээр ашиглахад танд туслах болно. Хичээлд A0 ба A1 аналог оролтуудыг ашигладаг. Эдгээр нь манай системийн хянагч 1 дээрх улбар шар, шар өнгийн утастай тохирч байх болно.

Та дээрх хичээлүүдийг үзсэний дараа бид Arduino програмчилж болно. Бидний ашиглахыг хүссэн код доор байна:

// хянагч 1const int dig2 = 2; // blue const int dig3 = 3; // ягаан const int dig4 = 4; // саарал const int dig5 = 5; // цагаан const int dig6 = 6; // хар // хянагч 2 const int dig7 = 7; // blue const int dig8 = 8; // ягаан const int dig9 = 9; // саарал const int dig10 = 10; // цагаан const int dig11 = 11; // хар

хүчингүй тохиргоо () {

Цуваа эхлэх (9600); while (Serial.available () <= 0) {Serial.println ("сайн уу"); // эхлэх мессежийг хойшлуулах илгээнэ үү (300); // 1/3 секунд хүлээх} 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) {// ирж буй байтыг уншина уу: int inByte = Serial.read (); // мэдрэгчийг уншина уу:

// ANALOG хянагч 1

int analog0 = analogRead (A0); int analog1 = analogRead (A1); int analog2 = analogRead (A2); // ANALOG хянагч 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); // үр дүнг хэвлэх: Serial.print (analog0); // [0] Serial.print (","); Цуваа.хэвлэх (аналог1); // [1] Serial.print (","); Цуваа.хэвлэх (аналог2); // [2] Serial.print (","); // Start Controller 2 дата Serial.print (analog3); // [3] Serial.print (","); Цуваа.хэвлэх (аналог4); // [4] Serial.print (","); Цуваа.хэвлэх (аналог5); // [5] Serial.print (","); Цуваа.хэвлэх (дижитал2); // [6] Serial.print (","); Цуваа.хэвлэх (дижитал3); // [7] Serial.print (","); Serial.print (digital4); // [8] Serial.print (","); Цуваа.хэвлэх (дижитал5); // [9] Serial.print (","); Цуваа.хэвлэх (дижитал6); // [10] Serial.print (","); // Controller 2 өгөгдлийг эхлүүлэх Serial.print (digital7); // [11] Serial.print (","); Serial.print (digital8); // [12] Serial.print (","); Цуваа.хэвлэх (дижитал9); // [13] Serial.print (","); Serial.println (digital10); // [14] Serial.print (","); Serial.println (digital11); // [15]}}

Энэ код нь манай хоёр хянагчийн серийн өгөгдлийг 16 тооны массив хэлбэрээр илгээдэг. Эдгээр тоонуудын эхний 6 нь бидний аналог оролт (0-1023 хооронд), үлдсэн 10 утга нь бидний дижитал утга (0 эсвэл 1) юм.

Манай кодыг байршуулсны дараа бид үүнийг туршиж үзэх боломжтой бөгөөд үүнийг ITP -ийн 2 -р зааварчилгааны дагуу цуваа дэлгэцийг нээж, сериал монитор дээрээ утгыг оруулна уу. Бид үнэ цэнийнхээ мөрийг таслалаар тусгаарлах ёстой.

Алхам 7: Програмчлал: HTML

Arduino -г суулгаж, ажиллуулсны дараа бид вэб хэрэгслүүдээ програмчилж эхлэх боломжтой болно. HTML код нь маш энгийн.

бие {дүүргэлт: 0; хязгаар: 0;}

HTML код нь манай javascript файлуудыг хооронд нь холбож өгдөг. Манай кодын ихэнх нь манай зургийн.js файлд байх болно.

Алхам 8: Програмчлал: P5.js болон Javascript

HTML -ээ тохируулсны дараа бид JavaScript дээрээ ажиллах боломжтой болно. Хэрэв та хараахан амжаагүй байгаа бол p5.js болон p5.play -ийг татаж аваад вэбсайтынхаа лавлах санд байгаа номын сангийн хавтсанд нэмж оруулах хэрэгтэй.

  • p5.js
  • p5. тоглох

Өмнөх алхамдаа бид p5.js болон p5.play номын сангаа дуудахаар HTML файлаа тохируулсан. Бид мөн програмчлалынхаа ихэнх хэсгийг хийх sketch.js файлыг ашиглахаар тохируулсан. Манай араг ясны кодыг доор харуулав. Та мөн эндээс олж болно.

// Цуваа хувьсагчийн цуваа; // хувьсагч нь цувралын портын номын сангийн нэг хувилбарыг хадгалах var portName = 'COM4'; // серийн портынхоо нэрийг энд бөглөнө үү // Дэлхийн тоглоомын хувьсагчид ---------------

// Тохируулах функц ----------------------

функцын тохиргоо () {createCanvas (640, 480); serial = new p5. SerialPort (); // serialport номын сангийн шинэ жишээ үүсгэх serial.on ('list', printList); // serialport жагсаалтын үйл явдлын serial.on ('холбогдсон', serverConnected) дуудлага хийх функцийг тохируулах; // serial.on серверт холбогдохын тулд буцааж залгах ('нээлттэй', portOpen); // serial.on порт нээх дуудлага ('өгөгдөл', serialEvent); // шинэ өгөгдөл ирэх үед дуудлага хийх serial.on ('алдаа', serialError); // serial.on ('close', portClose) алдааны дуудлага хийх; // порт хаах дуудлага хийх serial.list (); // цуваа портуудыг жагсаах serial.open (portName); // цуваа портыг нээх} // Draw Function ----------------------- draw function () {background (0); // хар дэвсгэр} // Цуваа өгөгдлийг энд орчуулаарай ---------- функц serialEvent () {// цуваа портоос мөрийг уншина уу. readStringUntil ('\ r / n'); // тэнд үнэхээр тохиргоо байгаа эсэхийг шалгаарай: if (inString.length> 0) {if (inString! == 'hello') {// хэрэв та сайн уу, үүнийг үл тоомсорлоорой var sensors = split (inString, ', '); // мөрийг таслал дээр хуваана if (sensors.length> 16) {// хэрэв арван зургаан элемент байвал (6 аналог, 10 дижитал) // Энд мэдрэгчийн өгөгдлийг ашиглана уу:

}

} serial.write ('x'); // илүү их сериал өгөгдөл хүсэх байтыг илгээх}} // портуудын жагсаалтыг авах: printList функц (portList) функц {// portList нь (var i = 0; i <portList.length; i ++) серийн портын нэрсийн массив юм. {// Консолын жагсаалтыг харуулах: хэвлэх (i + "" + portList ); }} function serverConnected () {print ('серверт холбогдсон.'); } function portOpen () {print ('цуваа порт нээгдсэн.')} функц serialError (err) {print ('Цуваа портод ямар нэг зүйл буруу болсон' + алдаа); } function portClose () {print ('Цуваа порт хаагдсан.'); } функц CloseCode () {serial.close (portName); буцах null; } window.onbeforeunload = хаалтын код;

Та араг ясыг авсны дараа. Та эдгээр утгыг ITP зааварт хэрхэн хийгдсэнтэй ижил төстэй байдлаар ашиглаж болно. 6 -р алхамд манай Arduino -аас илгээсэн утгуудын мөрийг 16 тооны массив хэлбэрээр илгээж байна. Доор бид энэ массивыг задлан шинжлэх болно.

// Цуваа өгөгдлийг энд орчуулаарай ----------

serialEvent () {// функцийг цуваа портоос уншина уу // та тэрэг буцах болон шинэ мөрийг авах хүртэл: var inString = serial.readStringUntil ('\ r / n'); // тэнд үнэхээр тохиргоо байгаа эсэхийг шалгаарай: if (inString.length> 0) {if (inString! == 'hello') {// хэрэв та сайн уу, үүнийг үл тоомсорлоорой var sensors = split (inString, ', '); // мөрийг таслал дээр хуваана if (sensors.length> 16) {// хэрэв арван зургаан элемент байвал (6 аналог, 10 дижитал) // Энд мэдрэгчийн өгөгдлийг ашиглана уу:}} serial.write ('x'); // илүү их сериал өгөгдөл хүсэх байт илгээх}}

Бид одоо ажиллаж байгаа эсэхийг шалгахын тулд програмаа ажиллуулж болно!

Алхам 9: Хөтөлбөрөө ажиллуулж байна

Хөтөлбөрөө ажиллуулж байна
Хөтөлбөрөө ажиллуулж байна

Бид одоо ажиллаж байгаа эсэхийг шалгахын тулд програмаа ажиллуулж болно. Та өмнөх файл дахь skeleton.js файлыг ашиглан өөрийн тоглоомыг бүтээх боломжтой эсвэл эндээс олж авсан энгийн Pipe тоглоомыг ашиглаж болно.

ITP лабораторийн нэгэн адил манай програмыг ажиллуулахын тулд бид доорх алхмуудыг дагана.

  • Arduino -г ашиглахаар төлөвлөж буй хянагчтайгаа залгаарай.
  • P5.serialcontrol -ийг нээнэ үү
  • P5 ноорог портыг ашиглаж байгаа порт болгон өөрчил (хэрэв та араг ясыг ашиглаж байгаа бол энэ нь 3 -р мөрөнд байна)
  • Таны p5 ноорогтой холбосон HTML файлыг нээнэ үү

Хэрэв танд зураг эсвэл татаж авсан фонт гэх мэт гадны медиа байгаа бол та үүнийг сервер дээр ажиллуулахыг хүсэх болно. Хэрэв та хүсвэл энгийн локал питон сервер ажиллуулж болно.

Алхам 10: Цаашаа явах

Цаашид явж, илүү олон тоглоом хөгжүүлэхийн тулд энд байгаа p5.play хэлбэрийн янз бүрийн жишээг дагаж болно. Миний бүтээсэн илүү төвөгтэй тоглоомын жишээг доор харуулав. Энэ бол 1 vs 1 танк буудлагын тоглоом юм. Та бүх нөөцийг GitHub дээрээс олох боломжтой.

Зөвлөмж болгож буй: