Cuprins:
- Provizii
- Pasul 1: Configurarea robotului
- Pasul 2: Configurarea joystick-ului
- Pasul 3: Verificarea valorilor joystick-ului
- Pasul 4: Reglarea variabilelor X și Y
- Pasul 5: Conversia X și Y în valori pentru motoarele din stânga și din dreapta
- Pasul 6: Trimiterea valorilor ca mesaje radio
- Pasul 7: Primirea mesajelor pe robotul dvs
- Pasul 8: Utilizarea mesajelor primite pentru a controla motoarele robotului
- Pasul 9: Utilizarea butoanelor - Primirea de mesaje suplimentare
- Pasul 10: Trimiterea de mesaje suplimentare utilizând butoanele controlerului
- Pasul 11: Pașii următori
Video: Programarea unui micro: Bit Robot & Joystick: Bit Controller cu MicroPython: 11 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Pentru Robocamp 2019, tabăra noastră de robotică de vară, tinerii în vârstă de 10-13 ani lipesc, programează și construiesc un „robot antweight” bazat pe micro: bit BBC, precum și programează un micro: bit pentru a fi folosit ca telecomandă.
Dacă vă aflați în prezent la Robocamp, treceți la Pasul 3, deoarece am făcut primii doi pași ca grup
Acesta este un ghid pas cu pas pentru a obține un robot micro: bit care comunică cu un joystick: bit controller.
Nu este cel mai rapid traseu pentru ca totul să funcționeze, dar încearcă lucrurile în bucăți mici, astfel încât să puteți testa codul pe măsură ce mergeți, să vă puneți propria ștampilă și să înțelegeți de ce facem lucrurile pe care le facem !
Pentru această activitate, folosim propriul nostru robot personalizat, dar acesta va funcționa cu orice robot care folosește un driver de motor similar, cum ar fi un L9110s.
Fișierele de proiectare pentru robotul nostru pot fi găsite aici:
Acest ghid este scris pentru începători, dar dacă nu ați folosit niciodată un micro: bit cu MicroPython, vă recomandăm să încercați mai întâi un program mai simplu, cum ar fi insigna noastră de nume Instructabil: https://www.instructables.com/id/Felt -Microbit-Nam …
Provizii
2x BBC micro: bit
Robot care funcționează cu un micro BBC: bit (a se vedea explicația de mai sus)
joystick: controler de biți (am primit-o pe a noastră de la Cool Components)
Pasul 1: Configurarea robotului
Aveți câteva opțiuni pentru scrierea codului MicroPython pentru micro: bit:
- Mu, pe care îl puteți descărca și instala de aici:
- Editorul online, pe care îl puteți găsi aici:
Aceste instrucțiuni presupun că utilizați Mu
Deschideți Mu și conectați micro: bitul la computer. Mu ar trebui să recunoască faptul că utilizați un micro: bit și selectați „Mode” micro: bit, dar dacă nu, schimbați-l manual.
Obțineți o copie a codului de testare a motorului robotului de aici:
Dacă nu sunteți obișnuiți cu Github, poate fi neintuitiv! Două modalități ușoare de a obține acest cod sunt:
- Salvați fișierul Raw pe computer, apoi încărcați-l în Mu:
- Copiați și lipiți tot codul dat într-un fișier nou în Mu.
Acum faceți clic pe butonul „Flash” din bara de instrumente a lui Mu, pentru a trimite noul cod la micro: bit.
Acest lucru nu va funcționa decât dacă micro: bitul este conectat
Lumina galbenă din spatele micro: bit va începe să clipească. După ce a terminat, codul dvs. a fost transferat.
CONFIGURAREA DIRECȚIILOR MOTORULUI
Acest program va porni motoarele în direcții diferite atunci când apăsați butonul „A” de pe micro: bit.
Ceea ce doriți să se întâmple este:
- Când este afișat „A”, motorul din stânga este în față
- Când este afișat „B”, lăsați motorul înapoi
- Când este afișat „C”, motorul din dreapta înainte
- Când este afișat „D”, motorul drept înapoi
Probabil că nu va fi cazul, deoarece depinde de modul în care v-ați conectat robotul!
În partea de sus a codului, veți găsi o listă de variabile, care determină care pin de pe micro: bit controlează direcția motorului.
Dacă utilizați unul dintre roboții (fișierele) noastre, schimbați numele variabilelor pentru a face robotul să se deplaseze în direcțiile corecte:
Dacă utilizați un robot propriu, verificați la ce pini este conectat driverul motorului înainte de a edita codul.
TESTAREA DRIVE-ULUI
Acum verificați modul în care rulează robotul dvs. înlocuind codul de test din bucla principală cu un cod propriu.
Spuneți robotului să conducă apelând funcția drive (). Aceasta necesită două argumente - o valoare pentru motorul din stânga și o valoare pentru motoarele din dreapta, între 0 (oprit) și 1023 (viteza maximă).
De exemplu, apelând unitatea (500, 500), le spuneți ambelor motoare să pornească, în direcția înainte, la aproximativ jumătate de viteză.
Încercați câteva opțiuni pentru a obține o idee despre cât de dreaptă conduce și cât de bine se transformă.
Sugestie: testele motorului au fost atât în bucla True cât și în declarația if - motoarele nu s-ar întoarce până nu ați apăsat butonul A de pe micro: bit și verifică pentru totdeauna dacă ați apăsat butonul A.
Sugestie: motoarele nu se vor opri până nu le spuneți! Vor continua să facă întotdeauna ultima lor instrucțiune.
OPȚIONAL: ÎMBUNĂTĂȚIREA CONDUCERII ÎNTR-O LINIE DREPTĂ
Dacă robotul dvs. nu va conduce în linie dreaptă, este posibil ca unul dintre motoarele dvs. să se întoarcă mai repede decât celălalt.
După verificarea faptului că nu există nimic care să împiedice fizic roata să se rotească liber, puteți edita codul în funcția de acționare pentru a reduce viteza motorului mai rapid.
Derulați în sus pentru a găsi definiția funcției de unitate și uitați-vă la cele două instrucțiuni de sus:
unitate def (L, R):
# Mai jos este o ajustare pentru corectarea discrepanței de turație a motorului L = int (L * 1) R = int (R * 1)
Aceste două linii iau în prezent valoarea L și R, le înmulțesc cu 1, apoi asigură-te că sunt încă numere întregi (int).
De exemplu, dacă motorul stâng este mai rapid, schimbați * 1 pe linia sa la * 0,9 și vedeți dacă acest lucru îmbunătățește lucrurile.
Nu îl veți putea face perfect, dar puteți continua să ajustați până când va merge mai drept.
CONFIGURAREA RADIO
Acum configurați radioul, adăugând următoarele linii în partea de sus a codului:
import radio
radio.config (canal = 7, grup = 0, coadă = 1) radio.on ()
Acest lucru va permite robotului dvs. să primească instrucțiuni de la un alt micro: bit, dar în acest moment va primi instrucțiuni de la orice alt micro: bit.
Acest lucru se datorează faptului că canalul 7 și grupul 0 sunt canalele implicite.
Schimbați aceste numere, alegând un canal între 0-82 și un grup între 0-255. Acum micro: bitul dvs. va primi instrucțiuni de la alte persoane cu aceleași informații de configurare.
coadă = 1 înseamnă că micro: bitul va păstra un singur mesaj pe rând - aceasta oferă un timp de răspuns puțin mai rapid decât implicit, care este 3.
Acum trebuie să vă editați codul de buclă principal pentru ca, în loc să executați instrucțiuni când apăsați un buton, să așteptați un mesaj radio primit și să răspundeți corespunzător.
Încercați următorul cod ca test (nu va face nimic până când nu ați configurat joystick-ul la pasul 2):
în timp ce este adevărat:
message = radio.receive () if message == 'forward': drive (500, 500)
Pasul 2: Configurarea joystick-ului
Deconectați micro: bitul robotului și conectați în schimb micro: bitul joystick-ului
Obțineți o copie a codului de configurare a joystick-ului de aici:
Configurați radioul utilizând aceeași configurație (canal și număr de grup) ca și pentru robot - acest lucru le va permite celor doi să comunice între ei.
La sfârșitul programului, porniți bucla principală:
în timp ce este adevărat:
if button_a.was_pressed (): radio.send ('forward')
Acest cod nu folosește încă joystick-ul: bit. Folosește butonul A de pe micro: bit pentru a trimite un mesaj.
Asigurați-vă că atât robotul, cât și controlerul micro: biții au putere, apoi apăsați butonul pentru a vă trimite mesajul.
Dacă mesajul este primit cu succes, iar robotul tău se mișcă … bine făcut! Ați terminat cu instrucțiunile de configurare.
SFATURI DE DEPANARE
Dacă primiți un mesaj de eroare pe controlerul dvs. micro: bit … depanați codul controlerului
Dacă primiți un mesaj de eroare pe robotul dvs. micro: bit … mesajul dvs. radio a fost trimis cu succes! Dar robotul nu îl poate înțelege, deci verificați dacă mesajul pe care l-ați trimis și mesajul pe care i-ați spus robotului să îl asculte se potrivesc.
Dacă nu se întâmplă nimic
- Asigurați-vă că ați introdus codul corect pe fiecare micro: bit - este ușor să blocați din greșeală pe cel greșit!
- Asigurați-vă că numerele canalului și ale grupului se potrivesc pe fiecare micro: bit
Pasul 3: Verificarea valorilor joystick-ului
Următorii pași sunt toți utilizând codul controlerului
Înainte de a putea folosi joystick-ul de pe controler, trebuie să știți ce fel de valori obțineți atunci când apăsați butonul.
Înlocuiți bucla principală cu următorul cod:
în timp ce este adevărat:
joystick = joystick_push () print (joystick) sleep (500)
Introduceți acest cod pe micro: bit, apoi faceți clic pe butonul REPL din bara de instrumente a lui Mu. Aceasta va deschide un terminal în partea de jos a editorului, care vă oferă un link în timp real către micro: bit.
Acest lucru nu va funcționa decât dacă micro: bit este conectat
Cu REPL deschis, apăsați butonul de resetare din spatele micro: bitului.
Ar trebui să vedeți că unele valori aduc „imprimate” pe ecran:
Apăsați butonul joystick-ului și vedeți ce se întâmplă cu numerele.
Notați valorile date când joystick-ul este în poziția centrală - în cazul meu (518, 523).
Faceți clic din nou pe butonul REPL din bara de instrumente a lui Mu pentru a-l închide - nu veți putea să blocați codul nou pe micro: bit cât timp este deschis.
Pasul 4: Reglarea variabilelor X și Y
Doriți să modificați valorile date de funcția joystick, astfel încât:
- în centru este zero
- sus este pozitiv
- jos este negativ.
Aceasta corespunde instrucțiunilor de care are nevoie robotul - un număr pozitiv pentru a conduce înainte și un număr negativ pentru a conduce înapoi.
Uită-te la numerele pe care le-ai obținut în ultimul pas. Primul număr este x, iar al doilea număr este y.
Editați definiția joystick_push () care este deja în program, pentru a scădea valorile dvs. din original:
def joystick_push ():
x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 returnează x, y
Folosește-ți propriile numere, ar putea fi diferite de ale mele
Blițează noul tău cod, deschide REPL, apasă butonul de resetare micro: bit și verifică valorile tale.
Primești (0, 0)?
Pasul 5: Conversia X și Y în valori pentru motoarele din stânga și din dreapta
În acest moment, acest joystick nu va fi foarte util pentru a conduce un robot. Impins înainte, veți obține o valoare precum (0, 500).
Dacă ai da aceste numere robotului, acesta ar porni motorul drept, dar nu și cel stâng, ceea ce nu vrei să se întâmple!
Această diagramă arată ce se întâmplă cu valorile x și y atunci când mutați joystick-ul și ce vrem să facă robotul atunci când mutați joystick-ul.
Trebuie să folosiți câteva matematici pentru a amesteca valorile x și y, pentru a vă oferi ceva mai util.
n
MATEMATICILE
Să începem prin a împinge joystick-ul până la capăt.
Un exemplu al valorilor pe care le-ați putea obține este:
x = 0
y = 500
Pentru a fi util robotului, doriți să obțineți valori ca acestea:
stânga = 500
dreapta = 500
Să încercăm să adăugăm x și y în moduri diferite pentru a vedea ce numere obținem:
x + y = 0 + 500 = 500
x - y = 0 - 500 = -500 y + x = 500 + 0 = 500 y - x = 500 - 0 = 500
Acum să vedem ce se întâmplă dacă împingem joystick-ul până la dreapta.
Un exemplu al valorilor pe care le-ați putea obține este:
x = 500
y = 0
Pentru a face robotul să vireze la dreapta, doriți ca motorul din stânga să conducă înainte și motorul din dreapta să conducă înapoi:
stânga = 500
dreapta = -500
Să încercăm din nou formula noastră:
x + y = 500 + 0 = 500
x - y = 500 - 0 = 500 y + x = 0 + 500 = 500 y - x = 0 - 500 = -500
Comparați cele două seturi de formule pentru a afla care opțiune vă va oferi valoarea stângă corectă și care opțiune vă va oferi valoarea corectă corectă.
Încercați-l cu câteva dintre valorile pe care le obțineți din propriul joystick, pentru a vă asigura că formula pe care o alegeți funcționează tot timpul.
n
LARGIREA FUNCȚIEI JOYSTICK
Extindeți și editați funcția joystick pentru a crea două variabile noi pentru stânga și dreapta și pentru a returna acele valori în loc de x și y:
def joystick_push ():
x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 left = right = return left, right
Blițează noul cod, deschide REPL, apasă butonul de resetare micro: bit și verifică valorile tale.
Obțineți valorile pe care le așteptați?
Dacă aveți nevoie de mai mult ajutor, consultați exemplul nostru de cod aici:
Pasul 6: Trimiterea valorilor ca mesaje radio
Acum aveți câteva valori gata de trimis robotului dvs.
Editați bucla principală, astfel încât să verifice valorile joystick-ului, dar apoi, în loc să imprime valorile, le pregătește să fie trimise ca mesaj radio.
în timp ce este adevărat:
joystick = joystick_push () mesaj = str (joystick [0]) + "" + str (joystick [1])
Acest lucru nu va trimite mesajul încă!
Ce se întâmplă în această nouă linie de cod?
- joystick [0] înseamnă primul bit de informații care iese din funcția joystick (stânga)
- joystick-ul [1] este următorul bit de informații (dreapta)
- str () convertește ambele numere în format șir (text în loc de numere) - acest lucru este necesar pentru a putea trimite informațiile prin radio.
Vei fi obișnuit să vezi + pentru a însemna adunare - poate să adauge numere împreună și să concateneze șiruri, ceea ce înseamnă că va lipi cei doi biți de informații împreună.
Exemplu:
150 + 100 = 250
str (150) + str (100) = 150100
Deci, concatenarea va lipi valorile stânga și dreapta.
Pentru a forța o separare între cei doi biți de informații (astfel încât robotul să știe că sunt doi biți de informații), concatenează un șir suplimentar între ei folosind „”. Semnele de vorbire din jurul spațiului înseamnă că este deja un șir.
În cele din urmă, extindeți codul pentru a trimite acest mesaj nou creat prin radio:
radio.send (mesaj)
somn (10)
Somnul încetinește trimiterea mesajelor, astfel încât bitul micro: receptor să nu fie supraîncărcat cu prea multe informații!
Introduceți acest cod în controlerul micro: bit și depanați orice erori înainte de a trece la pasul următor
Pasul 7: Primirea mesajelor pe robotul dvs
Reveniți la codul robotului dvs. de la început - nu uitați să deconectați controlerul micro: bit, astfel încât să nu blocați codul robotului în mod accidental
Derulați în jos până la bucla principală - eliminați codul de testare și adăugați-l în schimb:
în timp ce este adevărat:
mesaj = radio.receive () print (mesaj) sleep (100)
Aceasta setează o variabilă egală cu mesajul primit și tipărește mesajul pe REPL - pentru a verifica dacă mesajele sunt transmise conform așteptărilor.
Blițează noul cod, conectat la REPL, apoi împinge joystick-ul.
Ar trebui să obțineți așa ceva:
SFATURI DE DEPANARE
Dacă primiți un mesaj de eroare pe controlerul dvs. micro: bit … depanați codul controlerului
Dacă primiți un mesaj de eroare pe robotul dvs. micro: bit … mesajul dvs. radio a fost trimis cu succes! Însă robotul nu îl poate înțelege, deci verificați dacă mesajul pe care l-ați trimis și mesajul pe care i-ați spus robotului să asculte se potrivesc.
Dacă nu se întâmplă nimic
- Asigurați-vă că ați introdus codul corect pe fiecare micro: bit - este ușor să blocați din greșeală pe cel greșit!
- Asigurați-vă că numerele canalului și ale grupului se potrivesc pe fiecare micro: bit
Pasul 8: Utilizarea mesajelor primite pentru a controla motoarele robotului
Acum primiți două numere trimise prin radio sub formă de șir.
Trebuie să împărțiți acest mesaj în două șiruri, apoi să le convertiți din nou în numere și să le transmiteți în funcția de unitate. Se întâmplă o mulțime deodată!
Înainte de a face acest lucru, trebuie să verificați dacă mesajul pe care îl primiți este în formatul corect.
Dacă nu sunt trimise mesaje, veți primi în schimb „Niciunul”. Dacă încercați să împărțiți acest lucru, veți primi un mesaj de eroare.
în timp ce este adevărat:
message = radio.receive () if message is not None: message = message.split () drive (int (mesaj [0]), int (mesaj [1]))
Ce se intampla aici?
- Noul cod va rula dacă mesajul este altceva decât „Nici unul”.
- message.split () verifică dacă există un spațiu în mesaj (pe care l-am adăugat în ultimul pas) și îl folosește pentru a împărți mesajul în două.
- int (mesaj [0]), int (mesaj [1]) face opusul a ceea ce am făcut în pasul anterior - obține fiecare informație individual și o convertește într-un număr întreg (un număr întreg).
- int (mesaj [0]) este utilizat ca valoare pentru motorul din stânga în funcția de acționare, iar int (mesaj [1]) este utilizat ca valoare pentru motorul din dreapta.
Verificați dacă funcționează - motoarele se întorc când apăsați joystick-ul?
Dacă nu, este timpul pentru o depanare!
Dacă da, fantastic! Aveți un robot de telecomandă funcțional!
Petreceți ceva timp antrenând-vă cu robotul înainte de a trece la pasul următor. Conduce așa cum vă așteptați?
Pașii următori vă vor arăta cum să utilizați butoanele de pe joystick pentru a adăuga funcționalitate suplimentară robotului dvs
Dacă doriți să vedeți versiunea noastră a acestui cod până acum:
- Robot:
- Controler:
Pasul 9: Utilizarea butoanelor - Primirea de mesaje suplimentare
În acest moment, codul dvs. va încerca să împartă orice mesaj care nu este Nici unul. Aceasta înseamnă că, dacă primește, de exemplu, „salut”, atunci veți primi un mesaj de eroare.
Pentru a permite micro: bitului dvs. să interpreteze alte mesaje, va trebui să verifice mai întâi fiecare mesaj așteptat, apoi să împartă mesajul numai dacă nu i s-a spus să facă altceva cu el.
Extindeți codul astfel:
dacă mesajul nu este Nici unul:
if message == 'hello': display.show (Image. HAPPY) elif message == 'duck': display.show (Image. DUCK) else: message = message.split () drive (int (message [0]), int (mesaj [1]))
În primul rând, va verifica dacă a primit mesajul „salut”. Dacă are, va afișa o imagine fericită, apoi reveniți în partea de sus a buclei și verificați mesajul următor.
Dacă mesajul nu este salut, va verifica în continuare dacă mesajul este „rață”.
Dacă mesajul nu este „salut” SAU „rață”, va face ultimul lucru din listă, care este împărțit mesajul și pornește motoarele. Nu va încerca să împartă mesajul dacă a primit „salut” sau „rață”, ceea ce înseamnă că nu veți primi un mesaj de eroare din oricare dintre aceste două mesaje.
Semnul dublu egal este important - înseamnă „este egal cu”, comparativ cu un singur semn egal, care setează ceva (deci mesaj = „salut” înseamnă că setăm variabila la „salut”, mesaj == „salut” înseamnă că întrebăm dacă mesajul este egal cu „salut”).
Încercați-l cu doar două opțiuni pentru moment, pentru a-l testa - puteți adăuga oricâte alte mesaje doriți mai târziu.
Link către codul de lucru:
Pasul 10: Trimiterea de mesaje suplimentare utilizând butoanele controlerului
Deconectați micro: bitul robotului și conectați în schimb micro: bitul joystick-ului
Reveniți la codul controlerului pentru a edita.
Similar codului robotului, dorim ca controlerul să verifice dacă încercați să trimiteți alte mesaje, înainte de a trimite valorile joystick-ului.
În partea de sus a buclei, dorim în continuare să verifice valorile actuale ale joystick-ului, dar dorim, de asemenea, să verifice dacă un buton este în prezent apăsat:
în timp ce este adevărat:
joystick = joystick_push () button = button_press ()
button_press () returnează o valoare A, B, C, D, E sau F în funcție de butonul care este apăsat în prezent (dacă nu se apasă nimic, acesta returnează None).
Acum putem face o declarație if-elif-else, așa cum am făcut pentru codul robotului - folosind două butoane și trimiterea valorii joystick-ului dacă nu este apăsat niciun buton.
dacă butonul == „A”:
radio.send ('hello') sleep (500) elif button == 'B': radio.send ('duck') sleep (500) else: message = str (joystick [0]) + "" + str (joystick [1]) radio.send (mesaj) sleep (10)
Când este apăsat un buton, trimiteți unul dintre mesajele pe care i-ați spus robotului să le urmărească în pasul anterior.
Mesajul va fi trimis ori de câte ori este apăsat butonul, iar computerele sunt mult mai rapide decât oamenii! Așadar, s-ar putea să trimită mesajul de multe ori înainte să reușiți să scoateți degetul de pe buton.
Somnul după trimiterea mesajului îl încetinește, astfel încât să nu mai verifice butonul atât de repede - încercați câteva numere aici pentru a obține timpul perfect pentru dvs. - prea încet și nu va fi receptiv, de asemenea rapid și robotul dvs. va primi atât de multe mesaje de buton încât s-ar putea să nu mai răspundă la joystick!
Funcționează?
Dacă primiți mesaje de eroare, gândiți-vă cu atenție la ceea ce tocmai ați schimbat și la ceea ce se întâmplă.
Dacă primiți o eroare la robot atunci când apăsați un buton de pe controler - știți că mesajul este transmis, dar este confuz robotul. Verificați dacă mesajul pe care l-ați trimis și mesajul pe care i-ați spus robotului să îl caute sunt aceleași.
Link către codul de lucru:
Pasul 11: Pașii următori
Acum aveți cunoștințele de care aveți nevoie pentru a lucra cu motoarele robotului dvs. și cu joystick-ul: controlerul de biți
Folosiți aceste cunoștințe pentru a îmbunătăți cele două programe și a le face proprii. Câteva idei de mai jos!
Aveți șase butoane pe controler! Ce vrei să facă?
- Ce zici de programarea unei rutine de dans pe care robotul tău să o facă la comandă? Scrieți un algoritm de comenzi drive (), separate prin comenzi sleep ()!
- Doriți să schimbați direcția în care se deplasează robotul, astfel încât să poată conduce cu ușurință pe dos? Gândiți-vă la valorile x și y ale joystick-ului dvs. Ce reprezintă acestea și cum le puteți manipula?
- Are robotul dvs. (sau ați putea adăuga!) Caracteristici suplimentare, cum ar fi LED-uri, difuzor sau senzori?
Idei pentru îmbunătățirea codului
- Ai putea ajuta robotul tău să facă față mesajelor necunoscute utilizând codul try / except?
- Matematica utilizată pentru a calcula valorile din stânga și din dreapta din joystick nu ne oferă întreaga gamă de valori (unitatea robotului poate accepta un număr de până la 1023). Puteți edita acest cod pentru a obține o gamă mai bună?
- Există și alte metode de amestecare a valorilor joystick-ului - puteți veni cu un mod mai bun de a face acest lucru?
Recomandat:
Rover-One: Oferirea unui creier unui camion RC / mașină: 11 pași
Rover-One: Oferirea unui creier unui camion RC / mașină: Acest instructabil este pe un PCB pe care l-am proiectat numit Rover-One. Rover-One este o soluție pe care am conceput-o pentru a lua o mașină / camion RC de jucărie și pentru a-i oferi un creier care include componente pentru a-i simți mediul. Rover-One este un PCB de 100 mm x 100 mm proiectat în EasyED
Programarea unui Arduino Folosind un alt Arduino pentru a afișa un text derulant fără bibliotecă: 5 pași
Programarea unui Arduino Folosirea unui alt Arduino pentru a afișa un text derulant fără bibliotecă: Sony Spresense sau Arduino Uno nu sunt atât de scumpe și nu necesită multă energie. Cu toate acestea, dacă proiectul dvs. are limite de putere, spațiu sau chiar buget, vă recomandăm să utilizați Arduino Pro Mini. Spre deosebire de Arduino Pro Micro, Arduino Pro Mi
Selectarea unui motor de pas și a unui driver pentru un proiect de ecran de umbră automat Arduino: 12 pași (cu imagini)
Selectarea unui motor de pas și a unui driver pentru un proiect de ecran de umbră automat Arduino: În acest instructable, voi parcurge pașii pe care i-am făcut pentru a selecta un motor de pas și un driver pentru un prototip de proiect de ecran de umbră automat. Ecranele de umbră sunt modelele populare și ieftine Coolaroo cu manivelă și am vrut să înlocuiesc t
Realizarea unui adaptor Bluetooth Pt.2 (Realizarea unui difuzor compatibil): 16 pași
Realizarea unui adaptor Bluetooth Pt.2 (Realizarea unui difuzor compatibil): În acest instructiv, vă voi arăta cum să utilizați adaptorul meu Bluetooth pentru a face compatibil un difuzor vechi Bluetooth. * Dacă nu ați citit primul meu instructable la „Realizarea un adaptor Bluetooth " Vă sugerez să faceți acest lucru înainte de a continua.C
Programarea unui PLC pentru a controla o lumină de stop .: 7 pași (cu imagini)
Programarea unui PLC pentru a controla o lumină de stop: PLC-urile sunt utilizate în tot ceea ce întâlnim zilnic. De la mașinile de conservare sau îmbuteliere a articolelor precum bere, sodă, supă și multe alte bunuri ambalate până la benzile transportoare de la Walmart și Stopurile de la unele intersecții, PLC-urile ating un