Orodha ya maudhui:

Kwenda Zaidi ya StandardFirmata - Iliyotazamwa tena: Hatua 5
Kwenda Zaidi ya StandardFirmata - Iliyotazamwa tena: Hatua 5

Video: Kwenda Zaidi ya StandardFirmata - Iliyotazamwa tena: Hatua 5

Video: Kwenda Zaidi ya StandardFirmata - Iliyotazamwa tena: Hatua 5
Video: Inside the MOST FUTURISTIC Motorhome With a SPACESHIP Interior! 2024, Julai
Anonim
Kwenda Zaidi ya StandardFirmata - Imetazamwa tena
Kwenda Zaidi ya StandardFirmata - Imetazamwa tena

Muda mfupi uliopita, niliwasiliana na Dk Martyn Wheeler, mtumiaji wa pymata4, kwa mwongozo wa kuongeza msaada kwa sensorer ya unyevu / joto ya DHT22 kwa maktaba ya pymata4. Maktaba ya pymata4, kwa kushirikiana na mwenzake wa Arduino, FirmataExpress, inaruhusu watumiaji kudhibiti na kufuatilia vifaa vyao vya Arduino kwa mbali. Ndani ya duru chache za kubadilishana barua pepe, Dk Wheeler alifanikiwa kurekebisha pymata4 na FirmataExpress zote mbili. Kama matokeo, msaada kwa sensorer za DHT22 na DHT11 sasa ni sehemu ya kawaida ya pymata4 na FirmataExpress.

Mnamo Mei wa 2014, niliandika nakala juu ya kuongeza msaada kwa Firmata kwa vifaa vya ziada. Kutafakari juu ya nakala hiyo, niligundua ni kiasi gani kimebadilika tangu nilipochukua kalamu kwenye karatasi ya nakala hiyo. Mbali na nakala hii, Dk Wheeler aliandika juhudi zake, na unaweza kutaka kuangalia hiyo pia.

FirmataExpress inategemea StandardFirmata, na muundo wa saraka ya StandardFirmata umebadilika. Kwa kuongezea, API ya pymata4 pia ni tofauti kidogo na PyMata API ya asili ya 2014. Nilidhani huu ungekuwa wakati mzuri wa kupitia tena na kusasisha nakala hiyo. Kutumia kazi ya Dk Wheeler kama msingi, wacha tuchunguze jinsi ya kupanua utendaji wa pymata4 / FirmataExpress.

Kabla hatujaanza - Habari zingine za Asili Kuhusu Arduino / Firmata

Kwa hivyo Firmata ni nini? Akinukuu kutoka kwa ukurasa wa wavuti wa Firmata, "Firmata ni itifaki ya kawaida ya kuwasiliana na watawala wadogo kutoka kwa programu kwenye kompyuta ya mwenyeji."

Arduino Firmata hutumia kielelezo cha serial kusafirisha amri zote na kuripoti habari kati ya mdhibiti mdogo wa Arduino na PC, kawaida kwa kutumia kiunga cha serial / USB kilichowekwa kwa 57600 bps. Takwimu zilizohamishwa kwenye kiunga hiki ni za kibinadamu, na itifaki hiyo inatekelezwa kwa mtindo wa mteja / seva.

Upande wa seva umepakiwa kwa mdhibiti mdogo wa Arduino kwa njia ya mchoro wa Arduino. Mchoro wa StandardFirmata, pamoja na Arduino IDE, hudhibiti pini za Arduino I / O, kama ilivyoamriwa na mteja. Pia inaripoti mabadiliko ya siri ya pembejeo na habari zingine za ripoti kurudi kwa mteja. FirmataExpress ni toleo lililopanuliwa la StandardFirmata. Inatembea kwa kasi ya kiunga cha serial cha 115200 bps.

Mteja wa Arduino anayetumiwa kwa kifungu hiki ni pymata4. Ni programu ya chatu inayotekelezwa kwenye PC. Inatuma amri na kupokea ripoti kutoka kwa seva ya Arduino. Kwa sababu pymata4 inatekelezwa katika Python, inaendesha Windows, Linux (pamoja na Raspberry Pi), na kompyuta za MacOS.

Kwa nini utumie Firmata?

Udhibiti mdogo wa Arduino ni vifaa vidogo vyema, lakini rasilimali za processor na kumbukumbu ni mdogo. Kwa programu ambazo ni processor au kumbukumbu kubwa, mara nyingi kuna chaguo kidogo isipokuwa kupakua mahitaji ya rasilimali kwenye PC ili programu ifanikiwe.

Lakini hiyo sio sababu pekee ya kutumia StandardFirmata. Wakati wa kukuza matumizi nyepesi ya Arduino, PC inaweza kutoa zana na uwezo wa utatuzi haupatikani moja kwa moja kwa mdhibiti mdogo wa Arduino. Kutumia mteja na seva "iliyosanikishwa" husaidia kuweka ugumu wa programu kwenye PC, ambayo inasimamiwa kwa urahisi zaidi. Mara tu programu itakapokamilika, inaweza kutafsiriwa katika mchoro wa kawaida wa Arduino.

Kwa nini utumie pymata4?

Kuwa mwandishi wake, kwa kweli, nina upendeleo. Hiyo inasemwa, ni mteja pekee wa Firmata mwenye msingi wa Python ambaye ameendelea kudumishwa kwa miaka kadhaa iliyopita. Inatoa API ya angavu na rahisi kutumia. Mbali na michoro ya StandardFirmata, Inasaidia Firmata juu ya WiFi kwa vifaa kama ESP-8266 wakati wa kutumia mchoro wa StandardFirmataWifI.

Pia, pymata4 ilibuniwa kupanuliwa kwa urahisi na mtumiaji kusaidia sensorer za ziada na watendaji ambao sasa hawaungwa mkono na StandardFirmata.

Hatua ya 1: Kuelewa Itifaki ya Firmata

Kuelewa Itifaki ya Firmata
Kuelewa Itifaki ya Firmata

Itifaki ya mawasiliano ya Arduino Firmata imetokana na itifaki ya MIDI, ambayo hutumia kaiti moja au zaidi ya 7-bit kuwakilisha data.

Firmata iliundwa kuwa inayoweza kutumiwa na mtumiaji. Utaratibu ambao hutoa upanaji huu ni Itifaki ya Kutuma Ujumbe ya Mfumo (SysEx).

Muundo wa ujumbe wa SysEx, kama inavyofafanuliwa na Itifaki ya Firmata, umeonyeshwa kwenye mfano hapo juu. Huanza na baiti ya START_SYSEX iliyo na thamani iliyowekwa ya hexadecimal 0xF0, na inafuatwa na baiti ya kipekee ya amri ya SysEx. Thamani ya baiti ya amri lazima iwe katika anuwai ya hexadecimal 0x00-0x7F. Baiti ya amri inafuatwa na idadi isiyojulikana ya ka data 7-bit. Mwishowe, ujumbe umekomeshwa na baiti ya END_SYSEX, na thamani iliyowekwa ya hexadecimal 0xF7.

Usimbuaji / Kusimba kwa Takwimu ya Firmata

Kwa kuwa sehemu ya data ya mtumiaji ya ujumbe wa SysEx ina safu ya ka 7-bit, unaweza kujiuliza ni vipi mtu anawakilisha thamani kubwa kuliko 128 (0x7f)? Firmata husimba maadili hayo kwa kuyasambaratisha katika vipande vingi vya baiti 7 kabla data haijashughulikiwa kwenye kiunga cha data. Baiti ndogo sana (LSB) ya kipengee cha data hutumwa kwanza, ikifuatiwa na vitu muhimu zaidi vya kipengee cha data kwa kusanyiko. Baiti muhimu zaidi (MSB) ya kipengee cha data ni kipengee cha mwisho cha data kilichotumwa.

Je! Hii Inafanyaje Kazi?

Wacha tuseme tunataka kuingiza thamani 525 katika sehemu ya data ya ujumbe wa SysEx. Kwa kuwa thamani ya 525 ni dhahiri kubwa kuliko thamani ya 128, tunahitaji kugawanya au kuisambaza katika "vipande" vya baiti 7.

Hivi ndivyo inavyofanyika.

Thamani ya 525 kwa decimal ni sawa na thamani ya hexadecimal ya 0x20D, thamani ya 2-byte. Ili kupata LSB, tunaficha dhamana kwa kuifanya na 0x7F. Utekelezaji "C" na Python zinaonyeshwa hapa chini:

Utekelezaji wa "C" kutenganisha LSB

int max_distance_LSB = upeo wa umbali & 0x7f; // ficha baiti ya chini # Utekelezaji wa chatu ili kutenganisha LSB max_distance_LSB = upeo wa umbali & 0x7F # ficha baiti ya chini

Baada ya kufunika, max_distance_LSB itakuwa na 0x0d. 0x20D & 0x7F = 0x0D.

Ifuatayo, tunahitaji kutenga MSB kwa thamani hii ya 2-byte. Ili kufanya hivyo, tutahamisha thamani ya 0x20D kwenda kulia, maeneo 7.

Utekelezaji wa "C" kutenganisha MSB ya thamani 2 ya baiti

int max_distance_MSB = upeo wa upeo >> 7; // songa utaratibu wa juu wa # # utekelezaji wa Python kwa isoloate MSB ya 2 byte value max_distance_MSB = max_distance >> 7 # shift to get the top byte Baada ya kuhama, max_distance_MSB itakuwa na thamani ya 0x04.

Wakati data "iliyokatwakatwa" ya marshaled inapopokelewa, inahitaji kukusanywa tena kuwa thamani moja. Hivi ndivyo data imekusanywa tena katika "C" na Python

Utekelezaji wa // "C" kukusanyika tena kwa baiti 2, // 7 maadili kidogo kwa thamani moja int max_distance = argv [0] + (argv [1] << 7); Utekelezaji wa chatu # kukusanya baiti 2, maadili # 7 kidogo kwa thamani moja max_distance = data [0] + (data [1] << 7)

Baada ya kuunda upya, thamani tena ni sawa na 525 decimal au 0x20D hexadecimal.

Utaratibu huu wa kutenganisha / kuunda upya unaweza kufanywa na mteja au seva.

Hatua ya 2: Wacha tuanze

Kusaidia kifaa kipya inahitaji mabadiliko kwa seva ya mkazi wa Arduino na mteja wa Python anayeishi PC. Kazi ya Dk Wheeler itatumika kuonyesha marekebisho muhimu.

Labda hatua muhimu zaidi ni kuamua ikiwa unataka kuingiza maktaba ya kifaa kinachounga mkono katika upande wa Arduino wa equation au andika yako mwenyewe. Inapendekezwa kwamba ikiwa unaweza kupata maktaba iliyopo, ni rahisi kuitumia kuliko kuandika yako mwenyewe kutoka mwanzo.

Kwa msaada wa kifaa cha DHT, Dk Wheeler aliweka nambari yake ya ugani kwenye maktaba ya DHTNew. Kwa ujanja sana, Dk Wheeler aligawanya utendaji wa maktaba ya DHTNew kote Arduino na pymata4 pande za equation ili kutoa kizuizi kidogo kwa upande wa Arduino.

Ikiwa tunaangalia DHTNew, inafanya yote yafuatayo:

  • Inaweka hali ya pato ya dijiti iliyochaguliwa.
  • Hufunga ishara iliyosimbwa ili kupata unyevu wa hivi karibuni na maadili ya joto.
  • Hukagua na kuripoti makosa yoyote.
  • Hukokotoa viwango vinavyoweza kusomwa vya joto na unyevu kutoka kwa data mbichi inayopatikana.

Ili kuweka vitu vizuri kadiri inavyowezekana kwa upande wa FirmataExpress, Dk Wheeler alipakua njia za ubadilishaji data kutoka Arduino hadi pymata4.

Hatua ya 3: Kurekebisha FirmataExpress kwa Usaidizi wa DHT

Mti wa Saraka ya FirmataExpress

Chini ni faili zote ambazo zinajumuisha Hifadhi ya FirmataExpress. Mti huu unafanana na ule wa Standardamataamata, kwa sababu tu majina mengine ya faili yanaonyesha jina la hazina.

Faili ambazo zinahitaji marekebisho ni zile zilizo na kinyota (*) karibu nao.

FirmataExpress

Ards * Bodi.h

├── mifano

└── └── FirmataExpress

├── ├── bodix

│ ├── * FirmataExpress.ino

│ ├── LESENI.txt

└── └── Tengeneza faili

F * FirmataConstants.h

F * FirmataDefines.h

├── FirmataExpress.cpp

├── FirmataExpress.h

├── FirmataMarshaller.cpp

├── FirmataMarshaller.h

├── FirmataParser.cpp

└── FirmataParser.h

Wacha tuangalie kila faili na mabadiliko ambayo yalifanywa.

Bodi.h

Faili hii ina ufafanuzi wa jumla wa aina ya pini kwa kila aina ya bodi inayoungwa mkono. Inafafanua idadi kubwa ya vifaa vinavyoungwa mkono wakati zaidi ya kifaa kimoja kinahitaji kuungwa mkono.

Kwa kifaa cha DHT, hadi vifaa 6 vinaweza kuunganishwa kwa wakati mmoja na thamani hii hufafanuliwa kama:

#fndef MAX_DHTS

#fafanua MAX_DHTS 6 # endif

Pia, macros ya aina ya pini yanaweza kufafanuliwa kwa hiari kwa kifaa kipya, iwe kwa aina zote za bodi au zile tu ambazo zinavutia kwako. Macro hizi hutumiwa zaidi kwa madhumuni ya kuripoti na hazitumiwi kudhibiti vifaa. Macro hizi hufafanua pini zote zinazounga mkono kifaa:

#fafanua IS_PIN_DHT (p) (IS_PIN_DIGITAL (p) && (p) - 2 <MAX_DHTS)

Pamoja na jumla kufafanua ubadilishaji wa nambari ya pini.

#fafanua PIN_TO_DHT (p) PIN_TO_DIGITAL (p)

FirmataConstants.h

Faili hii ina nambari ya toleo la firmware, ambayo unaweza kutaka kurekebisha ili kufuatilia toleo ambalo umepakia kwenye Arduino yako. Pia ina maadili ya ujumbe wa Firmata, pamoja na ujumbe wa Firmata SysEx.

Utahitaji kupeana ujumbe mpya au seti ya ujumbe kwa kifaa chako kwenye faili hii. Kwa DHT, jumbe mbili ziliongezwa. Moja husanidi pini kama pini ya "DHT", na nyingine, kama ujumbe wa mwandishi, wakati wa kutuma data ya hivi karibuni ya DHT kwa mteja.

tuli thabiti DHT_CONFIG = 0x64;

static const int DHT_DATA = 0x65;

Njia za pini pia zimeainishwa katika faili hii. Kwa DHT, hali mpya ya pini iliundwa:

static const int PIN_MODE_DHT = 0x0F; // pini iliyoundwa kwa DHT

Unapoongeza hali mpya ya pini, lazima TOTAL_PIN_MODES zibadilishwe:

tuli thabiti TOTAL_PIN_MODES = 17;

FirmataDefines.h

Faili hii lazima isasishwe ili kuonyesha ujumbe mpya ulioongezwa kwa FirmataConstants.h:

#ifdef DHT_CONFIG # undef DHT_CONFIG #endif # define DHT_CONFIG firmata:: DHT_CONFIG // DHT ombi #ifdef DHT_DATA #undef DHT_DATA #endif # define DHT_DATA firmata:: DHT_DATA // DHT kujibu #ifdef PIN_MODE_DHT #undef PIN_MODE_DHT #endif # define PIN_MODE_DHT firmata:: PIN_MODE_DHT

FirmataExpress.ino

Katika majadiliano haya, tutashughulikia "alama za juu" za mabadiliko yaliyofanywa kwa mchoro huu wa Arduino.

Ili FirmataExpress iweze kusaidia hadi vifaa sita vya DHT wakati huo huo, safu 3 ziliundwa ili kufuatilia kila nambari ya pini inayohusiana na kifaa, thamani yake ya WakeUpDelay, na aina ya kifaa, ambayo ni DHT22 au DHT11:

// Sensorer za DHT

int numActiveDHTs = 0; // nambari ya DHTs iliyounganishwa uint8_t DHT_PinNumbers [MAX_DHTS]; uint8_t DHT_WakeUpDelay [MAX_DHTS]; uint8_t DHT_TYPE [MAX_DHTS];

Kwa sababu aina zote za kifaa zinahitaji takriban sekunde 2 kati ya kusoma, tunahitaji kuhakikisha kuwa tunasoma kila DHT mara moja tu katika sura ya muda wa sekunde 2. Vifaa vingine, kama vile vifaa vya DHT na sensorer za umbali wa HC-SR04, hupatikana mara kwa mara. Hii inawapa wakati wa kuingiliana na mazingira yao.

uint8_t ijayoDHT = 0; // index katika dht kwa kifaa kinachofuata kusomwa

uint8_t sasaDHT = 0; // Inafuatilia ni sensor ipi inayofanya kazi. int dhtNumLoops = 0; // Nambari inayolengwa ya nyakati kupitia kitanzi b4 kufikia DHT int dhtLoopCounter = 0; // Kaunta ya kitanzi

Kusanidi na Kusoma Kifaa cha DHT

Wakati FirmataExpress inapokea amri ya SysEx kusanidi pini kwa operesheni ya DHT, inathibitisha kuwa idadi kubwa ya vifaa vya DHT haijazidi. Ikiwa DHT mpya inaweza kuungwa mkono, safu za DHT zinasasishwa. Ikiwa aina ya DHT haijulikani, ujumbe wa kamba ya SysEx huundwa na kupitishwa tena kwa pymata4

kesi DHT_CONFIG: int DHT_Pin = argv [0]; int DHT_type = argv [1]; ikiwa (numActiveDHTs <MAX_DHTS) {ikiwa (DHT_type == 22) {DHT_WakeUpDelay [numActiveDHTs] = 1; } vingine ikiwa (DHT_type == 11) {DHT_WakeUpDelay [numActiveDHTs] = 18; } mwingine {Firmata.sendString ("KOSA: AINA YA SENSOR ISIYOJULIKANA, SENSE ZA HALISI NI 11, 22"); kuvunja; } // jaribu sensorer DHT_PinNumbers [numActiveDHTs] = DHT_Pin; DHT_TYPE [numActiveDHTs] = Aina ya DHT_; kuwekaPinModeCallback (DHT_Pin, PIN_MODE_DHT);

FirmataExpress kisha inajaribu kuwasiliana na kifaa cha DHT. Ikiwa kuna makosa yoyote, huunda ujumbe wa SysEx na data ya makosa na kutuma ujumbe wa SysEx kwenye pymat4. Tofauti ya _bits inashikilia data iliyorudishwa na kifaa cha DHT kwa usindikaji wa ziada na pymata4 ikiwa inataka.

Firmata.andika (START_SYSEX);

Firmata.andika (DHT_DATA); Firmata.andika (DHT_Pin); Firmata.andika (aina ya DHT_); kwa (uint8_t i = 0; i> 7 & 0x7f); } Firmata. Andika (abs (rv)); Firmata andika (1); Firmata. Andika (END_SYSEX);

Ikiwa data halali inarejeshwa, idadi ya DHTs inayotumika imeongezwa. Tofauti ambayo hufuatilia ni mara ngapi matembezi ya kukamilisha kabla ya kuangalia DHT inayofuata ya data pia inarekebishwa. Tofauti hii inahakikishia kwamba haijalishi ni DHT ngapi zinaongezwa kwenye mfumo, zote zitasomwa ndani ya kipindi cha pili cha pili.

int rv = somaDhtSensor (numActiveDHTs);

ikiwa (rv == DHTLIB_OK) {numActiveDHTs ++; dhtNumLoops = dhtNumLoops / numActiveDHTs; // ni sawa}

Ikiwa kifaa kimoja au zaidi cha DHT kimesanidiwa katika kazi ya kitanzi ya mchoro, basi kifaa kinachofuata cha DHT kinasomwa. Labda data halali au hali yake ya makosa inarejeshwa kwa pymata4 kwa njia ya ujumbe wa SysEx:

ikiwa (dhtLoopCounter ++> dhtNumLoops) {ikiwa (numActiveDHTs) {int rv = readDhtSensor (nextDHT); uint8_t current_pin = DHT_PinNumbers [nextDHT]; uint8_t current_type = DHT_TYPE [nextDHT]; dhtLoopCounter = 0; sasaDHT = ijayoDHT; ikiwa (nextDHT ++> = numActiveDHTs - 1) {nextDHT = 0; } ikiwa (rv == DHTLIB_OK) {// JARIBIO LA KUJARIBU uint8_t jumla = _bits [0] + _bits [1] + _bits [2] + _bits [3]; ikiwa (_bits [4]! = jumla) {rv = -1; }} // tuma tena ujumbe na hali ya makosa Firmata.write (START_SYSEX); Firmata.andika (DHT_DATA); Firmata. Andika (sasa_pin); Firmata. Andika (aina ya sasa); kwa (uint8_t i = 0; i <sizeof (_bits) - 1; ++ i) {Firmata.write (_bits ); // Firmata.andika (_bits ;} Firmata.andika (abs (rv)); Firmata.andika (0); Firmata.write (END_SYSEX);}}

Nambari inayotumiwa kuwasiliana na kifaa cha DHT imetolewa moja kwa moja kutoka kwa maktaba ya DHTNew:

int readDhtSensor (int index) {

// INIT BUFFERVAR KUPATA DATA Uint8_t mask = 128; uint8_t idx = 0; // BUFFER TUPU // memset (_bits, 0, sizeof (_bits)); kwa (uint8_t i = 0; i 5 BYTES kwa (uint8_t i = 40; i! = 0; i--) {loopCnt = DHTLIB_TIMEOUT; wakati (digitalRead (pin) == LOW) {if (--loopCnt == 0 } kurudi DHTLIB_ERROR_TIMEOUT;} uint32_t t = micros (); loopCnt = DHTLIB_TIMEOUT; wakati (digitalRead (pin) == HIGH) {if (--loopCnt == 0) inarudi DHTLIB_ERROR_TIMEOUT;} ikiwa ((micros () - t)> 40) {_bits [idx] | = mask;} kinyago >> = 1; ikiwa (mask == 0) // baiti ijayo? {Mask = 128; idx ++;}} rudisha DHTLIB_OK;}

Hatua ya 4: Kurekebisha Pymata4 kwa Usaidizi wa DHT

faragha_ya_binafsi

Ili kuunga mkono DHT, tunahitaji kuongeza ujumbe mpya wa aina ya siri na SysEx kwenye faili hii:

Njia # za pini INPUT = 0x00 # pini iliyowekwa kama pembejeo OUTPUT = 0x01 # siri iliyowekwa kama pato ANALOG = 0x02 # pin pin in analogInput mode PWM = 0x03 # pin digital in PWM mode mode SERVO = 0x04 # pin digital in mode Servo output I2C = 0x06 # pini imejumuishwa katika usanidi wa I2C STEPPER = 0x08 # pini yoyote katika hali ya stepper SERIAL = 0x0a PULLUP = 0x0b # Pini yoyote katika hali ya kuvuta SONAR = 0x0c # Pini yoyote katika hali ya SONAR TONE = 0x0d # Pini yoyote katika hali ya toni PIXY = 0x0e # imehifadhiwa kwa hali ya kamera ya pixy DHT = 0x0f # DHT sensor IGNORE = 0x7f # DHT SysEx amri ya ujumbe DHT_CONFIG = 0x64 # dht config amri DHT_DATA = 0x65 # dht sensor jibu

Aina ya siri iliyoongezwa na amri za SysEx lazima zilingane na maadili katika FirmataConstants.h imeongezwa kwa FirmataExpress.

pymata4.py

Pymata4 hutumia kamusi ya Python kushirikisha haraka ujumbe unaoingia wa Firmata na kishika ujumbe. Jina la kamusi hii ni report_dispatch.

Fomati ya kuingiza kamusi ni:

{MessageID: [message_handler, idadi ya data za kusindika]}

Ingizo liliongezwa kwa kamusi kushughulikia ujumbe unaoingia wa DHT:

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

Baiti 7 za data kwenye ujumbe ni nambari ya pini ya dijiti ya Arduino, aina ya kifaa cha DHT (22 au 11), na ka 5 za data ghafi.

Njia ya _dht_read_response inakagua makosa yoyote yaliyoripotiwa. Ikiwa hakuna makosa yaliyoripotiwa, unyevu na joto huhesabiwa kwa kutumia algorithm iliyowekwa kutoka maktaba ya Arduino DHTNew.

Thamani zilizohesabiwa zinaripotiwa kupitia njia ya kupigiwa simu inayotolewa na mtumiaji. Pia zimehifadhiwa katika muundo wa data wa ndani wa pin_data. Thamani ya mwisho iliyoripotiwa inaweza kukumbukwa na pin_data ya kupiga kura kwa kutumia njia ya dht_read.

Kusanidi Kifaa kipya cha DHT

Wakati wa kuongeza kifaa kipya cha DHT, njia ya set_pin_mode_dht inaitwa. Njia hii inasasisha pin_data kwa pini za dijiti. Pia inaunda na kutuma ujumbe wa DHT_CONFIG SysEx kwa FirmataExpress.

Hatua ya 5: Kufunga

Kama tulivyoona, kuongeza msaada wa Firmata kwa kifaa kipya kunahitaji urekebishe msimbo wa seva ya Arduino FirmataExpress na nambari ya mteja ya pymata4 ya Python. Nambari ya FirmataExpress inaweza kuwa ngumu kutatua. Njia inayoitwa printData iliongezwa kwa FirmataExpress kusaidia katika utatuaji. Njia hii hukuruhusu kutuma maadili ya data kutoka FirmataExpress na utayachapisha kwenye daladala ya pymata4.

Kazi hii inahitaji pointer kwa kamba ya tabia na thamani unayotaka kuiona. Ikiwa thamani ya data iko katika anuwai inayoitwa argc, unaweza kupiga printData na vigezo vifuatavyo.

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

Ikiwa una maswali yoyote, acha maoni tu, nami nitafurahi kujibu.

Furaha ya kuweka alama!

Ilipendekeza: