Мазмұны:
- 1 -қадам: Сізге не қажет
- 2 -қадам: Құрылыс: консольдық хаб, қалқанды орнату
- 3 -қадам: Құрылыс: консольдық хаб, қалқанды сымдау
- 4 -қадам: Құрылыс: контроллерлер, бөлшектерді орнату
- 5 -қадам: Қосымша: қоршаулар
- 6 -қадам: Бағдарламалау: Arduino
- 7 -қадам: Бағдарламалау: HTML
- 8 -қадам: Бағдарламалау: P5.js және Javascript
- 9 -қадам: Бағдарламаны іске қосыңыз
- 10 -қадам: Әрі қарай жүріңіз
Бейне: Arduino контроллері: 10 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Arduino мен p5.js кітапханасын пайдаланатын Arduino ойын контроллері жүйесі. Бұл идея - оңай көшірілетін және кеңейтілетін Arduino жобасын құру. Контроллер қосылымдары әр контроллерге байланысты ауыстырылуы мүмкін әр түрлі сенсорлар мен кірістерді қолдануға арналған.
Бұл жоба p5.js арналған p5.play кітапханасымен бірге p5.js JavaScript кітапханасын пайдалануға арналған. Бұл кітапханалар ойындарды оңай бағдарламалауға мүмкіндік береді. P5.play веб -сайтында пайдаланушыларға ойындар жасауға арналған көптеген оқулықтар мен мысалдар бар. Бұл жоба пайдаланушыларға аппараттық және бағдарламалық жасақтама жасау дағдыларын қолдануға мүмкіндік береді.
1 -қадам: Сізге не қажет
Құралдар:
- Пісіру темірі
- Дәнекер
- Сым тартқыштар
- Бүйірлік кескіштер
- Қысқыштар
Жабдық:
- Arduino үйлесімді тақтасы (мен Sparkfun Redboard тақтасын, Arduino Uno және Leonardo қолдандым)
-
Perf Board:
- 8см х 6см жасыл түсті тақталар
- Aduino Uno қалқанша тақтасы
-
Әр түрлі сенсорлар
- Джойстиктер
- Түймелер (резисторлармен, 10к Ом, олармен бірге жүру үшін)
- Потенциометрлер
- Flex сенсорлары
- Қысым сенсорлары
- Т.б…
-
Сым:
- Жалғыз сым (мен 26 AWG Solid қолдандым)
- Таспалы сым және қысқыштар
- Жоғалатын тақырыптар (кем дегенде 20)
-
Қосымша аппараттық құралдар (оның орнына картон мен ыстық желім/зип байланыстарын қолдануға болады):
- Прототипке арналған тақталар мен секіргіштер
- 3D басып шығарылған корпустар
- Аппараттық бекіткіштер (мен M2.5 бұрандаларын қолдандым)
Бағдарламалық қамтамасыз ету:
- Arduino IDE
-
p5.js кітапханасы
P5.play кітапханасы
- p5.сериялық басқару
- Node.js
2 -қадам: Құрылыс: консольдық хаб, қалқанды орнату
Тақырыптарды Arduino Uno қалқанының тақтасына дәнекерлеңіз.
- Мен қалқан тақырыптарынан бастадым (қуат, аналогтық және сандық)
- Келесі - 2x5 тақырыптық түйреуіштер. Сіз 2x5 үстіңгі деректемелерді немесе тек 5 жолды ажырататын 5 жолды пайдалана аласыз. Мен оларды A3 және A4 форматында тігінен қойдым және олардың арасында 2 бос орын қалдырдым.
3 -қадам: Құрылыс: консольдық хаб, қалқанды сымдау
Әрі қарай, біз сымдарды қалқанға бағыттағымыз келеді. Сымдарды үстіңгі жағынан жүргізу оңайырақ, бірақ егер сіз таза көрінуді қаласаңыз, оларды төменгі жағынан жүргізуге болады.
Бұл сымдарды бағыттау кезінде схемаға (Eagle схемасы жүктеуге болады) назар аударғыңыз келеді. Бұған көмектесу үшін түс нұсқаулығын қарауға болады.
Бұл қалқан дизайнының идеясы әр контроллерден 3 аналогтық кіруге және 5 цифрлық кіруге мүмкіндік береді. Бұл Arduino Uno -дегі барлық аналогтық кірістерді, сондай -ақ таспалы кабельдегі қалған сымдарды толығымен пайдаланады.
4 -қадам: Құрылыс: контроллерлер, бөлшектерді орнату
Контроллерді құрудың бірінші қадамы - қандай сенсорларды қолдануды жоспарлау. Менің мысалдарымда менде джойстик пен бірнеше түймелері бар стандартты контроллер бар. Менде екі сырғымалы потенциометрі бар контроллер бар.
Егер сіз оны қайталағыңыз келсе, орналастыру үшін менің суреттерімді көре аласыз.
Келесі қадам - таспалы кабельді тақтаға дәнекерлеу.
- Таспалы кабельді шешіп, қаңылтырмен бекітіңіз
- Таспалы кабельді тақтаның жоғарғы орталығына дәнекерлеңіз.
Келесі қадам - сымдарды бағыттау. Мен сенсорларға алдымен электр қуатын (5В/қызыл сым) және жерге (қоңыр сымды) қосудан бастадым. Содан кейін мен аналогты кірістерді қостым. Мен көлденең қозғалыс үшін қызғылт сары кабельді (Analog A0 немесе A3), ал тік кабель үшін сары кабельді (Analog A1 немесе A4) қолдануға оңай болды.
Бір нәрсені бір қалыпта ұстау үшін мен барлық контроллерлерге күлгін түске боялған кішкентай түймені қостым. Бұл сериялық портты жабу (бұл туралы кейінірек айтамын), сондай -ақ мәзірлер немесе опциялар сияқты пайдалы.
Егер сіз бұны көргіңіз келсе, мен джойстик контроллерінің жылдам схемасын жүктедім. Біздің диаграммадан сіз контроллердің әр қосылу мүмкіндігін көре аласыз (3 аналогтық кіріс және 5 сандық).
5 -қадам: Қосымша: қоршаулар
Бұл қадам міндетті емес, бірақ егер сізде 3D принтерге қол жетімді болса, сіздің жобаңыздың нәтижесі сәл жақсартылған және аяқталған болып көрінеді. Менің прототиптерімде көріп отырғаныңыздай, мен тақтайшаның төменгі жағындағы дәнекерлеу түйіндерінің саусақтарыңызды шырмауын болдырмау үшін қарапайым картонды қолдандым.
Сіз бұл қадамға бекітілген менің 3D модельдерімді таба аласыз. Мен Arduino Uno/Leonardo үшін де, Sparkfun RedBoard үшін де хаб үшін қоршаулар жасадым (бұл тақта сәл кеңірек және шағын USB қолданады).
Контроллерлер үшін оларды M2.5 бұрандалармен бекітуге болады. Мен жаңғақты ПХД жағында ұстап тұрдым және жуғыш пен түбіндегі бұранданы қолданамын.
Мен сондай -ақ мен қолданған потенциометрлерге арналған сырғытпалардың 3D моделін енгіздім.
Сіз барлық 3D файлдарды GitHub -тан таба аласыз.
6 -қадам: Бағдарламалау: Arduino
Тексеру үшін қарапайым эскиз орнатудан бастайық. Мен Нью -Йоркте ITP жасаған оқулықты осы жерден табуды ұсынамын. Бұл оқулықты орындау үшін сізге p5.serialcontroll және node.js орнатылған болуы керек. Бұл оқулықта сізге p5.js JavaScript кітапханасы қолдана алатын сериялық деректерді жіберу үшін Arduino орнатумен таныстырылады. Мұны істеу үшін сіз алдыңғы қадамдарда жасаған хаб пен контроллерді пайдалана аласыз немесе оқулықта көрсетілген схемаларды қайталай аласыз. Бұл оқулық Arduino Uno -дағы бірінші контроллердің қызғылт сары сымымен салыстырылған A0 аналогтық кіріс түйреуішін пайдаланады.
Сіз оқығыңыз келетін келесі оқулықты мына жерден табуға болады. Бұл оқулық сізге бірнеше кірістерді орнатуға және оларды p5.js -те қолдануға көмектеседі. Оқу құралында А0 және А1 аналогты кірістер қолданылады. Бұл біздің жүйенің 1 контроллеріндегі сарғыш және сары сымдарға сәйкес келеді.
Жоғарыдағы оқулықтардан өткен соң, біз Arduino бағдарламалай аламыз. Біз қолданғымыз келетін код төменде:
// контроллер 1const int dig2 = 2; // көк const int dig3 = 3; // күлгін const int dig4 = 4; // сұр const int dig5 = 5; // ақ const int dig6 = 6; // қара // контроллер 2 const int dig7 = 7; // көк const int dig8 = 8; // күлгін const int dig9 = 9; // сұр const int dig10 = 10; // ақ const int dig11 = 11; //қара
жарамсыз орнату () {
Serial.begin (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 контроллері 1 int digital2 = digitalRead (dig2); int digital3 = digitalRead (dig3); int digital4 = digitalRead (dig4);
int digital5 = digitalRead (dig5);
int digital6 = digitalRead (dig6); // DIGITAL контроллері 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 («,»); Serial.print (аналог1); // [1] Serial.print («,»); Serial.print (аналогтық2); // [2] Serial.print («,»); // Start Controller 2 деректер Serial.print (analog3); // [3] Serial.print («,»); Serial.print (аналогтық4); // [4] Serial.print («,»); Serial.print (аналогтық5); // [5] Serial.print («,»); Serial.print (digital2); // [6] Serial.print («,»); Serial.print (digital3); // [7] Serial.print («,»); Serial.print (digital4); // [8] Serial.print («,»); Serial.print (digital5); // [9] Serial.print («,»); Serial.print (digital6); // [10] Serial.print («,»); // Бастау контроллері 2 деректер Serial.print (digital7); // [11] Serial.print («,»); Serial.print (digital8); // [12] Serial.print («,»); Serial.print (digital9); // [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.ойнату
Алдыңғы қадамда біз HTML файлын p5.js және p5.play кітапханаларына қоңырау шалу үшін орнаттық. Біз оны sketch.js файлын пайдалану үшін орнаттық, онда біз бағдарламалаудың көп бөлігін жасаймыз. Төменде біздің қаңқамыздың коды берілген. Сіз оны осы жерден де таба аласыз.
// Serial Variablesvar сериялық; // сериялық порт кітапханасының данасын ұстау үшін айнымалы var portName = 'COM4'; // сериялық порт атауын осында толтырыңыз // Жаһандық ойын айнымалылары ---------------
// Орнату функциясы ----------------------
функцияны орнату () {createCanvas (640, 480); serial = new p5. SerialPort (); // serial.on сериялы кітапханасының жаңа данасын жасаңыз ('тізім', printList); // serial.on («қосылған», serverConnected) сериялық порт тізімінің оқиғасы үшін кері шақыру функциясын орнату; // serial.on ('ашық', portOpen) серверіне қосылу үшін кері байланыс; // serial.on портын ашуға кері байланыс ('data', serialEvent); // жаңа деректер serial.on келген кезде кері шақыру ('қате', serialError); // serial.on қателерін қайтару ('жабу', portClose); // serial.list () портының жабылуы үшін кері шақыру; // serial.open (portName) сериялық порттарын тізімдеу; // сериялық портты ашу} // Draw Function ----------------------- draw draw () {background (0); // қара фон} // Сериялық деректерді осында интерпретациялаңыз ---------- функциясы 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'); // байт жіберіп, сериялық деректерді сұраңыз}} // порттардың тізімін алыңыз: printList функциясы (portList) {// portList - (var i = 0; i <portList.length; i ++) үшін сериялық порт атауының жиыны {// Консоль тізімін көрсетіңіз: басып шығару (i + «» + portList ); }} function serverConnected () {print ('серверге қосылған.'); } function portOpen () {print ('сериялық порт ашылды.')} функция serialError (қате) {print ('Сериялық портта бірдеңе дұрыс болмады' + қате); } function portClose () {print ('Сериялық порт жабық.'); } функциясы CloseCode () {serial.close (portName); қайтару нөлі; } window.onbeforeunload = CloseCode;
Скелетті сақтағаннан кейін. Сіз бұл мәндерді 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.сериялық бақылауды ашыңыз
- P5 эскиз портын қолданыстағы портқа өзгертіңіз (егер сіз онтогенезді қолдансаңыз, бұл 3 -жолда)
- P5 эскизіне сілтеме жасайтын HTML файлын ашыңыз
Егер сізде суреттер немесе жүктелген қаріптер сияқты сыртқы медиа болса, оны серверде іске қосқыңыз келеді. Қаласаңыз, қарапайым жергілікті питон серверін іске қосуға болады.
10 -қадам: Әрі қарай жүріңіз
Әрі қарай жүру үшін және бұл үшін басқа ойындар жасау үшін, p5.play түріндегі әр түрлі мысалдарды осы жерден табуға болады. Төменде мен жасаған күрделі ойынның мысалы келтірілген. Бұл 1 -ден 1 -ге дейінгі танктер ойыны. Сіз бұл үшін барлық ресурстарды GitHub -тан таба аласыз.
Ұсынылған:
Lune - MIDI контроллері Arduino көмегімен (диджей немесе музыкант үшін): 5 қадам (суреттермен)
Lune - MIDI контроллері Arduino көмегімен (диджей немесе музыкант үшін): Бұл менің бірінші arduino (микроконтроллер) жобасының атауы Lune. Мен arduino -ны пайдалы және үлкен жобамен үйренгім келді, сондықтан мен араласуға қажетті барлық функциялары бар midi DJ контроллерін жасауды шештім
Өнімді 360 ° суретке түсіру үшін Arduino контроллері: 5 қадам (суреттермен)
Өнімді 360 ° автоматтандырылған суретке түсіруге арналған Arduino контроллері: қадамдық қозғалтқышты және камера жапқышын басқаратын arduino негізіндегі контроллер құрайық. Қозғалыстағы айналмалы табақпен бірге бұл 360 ° өнімді автоматтандырылған суретке түсіруге немесе фотограмметрияға арналған қуатты және арзан жүйе. Автоматты
Arduino негізіндегі DIY ойын контроллері - Arduino PS2 ойын контроллері - DIY Arduino Gamepad көмегімен Tekken ойнау: 7 қадам
Arduino негізіндегі DIY ойын контроллері | Arduino PS2 ойын контроллері | DIY Arduino Gamepad көмегімен Tekken ойнау: Сәлеметсіздер ме, балалар, ойындарды ойнау әрқашан қызықты, бірақ өзіңіздің жеке DIY контроллеріңізбен ойнау қызықты, сондықтан біз осы нұсқаулықта arduino pro micro көмегімен ойын контроллерін жасаймыз
PS2 контроллері бар Arduino роботы (PlayStation 2 джойстик): 10 қадам (суреттермен)
PS2 контроллері бар Arduino роботы (PlayStation 2 джойстик): Бұл оқулықта мен робот цистернасын басқару үшін сымсыз Playstation 2 (PS2) джойстикін қалай пайдалану керектігін көрсетемін. Бұл жобаның негізінде Arduino Uno тақтасы пайдаланылды. Ол сымсыз контроллерден командаларды қабылдайды және қозғалтқыштардың жылдамдығын орнатады
DIY Arduino басқарылатын Multiwii ұшу контроллері: 7 қадам (суреттермен)
DIY Arduino басқарылатын Multiwii ұшу контроллері: Бұл жоба-Arduino мен Multiwii негізінде әмбебап мультипоптерлік ұшқышсыз логикалық тақтаны құру