Turinys:
- 1 veiksmas: sąranka - pirmiausia nustatykite aparatūrą
- 2 veiksmas: sąranka - nustatykite ekraną
- 3 veiksmas: nustatykite pagrindinį galą, tada sujunkite kartu - 1 dalis
- 4 veiksmas: nustatykite pagrindinį galą, tada sujunkite kartu - 2 dalis
- 5 žingsnis: eskizų / programų apžvalga - programos struktūra
- 6 žingsnis: dizainas iš viršaus į apačią
- 7 žingsnis: koncepcija ir dizainas - 1 dalis
- 8 žingsnis: koncepcija ir dizainas - 2 dalis
- 9 žingsnis: Užbaikite pagrindinę kilpą: A) priėmimas iš USB, B) priėmimas iš vergo „Arduino“
- 10 veiksmas: duomenų gavimas ir tvarkymas verge „Arduino“
- 11 veiksmas: parašykite priėmimo funkciją
- 12 veiksmas: parašykite priėmimo papildomą funkciją - 1 dalis
- 13 veiksmas: parašykite priėmimo papildomą funkciją - 2 dalis
- 14 veiksmas: parašykite perdavimo ir analizavimo funkcijas
- 15 veiksmas: parašykite perdavimo ir analizavimo funkcijas
- 16 žingsnis: finalas
Video: Siųsti skaitmeninius duomenis iš vieno „Arduino“į kitą: 16 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Įvadas
pateikė Davidas Palmeris, „CDIO Tech“. Astono universitete.
Ar jums kada nors reikėjo siųsti kai kuriuos numerius iš vieno „Arduino“į kitą? Ši instrukcija rodo, kaip.
Galite lengvai patikrinti, ar jis veikia, tiesiog įvesdami skaičių eilutę, kurią norite išsiųsti į „Serial Monitor“terminalą, ir pamatysite, kaip skaičiai grįžta prie antrojo serijinio monitoriaus, prijungto prie antrojo „Arduino“. Jūs netgi galite naudoti „Bluetooth“nuorodą.
Ką tai daro
Reikia sukurti dvi „Arduino“programas (eskizai „Arduino“kalba), vieną - pagrindinę programą, skirtą prisijungti prie pagrindinio kompiuterio, kuriame veikia „Arduino“serijinis monitorius, vieną - veikti kaip vergą, kad jis gautų serijinį pranešimą iš šeimininko, jį iššifruotų ir išsiųstų atgal. Vergas pasirinktinai gali rodyti numerius, su kuriais jis susiduria, antrame IDE serijos monitoriuje - tik tuo atveju, jei norite tai naudoti. Tai gali padėti, kad viskas veiktų pirmiausia, ir padės jums, jei nuspręsite keisti programas, kad atitiktų jūsų poreikius.
Įranga
- 2 „Arduino“
- 2 USB laidai
- pleistro laidai (pagal poreikį)
- 1 kompiuteris/nešiojamas kompiuteris su „Arduino IDE“(galima nemokamai atsisiųsti iš „Arduino.cc“svetainės)
1 veiksmas: sąranka - pirmiausia nustatykite aparatūrą
Prijunkite 2 „Arduinos“prie 2 kompiuterio USB prievadų.
Patarimas: gera idėja pažymėti juos kaip M ir S (šeimininkas ir vergas), kad vėliau nesusipainiotumėte (kaip parodyta 2 nuotraukose.)
2 veiksmas: sąranka - nustatykite ekraną
Geriausias dalykas yra nustatyti ekraną taip, kad turėtumėte
- IDE pakrautas su pagrindine programa kairėje ir
- kad su Vergu dešinėje.
„Maser“ir „Slave“serijos monitorius taip pat laikykite kairėje ir dešinėje, kaip parodyta čia.
3 veiksmas: nustatykite pagrindinį galą, tada sujunkite kartu - 1 dalis
Kai nustatote „Master End Serial Monitor“, kad būtų siunčiami du skaičiai, visada turite naudoti pradžios ir pabaigos skiriamųjų ženklų simbolius ir kablelio skyriklio simbolius, kaip matote čia.
Dabar turite prijungti 2 „Arduino“per seriją. Tai atliekama dviem pataisos laidais.
Naudojau žalią ir geltoną
- Pirmiausia paimkite geltoną, tai turi būti prijungta prie D6 viename „Arduino“ir D7 antrame
- Tada žaliai vielai priešingai - D7 ant pirmojo ir D6 antrame „Arduino“.
Arba, jei turite ką nors panašaus į porą „Bluetooth“modulių, pvz., HC -05, jie taip pat padės pasiekti tą patį efektą, kaip ir aukščiau esantys laidai.
4 veiksmas: nustatykite pagrindinį galą, tada sujunkite kartu - 2 dalis
Mes naudojame programinės įrangos serijos biblioteką. Daugiau informacijos rasite šioje nuorodoje
Jį galite pamatyti bet kurios programos 7 eilutėje. Jis sukonfigūruoja skaitmeninius 7 ir 6 kaiščius kaip TX ir RX (perduoti ir priimti). Taip duomenys iš pagrindinio Arduino per žalią laidą pateks į vergą ir, kai antrojo „Arduino“vergų programa baigs darbą, atgal per geltoną laidą. Tos pačios iliustracijos apačioje (serijinio monitoriaus lange) matote, kad mūsų perduoti duomenys dabar sėkmingai apėjo čia aprašytą kilpą ir grįžo į kompiuterį, kai sveikųjų skaičių pora gražiai išsiskyrė.
5 žingsnis: eskizų / programų apžvalga - programos struktūra
Išdėstymas Kaip ir visuose „Arduino“eskizuose, yra 3 pagrindinės dalys:
- Deklaracijos
- Sąranka
- Pagrindinė kilpa
Kaip dažnai nutinka, čia panaudojome ketvirtą skyrių, kuris papildo „Funkcijas“. Jei nesate susipažinę su funkcijų naudojimu, galite ieškoti „Arduino“funkcijų „Google“ir rasite paaiškinimų svetaines, kaip pavyzdys šioje nuorodoje: www.tutorialspoint.com/arduino/arduino_functions…..
Mes taip pat panaudojome skirtukus, kad atskirtume programą į lengviau valdomus blokus.
Trys mūsų naudojami blokai matomi kiekvienos IDE lango iliustracijos viršuje:
- simpleRxTx0330Master
- dažnas
- Pastabos
Tai iš tikrųjų yra atskiri failai programos aplanke, kaip matote šiame „Slave“programos failų „Windows Explorer“rodinyje.
Yra labai gera priežastis, kodėl mes tai padarėme.
- Kurdami programą supratome, kad didžioji dalis Mokytojo programos buvo tokia pati kaip ir Vergui.
- Galų gale mes įtraukėme visas įprastas dalis į skirtuką, kurį mes pavadinome „bendru“, ir tada kiekvieną kartą, kai derinome dalį (išbandėme ir buvome patenkinti, kad ji veikia gerai), mes tiesiog nukopijavome ir įklijavome visą skirtuką priešais šeimininką į vergą arba atvirkščiai.
- Užrašų skirtukai taip pat yra identiški, nes dizainas yra bendras.
Nė viena iš funkcijų nėra iškviečiama iš sąrankos, jos visos iškviečiamos iš ciklo, todėl jas sukūrėme po sąrankos, bet prieš ciklą.
6 žingsnis: dizainas iš viršaus į apačią
Patartina sukurti eskizą, pradedant nuo to, ką norite daryti.
Kai tai padarysite, galėsite pradėti daryti eskizą. Paprastai, jei yra detalių, kurių dar nežinote, kaip padaryti, tiesiog padarykite tai funkcija ir palikite funkcijos kūrimą vėliau.
Tai atitinka gerą dizaino filosofiją, dėstomą daugelyje universitetų, vadinamą CDIO (jei to dar nežinote, galite ieškoti „Google“ir rasti svetainių, kaip tai paaiškinti, pavyzdžiui: https://www.cdio.org/s.) Tai iš esmės sako: nepradėkite dizaino, kol neišsiaiškinote koncepcijos. Nepradėkite diegimo, kol dizainas nėra aiškus. Nesitikėkite, kad jis pradės veikti, kol neišsiaiškinsite diegimo. Pirmiausia C, tada D, I ir O. Kiekviename tolesniame etape jūs kartojate (grįžkite atgal aplink kilpą (-as), taigi, kai būsite patenkinti savo pradine projektavimo kilpa ir patikrinsite, ar ji vis dar atitinka koncepciją, ir atnaujinkite) C, jei reikia. Ir taip toliau, taigi net ir grįžę į „Operation“, grįžkite į viršų ir dar kartą pažiūrėkite, kaip dabar atrodo „C“, tada „D“ir „aš“, ir viską patikrinkite Su programavimo eskizais tai veikia taip pat, jei kuriate dizainą iš viršaus į apačią.
7 žingsnis: koncepcija ir dizainas - 1 dalis
Koncepcija čia atrodo kaip kontūro reikalavimai, nurodyti skirtuke „pastabos“. “
Dizainas gali atrodyti kaip ankstyvoji kilpos versija, kuri atitinka užrašų skirtuką ir gali atrodyti taip, kaip matote šiame paveikslėlyje
Pažiūrėkite, kaip man patinka pradėti nuo to, kad iš pradžių CTRL-C nukopijuojate komentarus į ciklo galvą, o tada pradėkite užpildyti tuščias vietas komandomis, kurios atliks šiuos dalykus.
Tai iš tikrųjų sukomplektuojama gerai, kaip matote paveikslėlio ekrano apačioje. Tai pasiekia nuo CDIO D stadijos iki I, o kuriant kodą yra gera mintis tęsti šią D-I kilpą.
Dabar atėjo laikas pereiti į kitą etapą, ten yra komentaras, kuriame sakoma, kad ketiname: // gauti kažką iš aparatinės USB, tada perduosime tai programinės įrangos nuosekliajam kanalui. Mes rašome šį kodą, kad tai įvyktų - 133–138 eilutės, parodytos čia geltonu žymekliu
8 žingsnis: koncepcija ir dizainas - 2 dalis
Dvi pirmosios dvi funkcijos, kurias mes čia pristatome, yra (recv () ir tran (), skirtos priimti iš aparatūros prievado ir perduoti į programinės įrangos prievadą, taigi skambinant joms naudojant „hw“arba „sw“parametrus.
Be jų, mes pridėjome visuotinio kintamojo, vadinamo newData, testą. Tai vėliava, kurią nustatysime funkcijos „void recv ();“viduje. Gavus pranešimą, šis kintamasis pažymimas nuo klaidingo iki tiesa. Mes tai darome taip, kad pranešimą perduotume tik tuo atveju, jei jis buvo gautas (vėliava == tiesa) 134 eilutėje. Ir kai mes perdavome savo pranešimą, tai yra „darbas atliktas“, todėl 137 eilutėje vėl pašaliname vėliavą į klaidingą.
Vėl galime patikrinti kompiliavimą (nuo D iki I), ir šį kartą turime klaidos pranešimą „nepaskelbta“(parodyta). Tai mums sako, kad nepaskelbėme recv (); funkcija. Mes planuojame tai padaryti vėliau, todėl kol kas, norėdami gauti švarų kompiliavimą, turime sukurti fiktyvią arba vietos rezervavimo funkciją, kaip parodyta toliau.
Vėl galime patikrinti kompiliavimą (nuo D iki I), ir šį kartą turime dar vieną „nepaskelbtą“klaidos pranešimą tran (); funkcija. Tam reikia sukurti panašų kamieną. Vėlgi galime patikrinti kompiliavimą (nuo D iki I), ir šį kartą tai puikiai atrodys; Kol kas viskas gerai.
9 žingsnis: Užbaikite pagrindinę kilpą: A) priėmimas iš USB, B) priėmimas iš vergo „Arduino“
Yra vienas paskutinis kūrinys, kurį pridėjome užbaigdami šią dalį, tai yra pridėti derinimo kodą.
Yra dar viena instrukcija, skirta eskizų derinimui, kuri gali būti nurodyta norint suprasti, ką mes čia padarėme ir kodėl. Žr. Instrukciją „Kaip sukurti ir išbandyti„ Arduino “eskizus, kol jie veiks“
Taigi šios derinimo eilutės [136-139 parodyta] yra pridėtos toliau pagrindinėje kilpoje ir, štai, galite jas išbandyti pagrindinėje dalyje, padarę derinimo kintamąjį teisingą ir Kompiliavimas (I), tada, jei prijungę „Arduino“, galite įkelti, atidaryti serijinį monitorių ir pažiūrėti, ar tai, kas grįžta į serijinį monitorių, yra taip, kaip parodyta čia (ar matote pranešimą „DEBUG MODE“)?
10 veiksmas: duomenų gavimas ir tvarkymas verge „Arduino“
Gavimas iš vergo Arduino
Pridėkite reikiamą antrojo kanalo kodą prie pagrindinės kilpos, programinės įrangos nuoseklaus imtuvo, kaip parodyta - 149–155 eilutės.
Ar matote, kad struktūra yra laisvai pagrįsta tuo, ką mes rašėme aukščiau „Master“atveju?
Taip pat pamatysite, kad gauname kompiliatoriaus klaidą, dar vieną nedeklaruotą funkciją - šį kartą parseData (); - todėl mes taip pat turime padaryti trūkumą, kad galėtume paleisti bandymų kompiliavimą be klaidų.
Duomenų tvarkymas „Slave Arduino“
Pridėkite pagrindinį ciklo kodą, reikalingą „Arduino“, jei jis sukonfigūruotas kaip vergas, kaip parodyta - 163–174 eilutės. Ar matote, kad jo struktūra yra labai panaši į pirmojo kanalo struktūrą?
Ir jūs turėtumėte pastebėti, kad šį kartą jis sudaromas visiškai gerai.
11 veiksmas: parašykite priėmimo funkciją
Gavimo funkcija - void recv (char from) {} - turi dvi pagrindines užduotis.
1, kad gautumėte simbolių eilutę iš USB kanalo, ir
2, kad gautumėte vieną iš „Arduino“į „Arduino“kanalą.
Pirmą kartą turėsime naudoti, nes ji naudoja „Arduino“įmontuotą aparatinę UART, o antrąją - naudojant standartinę „Arduino“biblioteką: programinę įrangą UART.
Kai prie funkcijos pradedame pridėti kodą - norėdami sukurti funkciją, kuri kažką daro, o ne tik neužsikimšimą - turime nepamiršti pašalinti arba komentuoti tą pakeitimą. Priešingu atveju gauname kompiliavimo klaidą: „void lrec (char)“iš naujo apibrėžimas.
Pabandykite gauti klaidą, tada pabandykite atsikratyti bet kurio iš aukščiau siūlomų būdų.
Pradėkite nuo funkcijos, kuri atrodo kaip ta, kurią čia rodome nuo 75 iki 88 eilučių geltonai.
Dabar jūs žinote, kad turėdami kodą turėsite išbandyti kompiliavimo operaciją. Gaunate klaidą, panašią į tą, kurią turėjome anksčiau, tipo: funkcijos pavadinimo, kuris šioje srityje nedeklaruojamas. Iš pradžių mums reikės dar vieno poskyrio, kad galėtume kompiliuoti šią klaidą, todėl pridėkite vieną, kaip ir anksčiau, ir įsitikinkite, kad dabar galite gauti kompiliaciją be klaidų.
Dabar pažvelkime į kodą, kurį parašėme funkcijai recv ().
Jis yra gana švarus, matote, kaip naudojama sąlyga „jei“, kad būtų sukurtos dvi anksčiau nurodytos funkcijos dalys.
„Sw“dalies ir „hw“dalies kodas yra tos pačios formos, ir aš jį aprašysiu čia.
Pirmasis iš eilučių porų kiekvienu atveju yra ciklo ciklo pradžia. Jei nesate susipažinę su tuo pačiu laiku, paaiškinimo ir pavyzdžių galite rasti Arduino.cc/Reference svetainėje. Čia mes laukiame „kol“, kai įtaisytoji „Serial“funkcija negauna jokių simbolių ir todėl, kad kintamasis „newData“yra išjungtas (t. Y. „NewData == false“yra teisinga). Kai tik bus gautas simbolis arba daugiau nei vienas simbolis, „poros“nukris į antrąją šios poros eilutę. Tada bus pakviestas recAstringChar (char); funkcija, skirta dabartiniam simboliui valdyti. Ši eilučių pora pasikeis, kol (arba tol, kol bus) simbolių, kuriuos dar reikia gauti. Kai jie visi bus padaryti, kol būsena baigsis, leisdama iki ar kitam lygiui baigti, o savo ruožtu leis rec (char); funkcija baigti. Taigi bitė gavo visą pranešimą.
12 veiksmas: parašykite priėmimo papildomą funkciją - 1 dalis
Dabar turime parašyti funkciją recAstringChar (char);. Iš komentaro iki 50 eilutės viršuje matote, kad jo užduotis yra atnaujinti du buferius gaunamo serijinio pranešimo kopijomis. [Paaiškėjo, kai bandžiau visa tai padaryti, kad vienas dalykas, kurį sužinojau, buvo tai, kad man reikia dviejų skirtingų buferių - arba bent jau tai buvo lengviausias būdas išspręsti kai kurias problemas, todėl tam tikra prasme išsivystė 2 buferiai, todėl Aš ką tik juos padariau.] Vieną buferį iškviečiau: gavoData, o kitą - gautasChars.
Buferiai yra visuotiniai kintamieji, todėl jie deklaruojami modulio lygiu, žr. Bendro skirtuko 9 ir 10 eilutes. Šioje funkcijoje yra ir kitų kintamųjų, kurie turi vietinę taikymo sritį, parodyta 51-54 eilutėse. Čia ne vieta paaiškinti skirtumus tarp pasaulio ir vietinių, tačiau daugiau informacijos apie tai rasite https://www.arduino.cc/glossary/en/ skiltyje „Local and Global“.
Čia taip pat galite sužinoti viską apie duomenų tipus ir tipo modifikatorius: static, boolean, byte, const, char
Šios programos pagrindinį programos srautą valdo „if“čia 56 eilutėje, o kitą - 74 eilutėje. Tai apima du scenarijus
a) [nuo 74 eilutės], kai prasideda gautas pranešimas. Tai atsitinka, kai pastebimas startMarker - tai buvo apibrėžta kaip „<“simbolis, todėl, kai tikriname eskizą, visada pradedame savo eilutę tuo simboliu. Jei to nepadarysime, niekas nebus apdorotas kaip gautas, visa tai bus ignoruojama, lyg rašytume nesąmones „Serial Monitor“klaviatūros raginime.
b) [56–73 eilutės], kuri gauna visus kitus simbolius, kad ir kokie jie būtų, tačiau jie nagrinėja simbolius tik įvykus galiojančiai pradžiai (gautas „>“, kaip nurodyta aukščiau).
Šiose eilutėse (nuo 74 iki 78) mes įdėjome gautą <į vieną iš buferių (gavoData [0]), bet ne į kitą. Mes sureguliuojame buferio žymeklį (kintamasis: char ndx), kad nurodytų į kitą atsarginę buferio vietą (gavoData [1]), naudodami eilutės ndx ++ komandą po padidinimo (++);, ir mes nustatėme, kad vykdymo vėliava yra tiesa.
Programos srautą šioje funkcijos dalyje valdo „if“čia esančioje 57 eilutėje, o kitą - 65 eilutėje. Tai susiję su dviem scenarijais
a) [nuo 65 eilutės], kai gautas pranešimas baigiamas. Tai atsitinka, kai pastebimas „endMarker“- apibrėžiamas kaip>, todėl, kai tikriname eskizą, visada užbaigiame savo eilutę tuo simboliu. Vienas iš dalykų, kuris atsitinka, kai gaunamas pabaigos simbolis, yra tai, kad visuotinė vėliava (techniškai kintama) newData yra nustatyta kaip tiesa, kai baigiasi funkcija, todėl funkcija, kuri iškvietė mūsų papildomą funkciją (skambinimo funkcija: recv (char);) gali „žinoti“, kad visi galiojantys nauji duomenys buvo gauti.
b) [57–64 eilutės], kuri priima visus kitus simbolius, kad ir kokie jie būtų. Tai tiesiog įtemptai stato juos į eilutes abiejuose buferiuose.
13 veiksmas: parašykite priėmimo papildomą funkciją - 2 dalis
Gali būti naudinga pateikti pavyzdį, kaip atrodo 2 buferiai, kai jie buvo užpildyti. Jei įvestume klavišą „Enter“, buferiuose būtų rodomi šie simboliai:
Taigi dabar matote, kad turime vieną buferį, kuris yra lygiai tokie patys simboliai, kaip pirmą kartą įvedėme, ir vieną buferį, kuriame yra tik dvi reikšmės ir skiriamasis kablelis. Dabar turime tam tikrą kodą, kuris gali priimti simbolius, kuriuos įvedame „Serial Monitor“klaviatūroje, galime pereiti iš CDIO I fazės į O, įvesdami kai kurias eilutes ir pamatę, kas atsitiks. Įkelkite kodą į „Master Arduino“, atidarykite serijos monitorių ir pabandykite įvesti ką nors tinkamo, pvz., „Enter“. Ar serijinio monitoriaus ekrane rodomas aidas, kaip parodyta čia?
14 veiksmas: parašykite perdavimo ir analizavimo funkcijas
Pirmiausia „Transmit“
Taigi dabar mes gavome eilutę, galime parašyti perdavimo funkciją: tran (char); pakeisti jo kamieną. Tai leis mums nusiųsti eilutę iš šeimininko vergui Arduino, todėl įsitikinkite, kad abu įrenginiai yra prijungti ir sujungti, kad išbandytumėte šią naują funkciją.
Įveskite šią funkciją, kaip parodyta 117–133 eilutėse. Kaip suprasite, ji turi dvi dalis: vieną perduoti į USB kanalą (aparatinė UART), o kitą - į kitą „Arduino“(programinė UART.). -nemokamai, ir jūs galite iškart įkelti eskizą ir pamatyti, kas atsitiks. Šį kartą atsiųsiu. Ar rodomas rezultatas?
Ekrano nuotrauka yra įdomi, nes gauta eilutė… turėtų atrodyti kaip anksčiau, o perduota eilutė… dabar turėtų atrodyti teisingai. Tačiau atminkite, kad sveikųjų skaičių konvertavimas nepadėjo. Dar reikia pridėti šiek tiek daugiau kodo, kad tai veiktų.
15 veiksmas: parašykite perdavimo ir analizavimo funkcijas
Tada už Parse
Tai yra kodo gabalas, kuris analizuoja gautą eilutę, kad gautų skaitines dalines eilutes ir konvertuotų jas į sveikojo skaičiaus vertes. Tai tuštuma parseData (); pagrindinės kilpos funkcija
Pakeiskite analizės klavišą kodu, nurodytu 98–113 eilutėse. Įkelkite jį ir pažiūrėkime, ar problema, su kuria susidūrėme su 2 sveikojo skaičiaus reikšmėmis, jau išspręsta. Pabandykime.
Taip, tai veikia, kaip parodyta, rasti sveikieji skaičiai yra 49 ir 98.
16 žingsnis: finalas
Šie duomenys praėjo tiesiai iš kompiuterio per pagrindinį kompiuterį per vergą ir atgal per pagrindinį kompiuterį vėl į kompiuterį. Įdėjus galutinę bendrosios versijos versiją į pagrindinį ir antrinį galus, o dabar išjungus derinimo režimą, matome teisingai gautus duomenis iš abiejų galų, kaip parodyta čia.
Rekomenduojamas:
Kaip siųsti duomenis iš „M5Stack StickC“į „Delphi“: 6 veiksmai
Kaip siųsti duomenis iš „M5Stack StickC“į „Delphi“: šiame vaizdo įraše sužinosime, kaip naudojant „Visuino“siųsti vertes iš „StickC“plokštės į „Delphi VCL“programą. Žiūrėkite vaizdo įrašą
Kaip siųsti duomenis į debesį naudojant „Arduino Ethernet“: 8 veiksmai
Kaip siųsti duomenis į debesį naudojant „Arduino Ethernet“: ši instrukcija parodo, kaip paskelbti savo duomenis „AskSensors IoT“platformoje naudojant „Arduino Ethernet Shield“. „Ethernet Shield“leidžia jūsų „Arduino“lengvai prisijungti prie debesies, siųsti ir gauti duomenis naudojant interneto ryšį. Ką mes
Kaip siųsti DHT11 duomenis į „MySQL“serverį naudojant „NodeMCU“: 6 veiksmai
Kaip siųsti DHT11 duomenis į „MySQL“serverį naudojant „NodeMCU“: Šiame projekte mes sujungėme DHT11 su „nodemcu“ir tada siunčiame „dht11“, ty drėgmės ir temperatūros, duomenis į „phpmyadmin“duomenų bazę
TCP/IP ryšys per GPRS: Kaip siųsti duomenis į serverį naudojant SIM900A modulį: 4 žingsniai
TCP/IP ryšys per GPRS: Kaip siųsti duomenis į serverį naudojant SIM900A modulį: Šiame vadove aš jums pasakysiu, kaip siųsti duomenis į TCP serverį naudojant sim900 modulį. Taip pat pamatysime, kaip galime gauti duomenis iš serverio į klientą (GSM modulis)
Apokastastazė (grįžtamasis ryšys už pigius skaitmeninius vėlavimus): 4 žingsniai
Apokastastazė (grįžtamojo ryšio grąžinimas už pigius skaitmeninius vėlavimus): Dauguma brangių analoginių delsos pedalų turi grįžtamojo ryšio rankenėlę, leidžiančią grąžinti vėlinimo efektą į įvestį. Mano „Ibanez DL5 Digital Delay“neturėjo šios funkcijos, todėl nusprendžiau ją pagaminti ir padaryti pigiai. :-) Lauros nuotrauka