Cuprins:

UCL Embedded - B0B Linefollower: 9 pași
UCL Embedded - B0B Linefollower: 9 pași

Video: UCL Embedded - B0B Linefollower: 9 pași

Video: UCL Embedded - B0B Linefollower: 9 pași
Video: Human vs Robot | Artificial Intelligence 2024, Iulie
Anonim
UCL Embedded - B0B Linefollower
UCL Embedded - B0B Linefollower

Acesta este B0B. *

B0B este o mașină generică controlată radio, care servește temporar la baza unui robot care urmărește linia.

La fel ca atât de mulți roboți de urmărire a liniei înainte de el, el va face tot posibilul să rămână pe o linie cauzată de o tranziție între podea și un material contrastant, în cazul nostru bandă adezivă.

Spre deosebire de atâția alți roboți de urmărire a liniei, B0B colectează date și le trimite prin WiFi.

Complet suprasolicitat pentru un proiect de hobby, acesta implică o serie de subiecte pe care le-ați putea găsi interesante. Acest ghid descrie nașterea sa, funcțiile sale și modul în care puteți face una la fel ca el.

De asemenea, implică supărarea asupra diferitelor componente electronice pentru că nu funcționează așa cum am vrut și pașii pe care i-am făcut pentru a depăși aceste dificultăți (vă privesc ESP 8266-01).

Există 2 coduri pentru ca proiectul să funcționeze. Primul cod este pentru modulul ESP8266 pe care îl folosim Arduino ca programator, iar al doilea cod va rula pe Arduino.

Pasul 1: Componente

Pentru acest proiect veți avea nevoie de:

Hardware:

• 1x mașină controler radio, (trebuie să aibă ESC și servodirecție).

Foloseam un Traxxas 1/16 E-Revo VXL în mare parte, mai ales pentru că asta aveam și eram destul de încrezători că o vom putea controla cu un Arduino. De asemenea, pentru că va ajunge să aducă o cantitate deloc neglijabilă de hardware suplimentar, am fost siguri că acest lucru nu va fi o problemă pentru 1/16 E-Revo.

Cu toate acestea, majoritatea mașinilor radio controlate (care pot fi ușor demontate) ar putea fi folosite probabil în loc, iar procesul va fi foarte similar.

• O tonă de bandă adezivă.

Culoarea ar trebui să contrasteze podeaua cât mai mult posibil. În mediul nostru de testare am folosit bandă albă pe o podea întunecată.

• 1x Arduino Mega 2560.

Probabil că și cele mai mici Arduino sunt în regulă, dar veți fi apăsat pentru pini.

• 1x placă mare pentru pâine.

Una este suficientă, dar am avut și una mai mică pentru a separa celelalte linii de tensiune pentru a reduce riscul de eroare a utilizatorului.

• 1x senzor analogic TCRT5000 IR (utilizat pentru evitarea coliziunilor).

Marca / modelul exact nu contează dacă este compatibil Arduino și măsoară distanța. Căutați cuvinte cheie precum „Distanță”, senzor „obstacol”. Din punct de vedere tehnic, un senzor digital ar funcționa la fel cu modificări minore de cod, dar folosim unul analogic.

• 1x sau 2x Gravity: senzor analogic în tonuri de gri v2

Una este o necesitate pentru următorul liniei. Modelul exact nu contează, atâta timp cât privește intensitatea luminii reflectate și emite un semnal analogic. Al doilea pentru detectarea „camerei” nu funcționa la fel de bine cum era de așteptat și poate fi omis sau se poate găsi o alternativă, cum ar fi un senzor de culoare RGB, probabil pentru un efect mai bun. Încă nu am testat acest lucru.

• 1 x ESP 8266-01.

Există o mulțime de versiuni ale ESP 8266 disponibile. Avem experiență doar cu 8266-01 și nu putem garanta că codul ESP va funcționa cu o versiune diferită.

• 1 x ESP8266-01 scut Wi-Fi.

Opțional din punct de vedere tehnic, dar dacă nu îl utilizați, tot ceea ce implică modulul Wi-Fi se va complica mult. Cu toate acestea, ghidul va presupune că aveți acest lucru (dacă nu, găsiți ghidurile online pentru conectarea corectă a ESP-01 la Arduino), deoarece acest lucru incorect poate și probabil va deteriora modulul.

• Baterii pentru vehiculul în sine și baterii pentru alimentarea componentelor electronice suplimentare.

Am folosit o pereche de 2,2 AH capacitate, 7,4V baterii Lipo în paralel pentru a alimenta totul. Ar trebui să puteți folosi bateriile pe care le-ați folosi în mod normal cu vehiculul ales. Dacă sunteți peste 5V, dar sub 20V, capacitatea este mai importantă decât tensiunea nominală.

• O mulțime de cabluri jumper.

Am renunțat să număr numărul exact al acestora. Dacă credeți că aveți destule, probabil că nu aveți.

• În cele din urmă, pentru a atașa totul, va trebui să montați Arduino, senzorii, panourile și modulul Wi-Fi la vehiculul la alegere. Rezultatul dvs. va varia în funcție de ceea ce utilizați ca bază și de ce materiale sunt disponibile.

Noi am folosit:

• Cravate cu fermoar.

• Ceva super lipici.

• Bucăți mici de resturi de hârtie / tub de rășină pe care le-am avut cu un diametru adecvat.

• O placă din spate masonită veche dintr-o ramă, tăiată la dimensiune.

• Încă ceva bandă adezivă.

• Toate instrumentele necesare pentru a lucra la mașina dvs. radio controlată la alegere.

În majoritatea cazurilor, am folosit un mic șurubelniță cu mai mulți biți, dar, uneori, a trebuit să scoatem setul de instrumente stoc care a venit cu mașina.

Software:

• Roșu nod

O parte importantă a colectării datelor.

• Un server MQTT.

Omul de mijloc dintre vehiculul nostru și roșu nod. Inițial, pentru testare, am folosit test.mosquitto.org

Mai târziu am folosit:

• CloudMQTT.com

Acest lucru a fost mult mai fiabil, ceea ce a compensat mai mult pentru a fi ușor mai complicat de configurat.

• WampServer.

Ultima parte a colectării datelor. Mai exact, vom folosi baza de date SQL pentru stocarea datelor colectate.

Pasul 2: Diagrama electrică

Diagrama electrică
Diagrama electrică

Pasul 3: Construcție fizică

Construcție fizică
Construcție fizică
Construcție fizică
Construcție fizică
Construcție fizică
Construcție fizică

Soluția noastră are o abordare directă a asamblării fizice.

Receptorul original și carcasa sa impermeabilă au fost scoase din mașina RC, deoarece nu este necesară.

Am constatat că există o locație adecvată între roțile din față pentru senzorul nostru de urmărire a liniei, așa că l-am ținut în poziție prin buclarea unei cravate deasupra plăcii de derapare din față.

Senzorul pe care îl folosim pentru anti-coliziune este într-un fel încastrat în spatele barei de protecție față. Încă este protejat de impact și se potrivește prin frecare. Se termină prin a privi în față la un unghi atât de ușor în sus. Aceasta este perfect.

Placa Masonite, (placa posterioară din vechea ramă foto), deasupra are secțiuni mici de țeavă de hârtie / rășină tăiate la dimensiune și lipite pe partea inferioară. Acestea se aliniază cu suporturile pentru stâlpii corpului și se așează pur și simplu pe partea de sus, ținând totul în siguranță. Presupunând că lipiciul care fixează țeava pe suportul plăcii și că nu se înclină excesiv, acesta va rămâne la locul său. De asemenea, merită remarcat faptul că placa se află în sfera de protecție a roților și a barelor de protecție. Arduino Mega și cele două panouri au fost atașate pe placă fie cu bandă laterală dublă, fie cu o buclă de bandă adezivă înconjurată, lipită.

Nu s-au luat măsuri speciale pentru securizarea modulului WiFi. Nu este al nostru, așa că lipirea sau lipirea acestuia a fost considerată inutilă, deoarece este atât de ușoară încât nu se va mișca prea mult, iar firele sunt suficiente pentru ao menține în poziție.

În cele din urmă, avem un senzor pentru detectarea „încăperilor”, care a fost fixat la componentele suspensiei de către una dintre roțile din spate. În timpul funcționării, aceasta trebuie să fie departe de linia de marcare pe care vehiculul o folosește pentru a naviga.

Pasul 4: Modulul ESP8266

Modulul ESP8266
Modulul ESP8266
Modul ESP8266
Modul ESP8266

Modulul WiFi, ESP8266, necesită configurarea a doi pini diferiți. O configurare trebuie utilizată atunci când intermitentul modulului cu un nou program și utilizarea Arduino Mega 2560 ca programator. Cealaltă configurare este pentru modul atunci când este utilizat și trimite informații către brokerul MQTT.

Folosind Arduino IDE pentru a încărca codul în modulul ESP8266, va trebui să instalați un manager de placă și un manager de plăci suplimentar

În directorul de bord instalați managerul de bord esp8266. Acesta va fi ușor găsit prin căutarea „esp”. Este crucial să instalați versiunea 2.5.0, nu mai veche, nici mai nouă.

În setările din adresele URL suplimentare ale managerului de tablouri, copiați în acest rând:

arduino.esp8266.com/stable/package_esp8266c…

Pentru a putea încărca orice pe modulul ESP8266, va trebui să utilizați o setare specifică a pinului, astfel încât să puteți bloca modulul. Acest lucru trebuie făcut de fiecare dată când doriți să modificați codul curent care rulează pe modul. Nu uitați să selectați modulul corect ESP8266 din managerul plăcii înainte de a aprinde modulul. În acest proiect am ales placa generică ESP8266. Configurarea pinului pentru clipirea modulului se găsește pe prima imagine din acest segment.

După ce ați aprins modulul ESP8266, trebuie să comutați configurarea pinului. De asemenea, puteți alege să utilizați un adaptor pentru a vă facilita configurarea. În acest proiect am ales să avem un adaptor ori de câte ori am avut modulul în funcțiune. Configurarea pinului cu adaptor se găsește în a doua imagine din acest segment.

Codul care va fi afișat pe modulul ESP8266 configurează conexiunea la un WiFi și un broker MQTT, în acest caz cu un nume de utilizator și o parolă, dar se poate face fără dacă efectuați modificările necesare descrise în comentariile codului. Pentru acest proiect, Brokerul nostru a solicitat un nume de utilizator și o parolă pentru a funcționa. Modulul citește mesajele primite de la portul serial la care este conectat. Va citi fiecare nouă linie creată de codul Arduino, va descifra mesajul și va recrea mesajul. Ulterior, acesta trimite mesajul către Brokerul MQTT care a fost specificat în cod. Codul pentru modulul ESP8266:

Pasul 5: Arduino

După ce am configurat modulul WiFi, ne uităm la programul care va fi utilizat pentru controlul motorului și al servo-ului de pe mașina RC. Mașina va reacționa în conformitate cu o informație la scară de gri de la senzorul central, cunoscut și sub denumirea de „Detector de linie” în acest proiect. În mod clar, își propune să păstreze informațiile din detectorul de linie lângă o valoare prestabilită, care este egală cu informațiile înregistrate la schimbarea dintre lumină și întuneric sau în acest proiect, alb și negru. Deci, dacă valoarea diferă prea mult, ieșirea corespunzătoare către servo va conduce mașina în apropierea valorii prestabilite a liniei.

Programul are două butoane care funcționează ca buton de pornire și oprire pentru mașina RC. Din punct de vedere tehnic, butonul „oprire” este un buton „armare” care, în termeni, este egal cu o valoare PWM trimisă motorului care determină oprirea mașinii RC. Butonul de pornire trimite o valoare PWM care este egală cu mașina RC care abia se mișcă înainte, deoarece va conduce prea repede dacă câștigă prea mult impuls.

Un detector de evitare a coliziunilor este adăugat la capătul frontal al mașinii RC pentru a detecta dacă drumul înainte este liber sau blocat. Dacă este blocat, mașina RC se va opri până când obstacolul nu mai este / este îndepărtat. Semnalul analogic de la detector este utilizat pentru a determina dacă ceva blochează sau nu calea și este făcut un criteriu pentru a putea avansa la fel ca oprirea.

Un senzor secundar de scară de gri, „Detector cameră”, este utilizat pentru a detecta în ce cameră a intrat mașina RC. Funcționează pe un principiu similar cu detectorul de linie, dar nu caută schimbarea dintre lumină și întuneric, ci mai degrabă pentru valori dintr-un interval specific care corespunde diferitelor camere în funcție de valoarea văzută de detectorul de cameră.

În cele din urmă, programul creează o linie de informații din senzori pentru ca modulul WiFi să poată fi citit și apoi trimis către brokerul MQTT. Linia de informații este creată ca un șir și scrisă în seria corespunzătoare la care este conectat modulul WiFi. Este important ca scrierea în serial să aibă loc de câte ori modulul WiFi poate citi mesajul primit, dar nu uitați să nu utilizați întârzieri în acest cod, deoarece va interfera cu capacitatea mașinii RC de a urma linia. În schimb, utilizați „milis”, deoarece acesta va permite programului să ruleze fără întârziere, dar după ce a trecut o cantitate definită de milis de la pornirea Arduino, va scrie un mesaj pe serial fără a bloca codul, la fel ca întârzierea.

Codul pentru Arduino Mega 2560:

Pasul 6: baza de date MySQL

WampServer este un mediu de dezvoltare web pentru Windows care ne permite să creăm aplicații cu PHP și o bază de date MySQL. PhpMyAdmin ne permite să ne gestionăm bazele de date într-un mod ușor.

Pentru a începe, accesați:

În acest proiect folosim versiunea 3.17 x64 biți pentru Windows. După instalare, asigurați-vă că toate serviciile rulează, ceea ce înseamnă că pictograma mică devine verde în loc de roșu sau portocaliu. Dacă pictograma este verde, atunci puteți accesa PhpMyAdmin pentru a vă gestiona baza de date MySQL.

Accesați MySQL folosind PhpMyAdmin și creați o nouă bază de date. Denumiți-l ceva adecvat pe care îl puteți aminti, în acest proiect a fost numit „line_follow_log”. După crearea bazei de date, ar trebui să creați un tabel în baza de date. Asigurați-vă că numărul de coloane se potrivește. În proiect folosim 4 coloane. O coloană este pentru un timestamp, iar ultimele trei sunt utilizate pentru a stoca date de la vehicul. Utilizați un tip de date adecvat pentru fiecare coloană. Am folosit „text lung” pentru coloana de marcare temporală și „text mediu” pentru restul.

Asta ar trebui să fie tot ce trebuie să faceți în PhpMyAdmin și MySQL. Amintiți-vă baza de date și tabelul pentru secțiunea despre Node-Red.

Pasul 7: Nod-roșu

Pentru a gestiona colectarea datelor, vom folosi un flux destul de simplu în roșu nod. Se conectează la serverul nostru MQTT și scrie în baza noastră de date MYSQL.

Pentru a face acest lucru, avem nevoie de câteva palete pentru a funcționa diverse funcții și avem nevoie de un cod real pentru a rula.

Să începem cu începutul. Vom avea nevoie de următorii paleti.

Node-red-contrib-mqtt-broker: Aceasta este conexiunea cu brokerul nostru MQTT.

Node-red-dashboard: Tabloul nostru de bord, necesar pentru a reprezenta vizual datele colectate.

Node-red-node-mysql: Conexiunea noastră la baza de date SQL.

Acesta nu trebuie să fie un ghid complet pentru Node-roșu, dar voi explica ce face fluxul Node-roșu.

La început, am avut probleme cu moartea / deconectarea serverului nostru MQTT, aparent la întâmplare, ceea ce a făcut ca orice modificare să fie un efort frustrant, deoarece nu era clar dacă modificările au fost benefice sau nu atunci când nu am putut vedea rezultatul. Deci butonul „A murit serverul?” injectează „Nu” următorul bloc îl injectează pe serverul nostru MQTT. Dacă nu este mort, va apărea „Nu” în fereastra de depanare. Acest lucru se face nu numai pentru a testa, ci pentru a forța Node-roșu să încerce să se reconecteze la serverul MQTT.

„Șirul de testare” trimite un șir de costuri brokerului MQTT. Am formatat acest șir pentru a fi similar cu ceea ce am obține de la Arduino. Aceasta avea ca scop configurarea mai ușoară a rețelei care decodează mesajele, fără a fi nevoie ca proiectul să ruleze, colectând date.

Ultimul flux din spațiul de lucru poate fi împărțit în două segmente. Ramura de jos citește pur și simplu mesajele primite, le postează în fereastra de depanare și le salvează pe serverul SQL.

Rețeaua mare de comutatoare conectate care urmează un nod funcțional dacă se întâmplă adevărata „magie”.

Funcția de continuare citește șirul de intrare, împărțindu-l cu fiecare punct și virgulă și transmite secțiunile pe fiecare dintre ieșiri. Următoarele comutatoare caută una din cele două informații diferite primite. O informație specifică este transmisă întotdeauna dintr-o ieșire, cealaltă opțiune pleacă de la a doua ieșire. În continuare, este un al doilea grup de blocuri de comutare. Se vor activa doar cu o singură intrare și vor scoate altceva.

Un exemplu, „obstacol”, ca toate celelalte, este o alegere binară, fie este clar să conduci, fie nu este. Deci va primi un 0 sau un 1. Un 0 va fi trimis la ramura „clear”, un 1 va fi trimis la ramura „Obstructed”. Comutatoarele „Clear”, „Obstructed”, dacă sunt activate, vor afișa ceva specific, Clear sau respectiv obstrucționat. Blocurile de procedură verzi vor fi postate în fereastra de depanare, albastru va scrie în tabloul nostru de bord.

Ramurile „stare” și „locație” funcționează exact la fel.

Pasul 8: Broker MQTT

Un Broker este un server care direcționează mesajele de la clienți către clienții destinație corespunzători. Un broker MQTT este unul în care clienții folosesc o bibliotecă MQTT pentru a se conecta la broker printr-o rețea.

Pentru acest proiect am creat un broker MQTT folosind serviciul CloudMQTT cu abonament gratuit pentru o versiune „Cute Cat”. Are limitare, dar nu le depășim pe cele din acest proiect. Modulul WiFi se poate conecta la broker și brokerul apoi direcționează mesajele către un client de destinație adecvat. În acest caz, clientul este Node-Red. Serviciul CloudMQTT configurează un nume de utilizator și o parolă pentru serverul lor, deci ni se garantează o securitate mai mare. Practic înseamnă că numai cei cu numele de utilizator și parola pot accesa acest serviciu specific CloudMQTT. Numele de utilizator și parola sunt cruciale atunci când configurați conexiunea pe codul ESP8266, precum și Node-Red.

Statisticile în curs pentru mesajele primite de Broker este o caracteristică plăcută, care poate fi utilizată pentru a vedea cât de bine gestionează planul dvs. de abonament informațiile pe care le direcționează.

O caracteristică plăcută este posibilitatea de a trimite mesaje de la Broker către modulul WiFi, dar nu le-am folosit pe cele din acest proiect.

Pasul 9: Hobby Electronics

Înainte de a începe, am știut dintr-un proiect trecut că servo-ul de direcție standard ar putea fi controlat de la un Arduino cu un semnal PWM, având o conexiune similară și conectându-se la canale diferite pe același receptor radio stoc, am presupus controlul electronic al vitezei, (ESC din acum), care controlează motorul, ar putea fi controlat în mod similar prin PWM de la Arduino.

Pentru a testa această teorie, dispunem o mică schiță Arduino. Schița citește o intrare analogică de la un potențiometru, remapează valoarea de la 0, 1024 la 0, 255 și transmite valoarea rezultată la un pin PWM, utilizând analogWrite () în timp ce avea mașina R / C pe o cutie mică și avea rotile scoase.

După ce am parcurs raza de acțiune a contorului de pot, ESC părea că se „trezește” și am putut să-l strângem în sus și în jos, de asemenea, am primit Arduino să imprime valorile la conexiunea serială, astfel încât să le putem monitoriza.

CES nu părea să-i placă valorile sub un anumit prag, în acest caz 128. A văzut semnalul 191 ca o clapetă neutră, iar 255 a fost clapeta maximă.

Nu a trebuit să modificăm viteza vehiculului și am avut-o perfect pentru a-l atinge la cea mai mică viteză care să-l facă să se miște. 192 a fost cea mai mică valoare care ar roti motorul, cu toate acestea, încă nu am asamblat totul și nu suntem siguri dacă această ieșire ar fi suficientă pentru a muta vehiculul după asamblarea finală, totuși introducerea unei valori puțin mai mari ar trebui să fie banală.

Cu toate acestea, eludarea potențiometrului și introducerea valorii fixe în cod nu au funcționat. Sistemul ESC pur și simplu a clipit și nu ar roti motorul, „reglați ajustarea clapetei de accelerație” conform manualului.

Depanarea furioasă a problemelor, aruncarea la diferite valori, utilizarea unor fire diferite și chiar experimentarea schimbării frecvenței PWM pe care le folosește Arduino au dus la o ciudățenie.

Părea a fi o problemă intermitentă, uneori avea să funcționeze, alteori refuza să facă ceva. Pur și simplu a continuat să clipească. Un test cu controlerul și receptorul original a confirmat că ESC funcționează încă exact așa cum se intenționează, ceea ce a făcut ca problemele să fie și mai ciudate. Valori mai mari, a ignorat și a continuat să clipească, valori mai mici, ESC a revenit la strălucirea unui verde fericit, dar tot nu s-a transformat.

Ce era diferit de setarea cu potențiometrul, sau de emițătorul și receptorul de stoc, și de versiunea care furniza valori fixe?

Uneori, a lucra conform intenției și a funcționa așa cum era de așteptat nu se suprapune prea mult pe diagrama Venn. În acest caz, fiind o jucărie, nu ar trebui să existe nicio șansă ca modelul să scoată sau să rupă degetele sau să se prindă părul de roți sau să antreneze trenul pe măsură ce modelul pornește, chiar dacă ceva de genul de a ține transmițătorul ciudat are clapeta de accelerație în orice altă poziție decât neutră.

„Reglați ornamentul clapetei de accelerație”, exact asta înseamnă. ESC așteaptă un semnal neutru atunci când pornește, înainte de a obține că nu va face nimic. În mod normal, transmițătorul ar fi întotdeauna în poziția neutră atunci când ESC este pornit și de acolo va conduce fericit. În cazul în care nu este, probabil că a revenit la neutru cel puțin o dată până când modelul este ferm pe sol și operatorul se simte pregătit să alerge.

În timp ce foloseam potențiometrul, „măturam” prin intervale și apoi începea să funcționeze. Pur și simplu s-a înarmat în timp ce potențiometrul a trecut de poziția neutră și apoi a funcționat.

Intervalele mai mici, cu toate acestea, păreau încă să nemulțumească ESC. Acest lucru se dovedește a fi un produs al ciclurilor de funcționare PWM.

Fie prin proiectare, fie realizat dintr-un motiv tehnic, atât servodirecția, cât și ESC ignoră semnalele sub 50% cicluri de funcționare. Acest lucru ar putea fi în cazul în care receptorul / emițătorul nu mai funcționează sau rămâne fără putere, modelul ar reveni la punctul neutru și nu ar decola în distanță cu accelerația inversă completă. În mod egal, servo-ul se rotește doar cu 180 de grade și nu are nevoie de gama completă.

Cu aceste noi cunoștințe în mână, a fost creată o nouă schiță Arduino. Versiunea inițială acceptă șirurile introduse în monitorul Serial, îl convertește într-un număr întreg și îl mută pe pinul PWM, utilizând biblioteca servo și write () *. Dacă se introduce o nouă valoare în monitorul serial, valoarea write () este actualizată.

În timpul testării, stocul Traxxas ESC a fost înlocuit cu un Mtroniks G2 Micro, însă acestea ar trebui să funcționeze la fel, deși valorile exacte ar putea fi ușor diferite.

Această bibliotecă tratează ESC ca un servo, se pare că este bine. Funcția write () din biblioteca Servo.h merge de la 0 la 180, se așteaptă ca semnalul de armare așteptat să fie în jurul mijlocului.

Brațele G2 Micro la o scriere () într-o gamă de valori de aproape 90, totuși a fost greu de identificat, deoarece se pare că „își amintește” că au fost înarmate.

Se așteaptă ca Traxxas VXL-s3 să se armeze la o valoare write () de 91.

După semnalul de armare, fie ESC a acceptat cu plăcere semnalele PWM, indiferent de funcțiile Arduino chemate pentru a le genera, și controlează motorul în consecință.

Apropo de funcții; standardul analogWrite (), precum și write () și writeMicroseconds () din biblioteca Servo.h pot fi toate utilizate în mod interschimbabil, trebuie doar să țineți cont de ce înseamnă ce și, în cele din urmă, nu contează altceva decât ciclul de funcționare. WriteMicroseconds () ar putea fi utilizat dacă este necesară o granularitate mai mare, trebuie doar să rețineți că intervalul de aici este cuprins între 1000 și 2000, cu armare sau „neutru” de așteptat să fie la 1500. Cu standardul analogWrite (), intervalul utilizabil este de așteptat să să fie de la 128 la 255, cu aproximativ 191 fiind neutru.

Recomandat: