Kazalo:

UCL Embedded - B0B Linefollower: 9 korakov
UCL Embedded - B0B Linefollower: 9 korakov

Video: UCL Embedded - B0B Linefollower: 9 korakov

Video: UCL Embedded - B0B Linefollower: 9 korakov
Video: Human vs Robot | Artificial Intelligence 2024, Julij
Anonim
UCL Embedded - B0B Linefollower
UCL Embedded - B0B Linefollower

To je B0B.*

B0B je generični avtomobil z radijskim nadzorom, ki začasno služi kot osnova robotu, ki sledi liniji.

Tako kot mnogi roboti, ki sledijo liniji pred njim, se bo po svojih najboljših močeh trudil ostati na črti, ki jo povzroči prehod med tlemi in kontrastnim materialom, v našem primeru lepilnim trakom.

Za razliko od mnogih drugih robotov, ki sledijo liniji, tudi B0B zbira podatke in jih pošilja prek WiFi.

Popolnoma presežek za hobi projekt, vključuje pa številne teme, ki bi se vam zdele zanimive. Ta priročnik opisuje njegovo rojstvo, njegove funkcije in kako ga lahko naredite takšnega, kot je on.

Vključuje tudi jezo na različno elektroniko, ker ne deluje tako, kot smo si želeli, in korake, ki smo jih naredili za premagovanje teh težav (gledam vas ESP 8266-01).

Za izvedbo projekta obstajata 2 kodi. Prva koda je za modul ESP8266, ki ga Arduino uporabljamo kot programer, druga koda pa se bo izvajala na Arduinu.

1. korak: Komponente

Za ta projekt boste potrebovali:

Strojna oprema:

• 1x avtomobil z radijskim upravljalnikom, (mora imeti ESC in servo krmiljenje).

Uporabljali smo večinoma delni Traxxas 1/16 E-Revo VXL, predvsem zato, ker smo to imeli, in smo bili povsem prepričani, da ga bomo lahko nadzorovali z Arduinom. Tudi zato, ker bo na koncu vseboval zanemarljivo količino dodatne strojne opreme, smo bili prepričani, da to ne bo problem za 1/16 E-Revo.

Vendar bi verjetno lahko uporabili večino radijsko vodenih avtomobilov (ki jih je mogoče zlahka razstaviti), postopek pa bo zelo podoben.

• Tono lepilnega traku.

Barva mora biti v največji možni meri v nasprotju s tlemi. V našem preskusnem okolju smo na temnih tleh uporabljali bel trak.

• 1x Arduino Mega 2560.

Manjši Arduino so verjetno tudi v redu, vendar boste morali pritisniti na zatiče.

• 1x velika deska za kruh.

Eden je dovolj, vendar smo imeli tudi manjšega, da bi ločili druge napetostne daljnovode, da bi zmanjšali tveganje napake uporabnika.

• 1x IR analogni senzor TCRT5000 (uporablja se za preprečevanje trkov).

Natančna znamka/model ni pomemben, če je združljiv z Arduinom in meri razdaljo. Poiščite ključne besede, kot sta tipalo »razdalja«, »ovira«. Tehnično bi digitalni senzor deloval tudi z manjšimi spremembami kode, vendar uporabljamo analognega.

• 1x ali 2x gravitacija: analogni senzor sivine v2

Eden je nujen za sledilca linije. Natančen model ni pomemben, če gleda intenzivnost odbite svetlobe in oddaja analogni signal. Druga za odkrivanje "sobe" ni delovala tako pričakovano in jo je mogoče izpustiti ali pa najti alternativo, kot je barvni senzor RGB, verjetno za boljši učinek. Tega še moramo preizkusiti.

• 1 x ESP 8266-01.

Na voljo je veliko različic ESP 8266. Imamo samo izkušnje z 8266-01 in ne moremo zagotoviti, da bo koda ESP delovala z drugo različico.

• 1 x ESP8266-01 ščit za Wi-Fi.

Tehnično neobvezno, če pa tega ne uporabljate, bo vse, kar vključuje modul Wi-Fi, postalo veliko bolj zapleteno. Priročnik pa bo domneval, da imate to (če ne, poiščite navodila na spletu za pravilno ožičenje ESP-01 v Arduino), saj lahko to nepravilno poškoduje in verjetno poškoduje modul.

• Baterije za samo vozilo in baterije za napajanje dodatne elektronike.

Za napajanje vsega smo vzporedno uporabili par 2,2 AH zmogljivosti, 7,4V Lipo baterije. Morali bi uporabljati vse baterije, ki jih običajno uporabljate pri svojem vozilu. Če ste nad 5V, vendar pod 20V, je zmogljivost pomembnejša od nazivne napetosti.

• Veliko mostičnih kablov.

Odpovedal sem se natančnemu številu teh. Če mislite, da imate dovolj, verjetno ne.

• Za priključitev vsega boste morali na vozilo po vaši izbiri namestiti Arduino, senzorje, plošče (e) in modul Wi-Fi. Vaš rezultat se bo razlikoval glede na to, kaj uporabljate kot osnovo, in katere materiale imate na voljo.

Smo uporabili:

• Vezi na zadrgo.

• Nekaj super lepila.

• Majhne koščke odpadnega papirja/smolne cevi s primernim premerom.

• Stara masonska zadnja plošča iz okvirja za sliko, izrezana po velikosti.

• Še malo lepilnega traku.

• Vsa orodja, potrebna za delo na izbranem radijsko vodenem avtomobilu.

Večinoma smo uporabljali majhen komplet izvijačev z več nastavki, občasno pa smo morali izvleči nabor orodij, ki je bil priložen avtomobilu.

Programska oprema:

• Node-rdeča

Pomemben del zbiranja podatkov.

• strežnik MQTT.

Posrednik med našim vozilom in Node-red. Sprva smo za testiranje uporabljali test.mosquitto.org

Kasneje smo uporabili:

• CloudMQTT.com

To je bilo veliko bolj zanesljivo, kar je več kot nadomestilo za nekoliko bolj zapleteno nastavitev.

• WampServer.

Zadnji del zbiranja podatkov. Za shranjevanje zbranih podatkov bomo uporabili njegovo bazo podatkov SQL.

2. korak: električni diagram

Električni diagram
Električni diagram

3. korak: Fizična konstrukcija

Fizična konstrukcija
Fizična konstrukcija
Fizična konstrukcija
Fizična konstrukcija
Fizična konstrukcija
Fizična konstrukcija

Naša rešitev ima neposreden pristop k fizični montaži.

Prvotni sprejemnik in njegovo vodotesno ohišje so odstranili iz avtomobila RC, saj ni potreben.

Ugotovili smo, da je med sprednjimi kolesi primerno mesto za naš senzor sledenja liniji, zato smo ga držali na mestu, tako da smo z zadrgo pripeli nad sprednjo drsno ploščo.

Senzor, ki ga uporabljamo za preprečevanje trčenja, je nekako vpet v sprednji odbijač. Še vedno je zaščiten pred udarci in trenje mu ustreza. Na koncu gleda naprej pod tako rahlim kotom navzgor. To je popolno.

Masonska plošča (hrbtna plošča iz starega okvirja za slike) na vrhu ima majhne dele papirja/smolne cevi, narezane na velikost in nalepljene na dno. Ti so poravnani z nosilci za opornike za telo in preprosto sedijo na vrhu ter vse držijo varno. Če lepilo, ki pritrdi cev na ploščo, drži in se ne nagiba pretirano, bo to ostalo na svojem mestu. Omeniti velja tudi, da je plošča v zaščitni sferi koles in odbijačev. Arduino Mega in dve plošči sta bili pritrjeni na ploščo z dvojnim stranskim trakom ali z zanko lepilnega traku, zlepljenega naokoli.

Za zaščito modula WiFi niso bili sprejeti nobeni posebni ukrepi. Ni naš, zato ga je bilo lepljenje ali lepljenje lepil kot nepotrebno, saj je tako lahek, da se ne bo veliko premikal, žice pa zadostujejo, da ga držijo na mestu.

Nazadnje imamo senzor za zaznavanje "sob", ki je bil na komponente vzmetenja zadrgnjen z enim od zadnjih koles. Med delovanjem mora biti to stran od črte, ki jo vozilo uporablja za navigacijo.

4. korak: Modul ESP8266

Modul ESP8266
Modul ESP8266
Modul ESP8266
Modul ESP8266

Modul WiFi, ESP8266, zahteva dve različni nastavitvi pin. Eno nastavitev je treba uporabiti, ko modul utripate z novim programom in uporabljate Arduino Mega 2560 kot programer. Druga nastavitev je za modul, ko je v uporabi in pošilja podatke posredniku MQTT.

Z uporabo Arduino IDE za nalaganje kode v modul ESP8266 boste morali namestiti upravitelja plošč in dodatnega upravitelja plošč

Pod upraviteljem plošče namestite upravitelja plošče esp8266. Z iskanjem »esp« ga boste zlahka našli. Pomembno je, da namestite različico 2.5.0, ne starejšo in ne novejšo.

Pod nastavitvami v dodatnih URL -jih upravitelja plošč kopirajte v to vrstico:

arduino.esp8266.com/stable/package_esp8266c…

Če želite v modul ESP8266 naložiti karkoli, morate uporabiti posebno nastavitev zatiča, da lahko modul utripate. To je treba storiti vsakič, ko želite spremeniti trenutno kodo, ki se izvaja na modulu. Ne pozabite izbrati pravilnega modula ESP8266 v upravitelju plošče, preden modul utripate. V tem projektu smo izbrali generično ploščo ESP8266. Nastavitev zatiča za utripanje modula najdete na prvi sliki v tem segmentu.

Po utripanju modula ESP8266 morate preklopiti nastavitev zatiča. Za lažjo nastavitev se lahko odločite tudi z vmesnikom. V tem projektu smo se odločili, da imamo adapter vedno, ko je bil modul zagnan. Nastavitev zatiča z adapterjem najdete na drugi sliki v tem segmentu.

Koda, ki jo želite vstaviti v modul ESP8266, vzpostavi povezavo z omrežjem WiFi in posrednikom MQTT, v tem primeru z uporabniškim imenom in geslom, vendar lahko to storite tudi brez ustreznih sprememb, opisanih v komentarjih kode. Za ta projekt je naš posrednik za delo potreboval uporabniško ime in geslo. Modul bere dohodna sporočila iz serijskih vrat, na katera je povezan. Prebral bo vsako novo vrstico, ki jo ustvari koda Arduino, sporočilo dešifriral in ga ponovno ustvaril. Nato pošlje sporočilo posredniku MQTT, ki je določeno v kodi. Koda za modul ESP8266:

5. korak: Arduino

Ko smo konfigurirali modul WiFi, si ogledamo program, ki bo uporabljen za krmiljenje motorja in servomotorja na avtomobilu RC. Avto se bo odzval v skladu s podatki sive lestvice iz osrednjega senzorja, v tem projektu znanega tudi kot "linijski detektor". Jasno je, da želi ohraniti informacije iz detektorja linij blizu vnaprej nastavljene vrednosti, ki je enaka informacijam, zabeleženim pri prehodu med svetlobo in temno ali v tem projektu, belem in črnem. Torej, če se vrednost preveč razlikuje, bo ustrezen izhod na servo usmeril avto blizu prednastavljene vrednosti proge.

Program ima dva gumba, ki delujeta kot gumb za zagon in ustavitev avtomobila RC. Tehnično je gumb "stop" gumb "aktiviranje", ki je v smislu enake vrednosti PWM, poslani motorju, zaradi česar se avtomobil RC ustavi. Gumb za zagon pošlje vrednost PWM, ki je enaka, da se avtomobil RC komaj premika naprej, saj bo vozil prehitro, če bo pridobil preveč zagona.

Na sprednji del avtomobila RC je dodan detektor za preprečevanje trkov, ki zazna, ali je pot naprej čista ali blokirana. Če je blokiran, se avtomobil z daljinskim upravljalnikom ustavi, dokler ovira ne odide/odstrani. Analogni signal detektorja se uporablja za ugotavljanje, ali nekaj ovira pot ali ne, in je merilo, da se lahko premikamo naprej in ustavimo.

Sekundarni senzor sive lestvice, "Room Detector", se uporablja za zaznavanje, v katero sobo je vstopil avtomobil RC. Deluje na podobnem principu kot detektor črte, vendar ne išče spremembe med svetlobo in temo, temveč vrednosti znotraj določenega območja, ki ustreza različnim sobam, odvisno od vrednosti, ki jo vidite iz detektorja prostora.

Nazadnje program iz senzorjev ustvari niz informacij, ki jih modul WiFi prebere in nato pošlje posredniku MQTT. Vrstica informacij je ustvarjena kot niz in zapisana v ustrezno serijo, na katero je priključen modul WiFi. Pomembno je, da se pisanje v serijo dogaja le tolikokrat, kolikor lahko modul WiFi prebere dohodno sporočilo, vendar ne pozabite uporabiti nobenih zamud v tej kodi, saj bo to oviralo sposobnost avtomobila RC, da sledi liniji. Namesto tega uporabite "millis", ker bo omogočilo, da se program zažene brez odlašanja, vendar bo po preteku določene količine milis od vklopa Arduina zapisal sporočilo v serijo, ne da bi blokiral kodo, tako kot zakasnitev.

Koda za Arduino Mega 2560:

6. korak: Baza podatkov MySQL

WampServer je spletno razvojno okolje za Windows, ki nam omogoča ustvarjanje aplikacij s PHP in bazo podatkov MySQL. PhpMyAdmin nam omogoča enostavno upravljanje podatkovnih baz.

Za začetek pojdite na:

V tem projektu uporabljamo različico 3.17 x64 bitov za Windows. Po namestitvi se prepričajte, da vse storitve delujejo, kar pomeni, da majhna ikona postane zelena namesto rdeče ali oranžne. Če je ikona zelena, lahko dostopate do PhpMyAdmin za upravljanje baze podatkov MySQL.

Dostopajte do MySQL z uporabo PhpMyAdmin in ustvarite novo bazo podatkov. Poimenujte ga nekaj primernega, česar se spomnite, v tem projektu se je imenoval “line_follow_log”. Ko ustvarite bazo podatkov, morate v zbirki podatkov ustvariti tabelo. Prepričajte se, da število stolpcev ustreza. V projektu uporabljamo 4 stolpce. En stolpec je za časovni žig, zadnji trije pa se uporabljajo za shranjevanje podatkov iz vozila. Za vsak stolpec uporabite ustrezen podatkovni tip. Za stolpec časovnega žiga smo uporabili "longtext", za ostalo pa "mediumtext".

To bi moralo biti vse, kar morate storiti v PhpMyAdmin in MySQL. Zapomnite si svojo bazo podatkov in tabelo za razdelek o Node-Red.

7. korak: Node-Red

Za zbiranje podatkov bomo uporabili dokaj preprost tok v Node-red. Poveže se z našim strežnikom MQTT in zapiše v našo bazo podatkov MYSQL.

Če želite to narediti, potrebujemo nekaj palet za delovanje različnih funkcij, za izvajanje pa potrebujemo nekaj dejanske kode.

Najprej najprej. Potrebovali bomo naslednje palete.

Node-red-contrib-mqtt-broker: To je povezava z našim posrednikom MQTT.

Node-red-armaturna plošča: Naša nadzorna plošča, potrebna za vizualno predstavitev zbranih podatkov.

Node-red-node-mysql: Naša povezava z bazo podatkov SQL.

To ni mišljeno kot popoln vodnik do Node-red, vendar bom razložil, kaj počne tok Node-red.

Na začetku smo imeli težave z izbranim strežnikom MQTT, ki je navidezno naključno umrl/prekinil, zaradi česar so bile kakršne koli spremembe frustrirajoče, saj ni bilo jasno, ali so bile spremembe koristne ali ne, ko nismo videli rezultata. Torej gumb 'Ali je strežnik umrl?' vbrizga 'Ne', naslednji blok pa ga vstavi v naš strežnik MQTT. Če ni mrtev, se v oknu za odpravljanje napak prikaže 'Ne'. To se naredi ne samo za testiranje, ampak tudi za prisilitev Node-red, da se poskuša znova povezati s strežnikom MQTT.

"Testni niz" posreduje posredniku MQTT niz stroškov. Ta niz smo oblikovali tako, da je podoben tistemu, kar bi dobili od Arduina. Tako je bilo lažje konfigurirati omrežje, ki dekodira sporočila, ne da bi bilo treba izvajati projekt in zbirati podatke.

Zadnji tok v delovnem prostoru lahko razdelimo na dva segmenta. Spodnja veja preprosto prebere prihajajoča sporočila, jih objavi v oknu za odpravljanje napak in jih shrani na strežnik SQL.

Veliko omrežje povezanih stikal, ki sledijo vozlišču funkcij, če se zgodi prava "čarovnija".

Nadaljevalna funkcija prebere dohodni niz, ga razdeli z vsakim podpičjem in razdeli odseke na vsakem od izhodov. Naslednja stikala iščejo enega od dveh različnih vhodnih podatkov. En poseben podatek vedno preide iz enega izhoda, druga možnost zapusti drugi izhod. Sledi druga skupina stikalnih blokov. Aktivirali se bodo le z enim določenim vnosom in oddali nekaj drugega.

Na primer, "ovira", tako kot vse druge, je binarna izbira, ali je jasno, ali se ne vozi. Tako bo prejel 0 ali 1. A 0 bo poslano v "čisto" vejo, 1 bo poslano v vejo "Obstructed". Stikala 'Počisti', 'Obstructed', če so aktivirana, bodo oddala nekaj posebnega, Clear ali ovirano. Zeleni nadaljevalni bloki bodo objavljeni v oknu za odpravljanje napak, modri pa bodo pisali na našo nadzorno ploščo.

Podružnici „status“in „location“delujeta popolnoma enako.

8. korak: posrednik MQTT

Posrednik je strežnik, ki preusmerja sporočila od strank do ustreznih ciljnih odjemalcev. Posrednik MQTT je tisti, pri katerem odjemalci uporabljajo knjižnico MQTT za povezavo z posrednikom po omrežju.

Za ta projekt smo ustvarili posrednika MQTT s storitvijo CloudMQTT z brezplačno naročnino na različico "Cute Cat". Ima svoje omejitve, vendar jih v tem projektu ne presegamo. Modul WiFi se lahko poveže s posrednikom, posrednik pa nato preusmeri sporočila do ustreznega ciljnega odjemalca. V tem primeru je odjemalec naše Node-Red. Storitev CloudMQTT nastavi uporabniško ime in geslo za svoj strežnik, zato smo zagotovljeni večja varnost. V bistvu pomeni, da lahko samo tisti z uporabniškim imenom in geslom dostopajo do te posebne storitve CloudMQTT. Uporabniško ime in geslo sta ključnega pomena pri vzpostavljanju povezave na kodi ESP8266 in Node-Red.

Trenutna statistika sporočil, ki jih posrednik prejme, je prijetna funkcija, s katero lahko vidite, kako dobro vaš naročninski načrt obravnava informacije, ki jih posreduje.

Lepa lastnost je možnost pošiljanja sporočil od posrednika v modul WiFi, vendar teh v tem projektu nismo uporabili.

9. korak: Hobi elektronika

Preden smo začeli, smo iz preteklega projekta vedeli, da je servo krmiljenje na zalogi mogoče krmiliti z Arduina s PWM signalom, ki ima podobno ožičenje in se priključi na različne kanale na istem založniškem radijskem sprejemniku, smo predpostavili elektronski nadzor hitrosti (ESC iz zdaj), ki upravlja motor, bi lahko podobno upravljali prek PWM iz Arduina.

Za preizkus te teorije naredimo majhno skico Arduino. Skica bere analogni vhod s potenciometra, ponovno preslika vrednost od 0, 1024 do 0, 255 in iznese nastalo vrednost na pin PWM, z uporabo analogWrite (), medtem ko je imel avto R/C na majhni škatli in je imel kolesa odstranjena.

Potem ko smo prečkali obseg merilnika loncev, se je zdelo, da se je ESC "prebudil" in smo ga lahko dušili navzgor in navzdol, prav tako smo imeli Arduino natisniti vrednosti v serijsko povezavo, da smo jih lahko spremljali.

Zdi se, da ESC ne mara vrednosti pod določenim pragom, v tem primeru 128. Signal 191 je videl kot nevtralni plin, 255 pa je bil največji plin.

Hitrosti vozila nam ni bilo treba spreminjati in popolnoma smo ga imeli pri najnižji hitrosti, zaradi katere se je lahko premikal. 192 je bila najnižja vrednost, ki bi obrnila motor, vendar moramo še sestaviti vse in nismo prepričani, ali bi ta moč zadostovala za premik vozila po končni montaži, vendar bi bilo treba vnos nekoliko večje vrednosti zanemariti.

Izogibanje potenciometru in vnos fiksne vrednosti v kodo pa ni delovalo. Zaloga ESC je preprosto utripala in ne bi zavrtela motorja, 'prilagodite nastavitev plina' v skladu z navodili.

Jezno odpravljanje težav, metanje različnih vrednosti nanj, uporaba različnih žic in celo eksperimentiranje s spreminjanjem frekvence PWM, ki jo uporablja Arduino, je povzročilo več čudnosti.

Zdelo se je, da je to vmesno vprašanje, včasih je teklo, drugič pa ni hotel storiti ničesar. Enostavno je še naprej utripalo. Test s prvotnim krmilnikom in sprejemnikom je potrdil, da ESC še vedno deluje točno tako, kot je bilo predvideno, zaradi česar so bila vprašanja še bolj nenavadna. Višje vrednosti je prezrl in utripal, nižje vrednosti pa je ESC spet zasijal v veselo zeleno, a se vseeno ni obrnil.

Kaj se je razlikovalo od nastavitve s potenciometrom ali oddajnikom in sprejemnikom zalog ter različico, ki je zagotavljala fiksne vrednosti?

Včasih delo, kot je bilo predvideno, in delo po pričakovanjih se v resnici ne prekrivajo veliko z Vennovim diagramom. V tem primeru kot igrača ne bi smelo biti možnosti, da bi model ob vklopu modela preprosto vzel ali zlomil prste ali ujel lase v kolesa ali pogon, tudi če je na primer čudno držanje oddajnika prižgano. kateri koli drug položaj razen nevtralnega.

"Prilagodite obroček za plin", to točno to pomeni. ESC pričakuje nevtralen signal, ko se vklopi, preden ugotovi, da ne bo naredil nič. Običajno bi bil oddajnik vedno v nevtralnem položaju, ko je vklopljen ESC, od tam pa bi z veseljem vozil. V primeru, da ni, se je verjetno vsaj enkrat vrnil v nevtralni položaj, ko je model trdno na tleh in se operater počuti pripravljenega za dirko.

Med uporabo potenciometra smo "pometali" po razponih, nato pa bi začel delovati. Enostavno se je oborožil, ko je potenciometer pritekel mimo nevtralnega položaja, nato pa je deloval.

Nižji razponi pa so vseeno zdeli, da ESC niso všeč. Izkazalo se je, da je rezultat delovnih ciklov PWM.

Načrtovano ali iz tehničnih razlogov servo krmiljenje in ESC prezreta signale pod 50% delovnih ciklov. To je lahko v primeru, če sprejemnik/oddajnik preneha delovati ali mu zmanjka energije, bi se model vrnil v nevtralni položaj in ne bi vzletel v daljavo s polnim vzvodom. Servo se prav tako vrti le za 180 stopinj in ne potrebuje celotnega razpona.

S tem novim znanjem v roki je nastala nova skica Arduino. Začetna različica sprejema nize, vnesene v serijski monitor, ga pretvori v celo število in ga s pomočjo knjižnice servo in write ()*premakne na pin PWM. Če je v serijski monitor vnesena nova vrednost, se vrednost write () posodobi.

Med preskušanjem je bil zaloga Traxxas ESC zamenjana z Mtroniks G2 Micro, vendar bi morale delovati enako, čeprav so lahko natančne vrednosti nekoliko drugačne.

Ta knjižnica obravnava ESC kot servo, očitno je to v redu. Funkcija write () iz knjižnice Servo.h se giblje od 0 do 180, pričakovani signal aktiviranja naj bi bil okoli sredine.

Roke G2 Micro pri zapisu () v razponu vrednosti blizu 90, vendar je bilo težko določiti, saj se zdi, da se "spomni", da je bil oborožen.

Traxxas VXL-s3 naj bi se aktiviral pri zapisni () vrednosti 91.

Po signalu aktiviranja je ESC z veseljem sprejel signale PWM, ne glede na to, ali so funkcije Arduino poklicane za njihovo generiranje, in ustrezno upravlja motor.

Ko govorimo o funkcijah; standardni analogWrite (), kot tudi write () in writeMicroseconds () iz knjižnice Servo.h je mogoče uporabljati medsebojno, samo ne pozabite, kaj počne, in na koncu nič drugega kot delovni cikel ni pomembno. WriteMicroseconds () bi lahko uporabili, če je potrebna večja natančnost, vendar ne pozabite, da je razpon tukaj od 1000 do 2000, pri čemer naj bo aktiviranje ali "nevtralno" na 1500. Pri standardnem analogWrite () se pričakuje, da bo uporabno območje biti od 128 do 255, pri čemer je približno 191 nevtralnih.

Priporočena: