Mundarija:
- 1 -qadam: uskunani sozlash
- 2 -qadam: Sensorlarni toping
- 3 -qadam: Parametrlarni o'rnatish uchun test
- 4 -qadam: Kodni ishga tushirish
- 5 -qadam: Loopning yuqori qismi: jismoniy zarba sezgichlari
- 6 -qadam: Yo'l bo'ylab borish
- 7 -qadam: tasvirni qayta ishlash
- 8 -qadam: Tayyor mahsulot
Video: Robotexnik: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Bir oz tasavvur qiling -a, siz Marsga tushgan kosmonavtlardan birisiz. Sizda millionlab ishlar, olish kerak bo'lgan namunalar, tajribalar, yig'iladigan ma'lumotlar bor, lekin ularni tekshirish uchun siz yashaydigan va ishlaydigan modullar atrofida kuniga bir yoki ikki marta yugurishingiz kerak. Kimdir narsaning yaxshi holatda bo'lishini, minglab bo'laklar va qismlarning ishlayotganini va joyida bo'lishini ta'minlashi kerak. Ammo sizni bu vazifalardan ozod qiladigan avtomatlashtirilgan yordamchi bo'lsa -chi? Hamma narsa joyida, ishchi va xavfsiz ekanligiga ishonch hosil qilish uchun modullar ichida aylanib yura oladigan kichik robot bo'lsa -chi?
Robotexnik qutqarish uchun.
Asosan, bu kod Robotexnikni boshqaradi, chunki u er yuzidagi ochiq rangli yo'ldan o'tadi. U yo'lda yoki burilishda kesishgan joyni topmaguncha shu yo'ldan yuradi, bu esa tasvirni qayta ishlash uchun suratga olinishini va Robotexnikning qaerga borishi to'g'risida qaror qabul qilishiga imkon beradi. Yorug'lik va zarba sensori Robotexnikni shikastlanishdan himoya qilish uchun ishlaydi va datchiklar qachon diagnostika suratga olinishini boshqaradi. Robotexnik birgalikda Mar modullarini yaqinlashtirishga mo'ljallangan bo'lib, kosmonavtlarning vaqtini bo'shatib, tekshiruvning asosiy vazifasini bajaradi.
Yana ogohlantirish sifatida, bu davom etayotgan ish. Kod, mavjud bo'lganidek, ishlaydi, lekin u hıçkırıklara ega, ayniqsa, bir nechta bir -biriga o'xshash dasturlar mavjud. Bundan tashqari, ushbu loyiha haqiqiy Mars missiyasida ishlashi uchun aynan shu maqsadda robot ishlab chiqarilishi kerak edi, shuning uchun menimcha, bu "kontseptsiya isboti" qurilishi.
Buni ishga tushirish uchun sizga bir nechta narsa kerak bo'ladi. Sizga qimmatbaho dastur, ushbu dastur uchun qo'llab -quvvatlash paketlari va kodlash bo'yicha ozgina ma'lumot kerak bo'ladi. Men talaba bo'lganim uchun va birinchi qavat kodi berilgan (malina pi uchun), men sozlash haqida aniq gapirmayman. Siz asosiy kod uchun barcha havolalarni quyida topishingiz mumkin. Keling, materiallar ro'yxatiga o'tamiz.
Uskuna
- Raspberry Pi (biz 3 -versiyadan foydalanganmiz)
- iRobot ®
- Raspberry Pi-ni Robotexnikga biriktirib qo'yadigan ushlab turuvchi qurilma
- Raspberry Pi kamerasi (qanday avtofokus va tasvir aniqligi yaxshi bo'lsa, qanday bo'lishidan qat'i nazar)
- Robotexnik ustidan kamerani oldinga qaratib turadigan stend yoki g'ilof
- polga mahkam yopishtirilgan oq (yoki juda och rangli) tasma sifatida ishlatiladigan material. U oldingi ikkita jarlik sensori orasidagi bo'shliqdan biroz kengroq bo'lishi kerak.
- Juda katta matnli 4 ta belgi (Rasm, O'ng, Orqa va Chap so'zlari yozilgan)
- Rangli qog'oz varaqlari (kamida uchta, yaxshisi qizil, yashil va ko'k)
Dasturiy ta'minot
- Matlab (2018a va 2017b ishlatilgan va unchalik farq qilmaganga o'xshaydi)
- Matlab uchun Raspberry Pi qo'llab -quvvatlash to'plami
- Matlab -ga ulanish uchun Raspberry Pi kodi (quyida keltirilgan manba kodiga havola)
- Matlab uchun tasvirni qayta ishlash asboblar qutisi (siz bu loyihani asboblar qutisiz qilolmaysiz)
- Ixtiyoriy: telefoningizga Matlab Mobile o'rnatilgan, men buni keyinroq tushuntiraman
1 -qadam: uskunani sozlash
ef.engr.utk.edu/ef230-2018-08/projects/roo…
Bu iRobot® Matlab bilan asosiy darslik bilan bog'lanishini ta'minlash uchun asosiy kodning havolasi. Yuqorida aytganimdek, men bu qismni qamrab olmayman, chunki darslik juda yaxshi tuzilgan. Shuni aytib o'tmoqchimanki, havoladagi amallarni bajarganingizdan so'ng, kiritilgan ma'lumotlarni ko'rib chiqish uchun Matlabning "doc" buyrug'idan foydalanishingiz mumkin. Xususan:
hujjat xonasi
Va yana bir muhim nuqta.
Fayllarni yuqoridagi havoladan yuklaganingizda, ularni yuqoridagi tavsiflangan papkaga qo'ying, chunki Matlab foydalanuvchi yaratgan fayllarni joriy ishchi papkada bo'lishini talab qiladi.
Yo'q, biz kodga o'tamiz.
2 -qadam: Sensorlarni toping
Bir soniya oling va iRobot® tekshiruvini bering. Bularning qaerdaligini bilish yaxshi, shuning uchun siz Robotexnik qabul qilayotgan ma'lumot haqida tasavvurga egasiz va siz nima uchun siz o'rnatgan yo'lni emas, balki aylana aylanayotganini aniqlay olasiz. yoki bo'lmasligi mumkin). Shubhasiz, siz old tomondan katta jismoniy zarba sensorini ko'rasiz. Jarlik sezgichlarini ko'rish biroz qiyinroq, uni ag'darib, old chetiga yaqin to'rtta shaffof plastik oynani qidirish kerak. Yorug'lik datchiklari yanada yashiringan, ammo hozircha yaltiroq qora diapazonda "iRobot®" ning old tomonida yugurish haqida gapirish kifoya.
G'ildirak tushish sensori mavjud, lekin bu loyihada ishlatilmayapti, shuning uchun biz sensorlarni sinab ko'rishga o'tamiz.
3 -qadam: Parametrlarni o'rnatish uchun test
Robo-texnikni o'z ishiga yuborishdan oldin, biz uning o'ziga xos xususiyatlari va sensorlar diapazonini aniqlashimiz kerak. Har bir iRobot® robotning ishlash muddatidan biroz farq qilar ekan, biz sensorlar u ishlaydigan maydonlarni qanday o'qishini aniqlab olishimiz kerak. Buning eng oson yo'li - ochiq rangli yo'lni o'rnatish (Men oq printer qog'ozidan foydalanardim, lekin hamma narsa ochiq rangli bo'ladi) Robotexnik ishlaydigan sirtda.
Matlab -ni ishga tushiring va yangi skriptni oching. Skriptni o'sha papkada saqlang, men ERLIERni ta'rifladim va uni xohlagan narsangizga nomlang (lekin uni qisqa saqlashga harakat qiling, chunki bu faylning nomi funktsiya nomi bo'ladi). Robotni yoqing va buyruqlar oynasiga buyruqlarni yozib, qo'llanmadan Roomba o'zgaruvchisini sozlashdan foydalaning.
Raspberry Pi iRobot® -ga ulanganligiga ishonch hosil qiling va sizning kompyuteringiz bir xil Internetga ulangan. Matlab nima uchun ulanmasligini aniqlash uchun sochingizni oldirish uchun kamroq vaqt sarflaysiz
r = roomba (siz o'rnatgan raqam)
Bunday holda "r" o'zgaruvchisi shart emas, uni xohlaganingizcha chaqirishingiz mumkin, lekin bu bitta harfli o'zgaruvchidan foydalanishni osonlashtiradi.
Yo'l o'rnatilgach va xona muvaffaqiyatli ulangan bo'lsa, bo'lajak Robotexnikni joylashtiring, u erda bir yoki ikkita jarlik sensori yo'lning tepasida. Shubhasiz, bu qolgan ikki yoki uchtasi siz tanlagan yuzaning tepasida.
Endi test sensorlarini buyruq bilan ishga tushiring:
r.testSensorlar
Shuni yodda tutingki, "r." Siz ilgari aniqlagan o'zgaruvchi, shuning uchun "r" bo'lmasa, "r" ni o'zgartiring. siz qaror qilgan narsaga. Bu test sensori ekranini bir tonna ma'lumotga ega qiladi.
Loyihaning asosiy maqsadi yorug'lik bamperlari, bamperlar va jarlik qismlari. Robotexnikni harakatlantiring, datchiklar har xil sirtlarda qanday o'zgarishini yoki yorug'lik moslamasining tampon qiymatlari o'zgarishi uchun ob'ekt qanchalik yaqin bo'lishi kerakligini kuzatib turing. Bu raqamlarni yodda saqlang (yoki yozib qo'ying) Parametrlarni bir soniyada o'rnatish uchun ularga kerak.
4 -qadam: Kodni ishga tushirish
Birinchidan, siz funktsiyani yaratasiz. Men uni "yo'l" deb atadim, lekin yana aytaman, bu ism shart emas, lekin men bundan buyon uni "yo'l" deb atayman.
Kodning yuqori qismi ba'zi foydalanuvchi kiritish variantlarini o'rnatadi. U in listdlgda ishlatiladigan ba'zi ro'yxatlarni tuzadi va keyin ro'yxatning dialog oynasini ochadi. Bu foydalanuvchiga qaysi yo'l rangini tanlashni tanlash imkonini beradi, bu keyinchalik o'ynaydi.
list = {'Qizil', 'Moviy', 'Yashil'}
problist = {'Tasodif, Tasvirni saqlash', 'Komponent joyida emas, Tasvirni saqlash', 'Kutilmoqda, Davom et'} pathcolor = listdlg ('PromptString', 'Yo'l rangini tanlang',… 'SelectionMode', 'yagona', 'ListString', list) prob = 0; driv = ;
"Prob" va "driv" o'zgaruvchilari bu erda e'lon qilinishi kerak, chunki ular funktsiyaning asosiy tsikli ichida ishlatiladi, lekin yana, agar siz bu o'zgaruvchilarning nomini o'zgartirmoqchi bo'lsangiz yoki ro'yxat tanlovini o'zgartirmoqchi bo'lsangiz, yaxshi. siz kodning qolgan qismida izchilsiz.
5 -qadam: Loopning yuqori qismi: jismoniy zarba sezgichlari
Vaqt tsiklining yuqori qismida jismoniy zarba sensori mantig'i mavjud. Asosan, Robotexnik biror narsaga duch kelganda, u to'xtaydi (yoki oldingi zarba sensori uchun u 0,1 metrga orqaga suriladi), keyin o'zini suratga olish uchun joylashtiradi. Keling, avval tezlikni va pozitsiyani boshqarish qismini qamrab olaylik.
Agar siz avvalgi bosqichlarda Robo-Texnikdagi barcha datchiklarni sinovdan o'tkazgan bo'lsangiz, bilasizki, datchiklar mantiqiy qiymatga ega (0 yoki 1), nol esa sensorning normal, bosilmagan holatini bildiradi. Buni kod uchun yodda tuting.
haqiqiy %asosiy, pastadir %esa bamper ma'lumotlarini oladi S = r.getBampers, agar S. chap ~ = 0 r.stop elseif S.right ~ = 0 r.stop elseif S.front ~ = 0 r.stop oxiri
Bu "agar biror narsaga tegsa, to'xtating" asosiy qismi. Agar sensorlar to'qnashuvni aniqlasa, u kodning keyingi qismiga o'tadi, u suratga olish uchun Robotexnik pozitsiyasini o'zgartiradi.
if S.left ~ = 0 %agar pastadir bamper ma'lumotlarini olsa va kamerani rasmga moslashtirsa r.turnAngle (5) pauza (0.5) img = r.getImage %suratga oladi va tasvirni ko'rsatadi (img) %dialog oynasi prob = listdlg PromptString ',' Kutilmagan to'siq topildi, iltimos aniqlang '…,' SelectionMode ',' single ',' ListString ', problist) elseif S.right ~ = 0 r.turnAngle (-5) pauza (0.5) img = r. getImage image (img) prob = listdlg ('PromptString', 'Kutilmagan to'siq topildi, aniqlang'…, 'SelectionMode', 'single', 'ListString', problist) elseif S.front ~ = 0 r.moveDistance (- 0.1) pauza (0.5) img = r.getImage image (img) prob = listdlg ('PromptString', 'Kutilmagan to'siq topildi, iltimos aniqlang'…, 'SelectionMode', 'single', 'ListString', problist) oxiri
Asosan, rasm olinganidan so'ng, uchta variant bilan boshqa dialog oynasi paydo bo'ladi. Birinchi ikkita variant fotosuratni belgilangan papkaga saqlaydi, men uni keyinroq yopaman, uchinchi variant esa dialog oynasini yopadi va tsikl davomida davom etadi. Agar siz variantlarni eslay olmasangiz, avvalgi bosqichga qarang.
Endi men zarba sensori qismi va fotosuratni saqlash qismi orasiga kod qismini kiritdim. Bu lightBumper qiymatlarini oladi va haydash tezligini sekundiga 0,025 metrga o'rnatadi (bu juda sekin), bu aslida kerak emas, lekin Robotexnikning narsalarga urilishini va oxir-oqibat jismoniy zarba sezgichlarini eskirishini kamaytiradi.
L = r.getLightBampers, agar L. chap> 100 || L.leftFront> 100 || L.rightFront> 100 || L.right> 100 driv = 0.025 r.setDriveVelocity (0.025) else driv = 0.1 end
Bu siz kuzatgan (va umid qilamanki, yozib qo'yilgan) qadriyatlar o'ynaydigan qism bo'ladi
"L. (sensori tomoni va yo'nalishi)> 100" men ko'rgan qiymatlarga asoslangan edi, agar sizning kuzatuvlaringiz boshqacha bo'lsa, bu raqamlarni o'zgartiring. Fikr shundan iboratki, agar Robotexnik oldidan bir necha santimetrlik narsani sezsa, u sekinlashadi, bundan ham keraksiz.
Keyingi qism - fotosuratlar keyinchalik saqlanadigan joy.
%agar prob muloqot oynasida birinchi yoki ikkinchi variant tanlangan bo'lsa, prob == 1 %bo'lsa, tasvir saqlanadi, agar loop rasm uchun fayl ma'lumotlarini tuzsa, t = soat tamg'asi bilan yozadi; basename = sprintf ('\ img_%d_%d_%d_%d_%d.png', t (1), t (2), t (3), t (4), t (5)); papka = 'E: / UTK / Classes / kuz 18 / ef230 / irobot / images'; fullFileName = to'liq fayl (papka, asosiy nom); imwrite (img, fullFileName) yopish 1 -rasm pauza (2) elseif prob == 2 t = soat; basename = sprintf ('\ img_%d_%d_%d_%d_%d.png', t (1), t (2), t (3), t (4), t (5)); papka = 'E: / UTK / Classes / kuz 18 / ef230 / irobot / images'; fullFileName = to'liq fayl (papka, asosiy nom); imwrite (img, fullFileName) yopish 1 -rasm pauza (2) oxiri
Rasmlar saqlanadigan barcha fayl nomlari va joylar ixtiyoriy. Men kirish bosqichida men yaratgan roomba papkasida joylashgan papkani tanladim, lekin u siz xohlagan joyda bo'lishi mumkin. Shuningdek, fotosuratlar vaqt tamg'asi bilan saqlanadi, lekin bu ayniqsa zarur emas (garchi bu Mars missiyasi uchun faraz qilingan bo'lsa ham).
Jismoniy zarba datchiklari bilan biz jarlik sensori va keyingi yo'lga o'tishimiz mumkin.
6 -qadam: Yo'l bo'ylab borish
Jarlik sensorlar kodi ikkita old va yon sensorlar qiymatlarini solishtirish uchun o'rnatiladi. Siz bu qiymatlarni (ehtimol) kuzatilgan qadriyatlaringiz asosida o'zgartirishingiz kerak bo'ladi. Ehtimol, siz bir necha sinovdan so'ng bu qiymatlarni tahrir qilishingiz va ularni atrofdagi yorug'lik, kunduz vaqti (sinov maydoni qanchalik yaxshi yoritilganligiga qarab) yoki sensor oynalar ifloslanganligiga qarab o'zgartirishingiz kerak bo'ladi.
Biz jarlik sensori kodini olishdan oldin, Matlabdan keraksiz ma'lumotlarni tozalash uchun men kiritgan qisqa kod segmenti bor. Bu qism kerak emas, lekin men uni dasturni ishga tushirish uchun zarur bo'lgan xotirani qisqartirish uchun ishlatganman.
clear img clear t clear basename clear fullFileName clear folder
Keyingi kod segmenti - bu loyihaning go'shti. Bu Robotexnikga erga qo'yilgan ochiq rangli yo'ldan borishga imkon beradi. Qisqacha aytganda, u o'zini boshqarishga harakat qiladi, shuning uchun oldingi ikkita jarlik sensori sizning kuzatilgan qiymatlaringizga asoslanib, ostonadan yuqori bo'ladi va dasturga tasvirni qayta ishlash bosqichlarini birozdan keyin boshlashga imkon beradi.
C = r.getCliffSensors %agar pastadir rangli chiziqli bo'lsa (oq), agar C.leftFront> 2000 &&rrightFront> 2000 %to'g'ri yo'l ko'rsatgichi r.setDriveVelocity (driv) elseif C.leftFront robot juda uzoqqa ketsa 2000 %o'ngga buriladi. chap r.turnAngle (-2.5) agar C.leftFront> 2000 && C.rightFront <2000%chapga burilsa, agar robot juda o'ngga o'tsa r.turnAngle (2.5) boshqa C.leftFront <2000 &&rrightFront 100 || L.leftFront> 100 || L.rightFront> 100 || L.right> 100 img = r.getImage end %, agar C.left> 2800 &&C o'ngda <2800 r.turnAngle (2.5) bo'lsa, yo'lda burilish bor yoki yo'qligini tekshiradi. Chapda 2800 r.turnAngle (- 2.5) yo'l tasvirini tanib olish displeyi uchun "joy %" ushlagichining oxiri
Shuni yodda tutingki, men tanlagan o'zgaruvchilar nomlari ixtiyoriy, lekin menimcha, iloji bo'lsa, bitta harfli o'zgaruvchilardan foydalanish hayotni osonlashtiradi
Kodning o'rta qismini tushuntirish uchun, ikkita old sensor yo'l chetidan chiqib ketganda (chorrahaga kelganda yoki yo'lning oxiriga yetganda), uning oldida biror narsa bor -yo'qligini ko'radi.. Buning uchun yo'lning oxirida yoki biron bir chorrahada ob'ektni erga qo'yish kerak bo'ladi.
Suratga olinganidan so'ng, nima qilish kerakligini aniqlash uchun tasvirni tanib olishdan foydalaniladi. Kodning ushbu bo'limida joy egasi ham bor:
yo'l tasvirini aniqlash uchun %joy egasi ('Rasmni olish')
Men buni hozir ishlatdim, chunki men keyingi bosqichda sodir bo'lgan matn va ranglarni qayta ishlash haqida alohida gaplashmoqchi edim.
7 -qadam: tasvirni qayta ishlash
Tasvirni qayta ishlash ikki qismdan iborat. Birinchisi - rangni aniqlash, bu rasmdagi rang intensivligini hisoblab, matnni tanib olishni davom ettirish yoki qilmaslikni hal qiladi. Rangni hisoblash birinchi muloqot oynasida qanday tanlov qilinganiga asoslanadi (men qizil, ko'k, yashil ranglardan foydalanardim, lekin siz xohlagan rangni tanlashingiz mumkin, agar rang intensivligining o'rtacha qiymatlari tan olinsa. Raspberry Pi kamerasi).
img = r.getImage img = imcrop (img, [0 30 512 354]) imgb = imcrop (img, [0 30 512 354]) imgt = imcrop (img, [0 30 512 354]) qizil = o'rtacha (o'rtacha (imgb (:,,:, 1))); g = o'rtacha (o'rtacha (imgb (:,,:, 2)))); b = o'rtacha (o'rtacha (imgb (:,,, 3))));
Bu intensivlikni tekshirish. Bu keyingi segmentda nima qilishni xohlashini aniqlash uchun ishlatiladi.
agar qizil> g && qizil> b if patcolor == 1 imgc = imcrop (img, [0 30 512 354]) R = ocr (img) agar R. So'zlar {1} == RASM || R. So'zlar {2} == RASM || R. so'zlari {3} == RASM t = soat; basename = sprintf ('\ img_%d_%d_%d_%d_%d.png', t (1), t (2), t (3), t (4), t (5)); papka = 'E: / UTK / Classes / kuz 18 / ef230 / irobot / images'; fullFileName = to'liq fayl (papka, asosiy nom); imwrite (img, fullFileName) pauza (2) boshqa R. R. So'zlar {1} == O'ng || R. so'zlari {2} == O'ng || R. Words {3} == RIGHT r.turnAngle (-75) else R. R. Words {1} == LEFT || R. so'zlari {2} == chapda || R. Words {3} == LEFT r.turnAngle (75) else if R. Words {1} == BACK || R. So'zlar {2} == BACK || R. Words {3} == BACK r.turnAngle (110) oxiri boshqa r.turnAngle (110) oxiri
Bu segment birinchi dialog oynasida tanlangan rang kamera ko'rayotgan rangga mos keladimi -yo'qligini hal qiladi. Agar shunday bo'lsa, u matnni tanib olish funktsiyasini bajaradi. Ko'rinib turibdiki, qaysi so'z (Rasm, Orqaga, O'ngga yoki Chapga) paydo bo'ladi, keyin aylanadi (o'ngga va chapga), aylanadi (orqaga) yoki rasm oladi va uni avvalgidek saqlaydi.
Men har xil ranglar uchun kodning faqat bitta qismini taqdim qildim
Kodni ko'k va yashil rangni tan olishiga ruxsat berish uchun kodni nusxa ko'chiring va segmentning yuqori qismidagi mantiqiy tekshirishni o'zgartiring va "pathcolor == (raqam)" ni yuqori dialog oynasidagi ranglar tanloviga mos keladigan qilib o'rnating. kod ko'rsatilgandek, ko'k 2, yashil 3 bo'ladi.
8 -qadam: Tayyor mahsulot
Endi Robotexnik Mars missiyasi modullarini yaqinlashtirishi va biror narsa joyida bo'lmaganida, kosmonavtlarga xabar berishi kerak.
Yodda tutingki, jarlik sensori va lightBumper -ning barcha qiymatlari siz kuzatgan qiymatlarga o'zgartirilishi kerak. Bundan tashqari, men o'z tajribamdan ko'ra, bu loyihani quyuq rangli zaminda sinab ko'rishni afzal ko'rdim va agar bu qavat aks ettirilmasa, undan ham yaxshiroq. Bu yo'l va pol o'rtasidagi kontrastni oshiradi, shuning uchun Robotexnik unga to'g'ri amal qiladi.
Umid qilamanki, sizga Mars missiyasi uchun kichik yordamchi o'rnatish va qurilishdan zavqlanish yoqdi.
Tavsiya:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Arduino UNO bilan qadam motor: 3 qadam
Arduino UNO bilan qadam dvigateli: Bosqichli motorlar - bu alohida bosqichlarda harakatlanadigan shahar motorlari. Ularda "fazalar" deb nomlangan guruhlarga bo'lingan bir nechta rulon bor. Har bir fazani ketma -ket quvvatlantirganda, dvigatel birma -bir aylanadi, zinapoyali dvigatellar juda foydali
Kompyuteringizni qadam dvigateli bilan boshqaring!: 9 qadam (rasmlar bilan)
Kompyuteringizni qadam dvigateli bilan boshqaring!: Oldingi ko'rsatmalarimdan birida men sizga step motorini aylanuvchi kodlovchi sifatida qanday ishlatishni ko'rsatdim. Bu yo'riqnomada keling, undan kompyuterni boshqarish uchun qanday foydalanish kerakligini bilib olaylik. Shunday qilib, ko'p vaqt sarflamasdan, boshlaylik