Përmbajtje:

Shkuarja Përtej StandardFirmata - Rishikuar: 5 Hapa
Shkuarja Përtej StandardFirmata - Rishikuar: 5 Hapa

Video: Shkuarja Përtej StandardFirmata - Rishikuar: 5 Hapa

Video: Shkuarja Përtej StandardFirmata - Rishikuar: 5 Hapa
Video: Gjera te Frikshme te Thena nga Astronautet • Fakte Interesante 2024, Nëntor
Anonim
Duke shkuar përtej StandardFirmata - Rishikuar
Duke shkuar përtej StandardFirmata - Rishikuar

Pak më parë, unë u kontaktova nga Dr. Martyn Wheeler, një përdorues i pymata4, për udhëzime në shtimin e mbështetjes për sensorin e Lagështisë/Temperaturës DHT22 në bibliotekën pymata4. Biblioteka pymata4, së bashku me homologun e saj Arduino, FirmataExpress, u lejon përdoruesve të kontrollojnë dhe monitorojnë pajisjet e tyre Arduino nga distanca. Brenda disa raundeve të shkëmbimeve të postës elektronike, Dr. Wheeler ishte i suksesshëm në modifikimin e të dy pymata4 dhe FirmataExpress. Si rezultat, mbështetja për sensorët DHT22 dhe DHT11 tani është një pjesë standarde e pymata4 dhe FirmataExpress.

Në maj të vitit 2014, unë shkrova një artikull për shtimin e mbështetjes në Firmata për pajisje shtesë. Duke reflektuar mbi atë artikull I, kuptova se sa shumë ka ndryshuar që kur mora stilolapsin në letër për atë artikull. Përveç këtij artikulli, Dr. Wheeler dokumentoi përpjekjet e tij, dhe ju mund të dëshironi ta kontrolloni atë gjithashtu.

FirmataExpress bazohet në StandardFirmata, dhe struktura e drejtorisë StandardFirmata ka evoluar. Për më tepër, pymata4 API është gjithashtu shumë e ndryshme nga PyMata API origjinale e vitit 2014. Mendova se kjo do të ishte koha e përsosur për të rishqyrtuar dhe përditësuar atë artikull. Duke përdorur punën e Dr. Wheeler si bazë, le të eksplorojmë se si të zgjerojmë funksionalitetin e pymata4/FirmataExpress.

Para se të fillojmë - Disa informacione në lidhje me Arduino/Firmata

Pra, çfarë është Firmata? Duke cituar nga faqja e internetit e Firmata, "Firmata është një protokoll i përgjithshëm për komunikimin me mikrokontrolluesit nga softueri në një kompjuter pritës."

Arduino Firmata përdor një ndërfaqe serike për të transportuar informacionin e komandës dhe raportimit midis një mikrokontrolluesi Arduino dhe një PC, zakonisht duke përdorur një lidhje seriale/USB të vendosur në 57600 bps. Të dhënat e transferuara në këtë lidhje janë binare dhe protokolli zbatohet në një model klienti/serveri.

Ana e serverit ngarkohet në një mikrokontrollues Arduino në formën e një skice Arduino. Skica StandardFirmata, e përfshirë me Arduino IDE, kontrollon kunjat Arduino I/O, siç komandohet nga klienti. Ai gjithashtu raporton ndryshimet e pinit të hyrjes dhe informacione të tjera të raportit përsëri tek klienti. FirmataExpress është një version i zgjeruar i StandardFirmata. Shkon me një shpejtësi lidhëse serike prej 115200 bps.

Klienti Arduino i përdorur për këtë artikull është pymata4. Shtë një aplikacion Python që ekzekutohet në një PC. Ai dërgon komanda dhe merr raporte nga serveri Arduino. Për shkak se pymata4 zbatohet në Python, funksionon në kompjuterët Windows, Linux (përfshirë Raspberry Pi) dhe kompjuterët macOS.

Pse të përdorni Firmata?

Mikrokontrolluesit Arduino janë pajisje të mrekullueshme të vogla, por burimet e procesorit dhe kujtesës janë disi të kufizuara. Për aplikacionet që janë me procesor ose memorje intensive, shpesh ka pak zgjedhje, përveçse të shkarkosh kërkesën e burimeve në një PC që aplikacioni të jetë i suksesshëm.

Por kjo nuk është arsyeja e vetme për përdorimin e StandardFirmata. Kur zhvilloni aplikacione më të lehta Arduino, një kompjuter mund të ofrojë mjete dhe aftësi të korrigjimit që nuk janë të disponueshme drejtpërdrejt në një mikrokontrollues Arduino. Përdorimi i një klienti dhe serveri "të fiksuar" ndihmon në kufizimin e kompleksitetit të aplikacionit në një kompjuter, i cili menaxhohet më lehtë. Pasi të jetë përsosur aplikacioni, mund të përkthehet në një skicë të personalizuar, të pavarur Arduino.

Pse të përdorni pymata4?

Duke qenë autori i saj, natyrisht, unë jam i njëanshëm. Duke u thënë kështu, është i vetmi klient Firmata me bazë Python që është mirëmbajtur vazhdimisht gjatë disa viteve të fundit. Ofron një API intuitive dhe të lehtë për t’u përdorur. Përveç skicave të bazuara në StandardFirmata, Ai mbështet Firmata përmes WiFi për pajisje si ESP-8266 kur përdorni skicën StandardFirmataWifI.

Gjithashtu, pymata4 u krijua për t'u zgjeruar lehtësisht nga një përdorues për të mbështetur sensorë dhe aktivizues shtesë që aktualisht nuk mbështeten nga StandardFirmata.

Hapi 1: Kuptimi i Protokollit të Firmatës

Kuptimi i Protokollit të Firmatës
Kuptimi i Protokollit të Firmatës

Protokolli i komunikimit Arduino Firmata rrjedh nga protokolli MIDI, i cili përdor një ose më shumë bajtë 7-bit për të përfaqësuar të dhënat.

Firmata u krijua për t'u zgjeruar nga përdoruesi. Mekanizmi që siguron këtë shtrirje është protokolli i mesazheve System Exclusive (SysEx).

Formati i një mesazhi SysEx, siç përcaktohet nga Protokolli i Firmata, është treguar në ilustrimin e mësipërm. Fillon me një bajt START_SYSEX me një vlerë fikse hexadecimal 0xF0, dhe pasohet nga një bajt komandues unik SysEx. Vlera e bajtit të komandës duhet të jetë në rangun e hexadecimal 0x00-0x7F. Bajti i komandës ndiqet nga një numër i paspecifikuar i bajtëve të të dhënave 7-bit. Së fundi, mesazhi përfundon me një bajt END_SYSEX, me një vlerë fikse prej hexadecimal 0xF7.

Kodimi/Dekodimi i të Dhënave Firmata

Meqenëse pjesa e të dhënave të përdoruesit të një mesazhi SysEx përbëhet nga një seri bajtësh 7-bit, mund të pyesni veten se si një përfaqëson një vlerë më të madhe se 128 (0x7f)? Firmata i kodon ato vlera duke i çmontuar ato në copa të shumta byte 7-bit para se të dhënat të shpërndahen në lidhjen e të dhënave. Bajti më pak i rëndësishëm (LSB) i një artikulli të dhënash dërgohet së pari, i ndjekur nga komponentët gjithnjë e më të rëndësishëm të artikullit të të dhënave sipas konventës. Bajti më domethënës (MSB) i artikullit të të dhënave është zëri i fundit i të dhënave i dërguar.

Si punon kjo?

Le të themi se dëshirojmë të përfshijmë një vlerë 525 në pjesën e të dhënave të një mesazhi SysEx. Meqenëse një vlerë prej 525 është qartë më e madhe se një vlerë prej 128, ne duhet ta ndajmë ose ta çmontojmë atë në "copa" të bajtit 7-bit.

Ja si bëhet kjo.

Vlera 525 në numër dhjetor është ekuivalente me vlerën heksadecimal të 0x20D, një vlerë 2-bajtësh. Për të marrë LSB, ne maskojmë vlerën duke e AND'ing atë me 0x7F. Të dy zbatimet "C" dhe Python janë treguar më poshtë:

// Implementimi "C" për të izoluar LSB

int max_distance_LSB = max_distanca & 0x7f; // maskoni bajtin më të ulët # Zbatimi Python për të izoluar LSB max_distance_LSB = max_distance & 0x7F # maskoni bajtin më të ulët

Pas maskimit, max_distance_LSB do të përmbajë 0x0d. 0x20D & 0x7F = 0x0D.

Tjetra, ne duhet të izolojmë MSB për këtë vlerë 2-bajtësh. Për ta bërë këtë, ne do të zhvendosim vlerën e 0x20D në të djathtë, 7 vende.

// Implementimi "C" për të izoluar MSB me vlerë 2 bajt

int max_distance_MSB = max_distanca >> 7; // zhvendos bajtin e rendit të lartë # Zbatimi i Python për të izoluar MSB me vlerë 2 bajt max_distance_MSB = max_distance >> 7 # shift për të marrë bajtin e sipërm Pas zhvendosjes, max_distance_MSB do të përmbajë një vlerë prej 0x04.

Kur merren të dhënat e grumbulluara "të copëzuara", ato duhet të mblidhen në një vlerë të vetme. Këtu është se si të dhënat mblidhen si në "C" ashtu edhe në Python

// Implementimi "C" për të rimbledhur 2 bajtët, // Vlerat 7 bit në një vlerë të vetme int max_distance = argv [0] + (argv [1] << 7); Implementimi # Python për të rimbledhur vlerat 2 bajt, # 7 bit në një vlerë të vetme max_distance = të dhëna [0] + (të dhëna [1] << 7)

Pas montimit, vlera edhe një herë është e barabartë me 525 dhjetore ose hexadecimal 0x20D.

Ky proces çmontimi/montimi mund të kryhet nga klienti ose serveri.

Hapi 2: Le të Fillojmë

Mbështetja e një pajisjeje të re kërkon ndryshime si në serverin rezident Arduino ashtu edhe në klientin Python rezident të PC. Puna e Dr. Wheeler do të përdoret për të ilustruar modifikimet e nevojshme.

Ndoshta hapi më i rëndësishëm është të vendosni nëse dëshironi të integroni një bibliotekë të pajisjeve mbështetëse ekzistuese në anën Arduino të ekuacionit ose të shkruani tuajin. Rekomandohet që nëse mund të gjeni një bibliotekë ekzistuese, është shumë më e thjeshtë ta përdorni atë sesa të shkruani tuajën nga e para.

Për mbështetjen e pajisjes DHT, Dr. Wheeler e bazoi kodin e tij të zgjerimit në bibliotekën DHTNew. Me shumë zgjuarsi, Dr. Wheeler ndau funksionalitetin e bibliotekës DHTNew në anët Arduino dhe pymata4 të ekuacionit për të siguruar bllokim minimal në anën Arduino.

Nëse shikojmë DHTNew, ai kryen të gjitha sa vijon:

  • Cakton modalitetin e daljes dixhitale të zgjedhur pin.
  • Paraqet një sinjal të koduar për të marrë vlerat më të fundit të lagështisë dhe temperaturës.
  • Kontrollon dhe raporton çdo gabim.
  • Llogarit vlerat e temperaturës dhe lagështisë të lexueshme nga njerëzit nga të dhënat e papërpunuara të marra.

Për t'i mbajtur gjërat sa më efikase në anën e FirmataExpress, Dr. Wheeler shkarkoi rutinat e konvertimit të të dhënave nga Arduino në pymata4.

Hapi 3: Modifikimi i FirmataExpress për Mbështetjen DHT

Pema e Drejtorisë FirmataExpress

Më poshtë janë të gjithë skedarët që përbëjnë depon FirmataExpress. Kjo pemë është identike me atë të StandardFiramata, vetëm se disa nga emrat e skedarëve pasqyrojnë emrin e depove.

Skedarët që kanë nevojë për modifikim janë ato që kanë një yll (*) pranë tyre.

FirmataExpress

├── * Bordet.h

├── shembuj

Irm └── FirmataExpress

├── ├── bordx

├── * FirmataExpress.ino

IC ├── LICENCA.txt

Makefile

├── * FirmataConstants.h

├── * FirmataPërcakton.h

FirmataExpress.cpp

FirmataExpress.h

FirmataMarshaller.cpp

FirmataMarshaller.h

├── FirmataParser.cpp

└── FirmataParser.h

Le të shikojmë secilën prej skedarëve dhe ndryshimet që janë bërë.

Bordet.h

Ky skedar përmban përkufizime makro të tipit pin për secilin nga llojet e bordit të mbështetur. Përcakton numrin maksimal të pajisjeve të mbështetura kur duhet të mbështeten më shumë se një pajisje.

Për pajisjen DHT, deri në 6 pajisje mund të lidhen njëherësh dhe kjo vlerë përcaktohet si:

#ifndef MAX_DHTS

#përcakto MAX_DHTS 6 #endif

Gjithashtu, makrot e tipit pin mund të përcaktohen sipas dëshirës për pajisjen e re, ose për të gjitha llojet e bordeve ose vetëm ato që janë me interes për ju. Këto makro përdoren kryesisht për qëllime raportimi dhe nuk përdoren për kontrollin e pajisjeve. Këto makro përcaktojnë të dy kunjat që mbështesin pajisjen:

#përcakto IS_PIN_DHT (p) (IS_PIN_DIGITAL (p) && (p) - 2 <MAX_DHTS)

Si dhe një makro për të përcaktuar një konvertim të numrit pin.

#përcakto PIN_TO_DHT (p) PIN_TO_DIGITAL (p)

FirmataConstants.h

Ky skedar përmban numrin e versionit të firmuerit, të cilin mund të dëshironi ta modifikoni për të mbajtur shënim se cilin version e keni ngarkuar në Arduino tuaj. Ai gjithashtu përmban vlerat e mesazheve Firmata, duke përfshirë mesazhet Firmata SysEx.

Ju do të duhet të caktoni një mesazh të ri ose një grup mesazhesh për pajisjen tuaj në këtë skedar. Për DHT, dy mesazhe u shtuan. Njëra konfiguron një kunj si një kunj "DHT", dhe tjetra, si një mesazh reporteri, kur i dërgon të dhënat më të fundit DHT përsëri klientit.

konstant statik në DHT_CONFIG = 0x64;

konstant statik int DHT_DATA = 0x65;

Mënyrat e pin janë specifikuar gjithashtu në këtë skedar. Për DHT, u krijua një mënyrë e re pin:

konstant statik PIN_MODE_DHT = 0x0F; // pin i konfiguruar për DHT

Kur shtoni një modalitet të ri pin, TOTAL_PIN_MODES duhet të rregullohen:

konstant statik në TOTAL_PIN_MODES = 17;

FirmataPërcakton.h

Ky skedar duhet të përditësohet për të pasqyruar mesazhet e reja të shtuara në FirmataConstants.h:

#ifdef DHT_CONFIG # UNDEF DHT_CONFIG #endif #define DHT_CONFIG firmata:: DHT_CONFIG // kërkesë DHT #ifdef DHT_DATA #undef DHT_DATA #endif #define DHT_DATA firmata:: DHT_DATA // DHT përgjigjeni #ifdef PIN_MODE_DHT #undef PIN_MODE_DHT #endif #define PIN_MODE_DHT firmata:: PIN_MODE_DHT

FirmataExpress.ino

Në këtë diskutim, ne do të mbulojmë "pikat e larta" të ndryshimeve të bëra në këtë skicë Arduino.

Në mënyrë që FirmataExpress të mbështesë deri në gjashtë pajisje DHT njëkohësisht, u krijuan 3 vargje për të mbajtur gjurmët e secilit prej numrave të lidhur të pajisjes, vlerën e saj WakeUpDelay dhe llojin e pajisjes, domethënë DHT22 ose DHT11:

// sensorë DHT

int numActiveDHTs = 0; // numri i DHT -ve të bashkangjitura uint8_t DHT_PinNumbers [MAX_DHTS]; uint8_t DHT_WakeUpDelay [MAX_DHTS]; uint8_t DHT_TYPE [MAX_DHTS];

Meqenëse të dy llojet e pajisjeve kërkojnë afërsisht 2 sekonda midis leximeve, duhet të sigurohemi që secilin DHT ta lexojmë vetëm një herë në harkun kohor prej 2 sekondash. Disa pajisje, të tilla si pajisjet DHT dhe sensorët e distancës HC-SR04, arrihen vetëm periodikisht. Kjo u jep atyre kohë për të bashkëvepruar me mjediset e tyre.

uint8_t tjetërDHT = 0; // indeksoni në dht për pajisjen tjetër që do të lexohet

uint8_t aktualeDHT = 0; // Mban shënime se cili sensor është aktiv. int dhtNumLoops = 0; // Numri i synuar i herëve përmes lakut b4 për të hyrë në një DHT int dhtLoopCounter = 0; // Numëruesi i lakut

Konfigurimi dhe leximi i pajisjes DHT

Kur FirmataExpress merr një komandë SysEx për të konfiguruar një pin për funksionimin DHT, ai verifikon që numri maksimal i pajisjeve DHT nuk është tejkaluar. Nëse DHT e re mund të mbështetet, vargjet DHT azhurnohen. Nëse lloji DHT është i panjohur, krijohet një mesazh vargu SysEx dhe transmetohet përsëri në pymata4

rasti DHT_CONFIG: int DHT_Pin = argv [0]; int DHT_type = argv [1]; if (numActiveDHTs <MAX_DHTS) {if (DHT_type == 22) {DHT_WakeUpDelay [numActiveDHTs] = 1; } tjetër nëse (DHT_type == 11) {DHT_WakeUpDelay [numActiveDHTs] = 18; } else {Firmata.sendString ("GABIM: LLOJI I SENSORIT TK PANJOHUR, SENSORST E VLERS JAN 11 11, 22"); pushim; } // testoni sensorin DHT_PinNumbers [numActiveDHTs] = DHT_Pin; DHT_TYPE [numActiveDHTs] = lloji DHT_; setPinModeCallback (DHT_Pin, PIN_MODE_DHT);

FirmataExpress pastaj përpiqet të komunikojë me pajisjen DHT. Nëse ka ndonjë gabim, ai formon një mesazh SysEx me të dhënat e gabimit dhe dërgon mesazhin SysEx përsëri te pymat4. Ndryshorja _bits mban të dhënat e kthyera nga pajisja DHT për përpunim shtesë nga pymata4 nëse dëshironi.

Firmata.write (START_SYSEX);

Firmata.shkruaj (DHT_DATA); Firmata.shkruaj (DHT_Pin); Firmata.shkruaj (lloji DHT_); për (uint8_t i = 0; i> 7 & 0x7f); } Firmata.shkruaj (abs (rv)); Firmata.shkruaj (1); Firmata.shkruaj (END_SYSEX);

Nëse të dhënat e vlefshme kthehen, numri i DHT -ve aktive rritet. Një ndryshore që mban gjurmët e sa përsëritjeve të lakut për të përfunduar para se të kontrolloni DHT -në e ardhshme për të dhënat është gjithashtu e rregulluar. Ky variabël siguron që pa marrë parasysh sa DHT -të i shtohen sistemit, të gjitha do të lexohen brenda një periudhe 2 sekondëshe.

int rv = readDhtSensor (numActiveDHTs);

nëse (rv == DHTLIB_OK) {numActiveDHTs ++; dhtNumLoops = dhtNumLoops / numActiveDHTs; // gjithcka ne rregull}

Nëse një ose më shumë pajisje DHT janë konfiguruar në funksionin e lakut të skicës, atëherë pajisja tjetër DHT lexohet. Ose të dhënat e vlefshme ose statusi i gabimit të tij kthehen në pymata4 në formën e një mesazhi SysEx:

if (dhtLoopCounter ++> dhtNumLoops) {if (numActiveDHTs) {int rv = readDhtSensor (nextDHT); uint8_t aktuale_pin = DHT_PinNumbers [nextDHT]; uint8_t lloji aktual = DHT_TYPE [nextDHT]; dhtLoopCounter = 0; aktualeDHT = tjetraDHT; if (nextDHT ++> = numActiveDHTs - 1) {nextDHT = 0; } if (rv == DHTLIB_OK) {// TEST CHECKSUM uint8_t shuma = _bits [0] + _bits [1] + _bits [2] + _bits [3]; nëse (_bit [4]! = shuma) {rv = -1; }} // dërgoni mesazhin përsëri me një status gabimi Firmata.write (START_SYSEX); Firmata.shkruaj (DHT_DATA); Firmata.shkruaj (kunja aktuale]; Firmata.shkruaj (lloji aktual); për (uint8_t i = 0; i <sizeof (_bits) - 1; ++ i) {Firmata.write (_bits ); // Firmata.write (_bits ;} Firmata.write (abs (rv)); Firmata.write (0); Firmata.write (END_SYSEX);}}

Kodi i përdorur për të komunikuar me pajisjen DHT rrjedh drejtpërdrejt nga biblioteka DHTNew:

int readDhtSensor (int index) {

// INIT BUFFERVAR P TOR TEC MARR T DHNA uint8_t mask = 128; uint8_t idx = 0; // BUFFER BASHKIM // memset (_bits, 0, sizeof (_bits)); për (uint8_t i = 0; i 5 BYTES për (uint8_t i = 40; i! = 0; i--) {loopCnt = DHTLIB_TIMEOUT; ndërsa (digitalRead (pin) == LOW) {if (--loopCnt == 0) kthe DHTLIB_ERROR_TIMEOUT;} uint32_t t = mikros (); loopCnt = DHTLIB_TIMEOUT; ndërsa (digitalRead (pin) == LART {if (--loopCnt == 0) kthe DHTLIB_ERROR_TIMEOUT;} nëse ((mikros ()-t) 40) {_bits [idx] | = maskë;} maskë >> = 1; nëse (maskë == 0) // bajti tjetër? {Mask = 128; idx ++;}} kthehu DHTLIB_OK;}

Hapi 4: Modifikimi i Pymata4 për Mbështetjen DHT

konstantet_private.h

Për të mbështetur DHT, ne duhet të shtojmë mesazhe të rinj të tipit pin dhe SysEx në këtë skedar:

# modet pin INPUT = 0x00 # pin i vendosur si hyrje OUTPUT = 0x01 # pin i vendosur si dalje ANALOG = 0x02 # pin analog në analog Mënyra e hyrjes PWM = 0x03 # pin dixhital në modalitetin e daljes PWM SERVO = 0x04 # pin dixhital në modalitetin e daljes Servo I2C = 0x06 # pin i përfshirë në konfigurimin e I2C STEPPER = 0x08 # çdo kunj në modalitetin stepper SERIAL = 0x0a PULLUP = 0x0b # Çdo pin në modalitetin tërheqës SONAR = 0x0c # Çdo pin në modalitetin SONAR TONE = 0x0d # Çdo pin në modalitetin e tonit PIXY = 0x0e # rezervuar për modalitetin e kamerës pixy DHT = 0x0f # sensor DHT IGNORE = 0x7f # DHT SysEx mesazhet e komandës DHT_CONFIG = 0x64 # dht komanda e konfigurimit DHT_DATA = 0x65 # dht përgjigje e sensorit

Lloji i shtuar i pin dhe komandat SysEx duhet të përputhen me vlerat në FirmataConstants.h të shtuara në FirmataExpress.

pymata4.py

Pymata4 përdor një fjalor Python për të lidhur shpejt një mesazh të firmës hyrëse me një mbajtës mesazhesh. Emri i këtij fjalori është report_dispatch.

Formati për një hyrje në fjalor është:

{MessageID: [mesazhuesi_, mesazhi i numrit të bajtëve që do të përpunohen]}

Një hyrje iu shtua fjalorit për të trajtuar mesazhet hyrëse DHT:

{PrivateConstants. DHT_DATA: [self._dht_read_response, 7]}

7 bajtët e të dhënave në mesazh janë numri pin pin Arduino, lloji i pajisjes DHT (22 ose 11) dhe 5 bajtët e të dhënave të papërpunuara.

Metoda _dht_read_response kontrollon për çdo gabim të raportuar. Nëse nuk ka gabime të raportuara, lagështia dhe temperatura llogariten duke përdorur algoritmin e portuar nga biblioteka Arduino DHTNew.

Vlerat e llogaritura raportohen përmes një metode të kthimit të telefonit të furnizuar nga përdoruesi. Ato gjithashtu ruhen në strukturën e brendshme të të dhënave pin_data. Vlera e fundit e raportuar mund të rikujtohet duke votuar pin_data duke përdorur metodën dht_read.

Konfigurimi i një pajisjeje të re DHT

Kur shtoni një pajisje të re DHT, quhet metoda set_pin_mode_dht. Kjo metodë përditëson të dhënat pin_ për kunjat dixhitale. Gjithashtu krijon dhe dërgon një mesazh DHT_CONFIG SysEx te FirmataExpress.

Hapi 5: Përfundimi

Siç e kemi parë, shtimi i mbështetjes Firmata për një pajisje të re kërkon që ju të modifikoni kodin e serverit Arduino FirmataExpress dhe kodin e klientit pymata4 me bazë Python. Kodi FirmataExpress mund të jetë sfidues për të korrigjuar gabimet. Një metodë e quajtur printData iu shtua FirmataExpress për të ndihmuar në korrigjimin. Kjo metodë ju lejon të dërgoni vlera të të dhënave nga FirmataExpress dhe do t'i printoni ato në tastierën pymata4.

Ky funksion kërkon një tregues në një varg karakteresh dhe vlerën që dëshironi të shihni. Nëse vlera e të dhënave përmbahet në një ndryshore të quajtur argc, mund të telefononi printData me parametrat e mëposhtëm.

printData ((char*) "argc =", argc);

Nëse keni ndonjë pyetje, thjesht lini një koment, dhe unë do të jem i lumtur t'ju përgjigjem.

Kodim i lumtur!

Recommended: