Arduino - misingi ya programu. Lugha za programu

" inatoa kozi ya mafunzo "Arduino kwa Kompyuta". Mfululizo huo una masomo 10, pamoja na nyenzo za ziada. Masomo ni pamoja na maagizo ya maandishi, picha na video za mafundisho. Katika kila somo utapata orodha ya vipengele vinavyohitajika, orodha ya programu na mchoro wa uunganisho. Ukishamaliza masomo haya 10 ya kimsingi, utaweza kuendelea na miundo ya kuvutia zaidi na ujenzi wa roboti zinazotumia Arduino. Kozi hiyo inalenga wanaoanza; hakuna maelezo ya ziada kutoka kwa uhandisi wa umeme au robotiki inahitajika ili kuianzisha.

Maelezo mafupi kuhusu Arduino

Arduino ni nini?

Arduino (Arduino) ni jukwaa la kompyuta ya vifaa, sehemu kuu ambazo ni bodi ya pembejeo-pato na mazingira ya maendeleo. Arduino inaweza kutumika kuunda vitu shirikishi vya kusimama pekee, au kuunganisha kwenye programu inayoendesha kwenye kompyuta. Arduino ni kompyuta ya bodi moja.

Je, Arduino na roboti zimeunganishwaje?

Jibu ni rahisi sana - Arduino mara nyingi hutumiwa kama ubongo wa roboti.

Faida ya bodi za Arduino juu ya majukwaa sawa ni bei yao ya chini na usambazaji karibu mkubwa kati ya wastaafu na wataalamu wa robotiki na uhandisi wa umeme. Mara tu unapoingia kwenye Arduino, utapata usaidizi katika lugha yoyote na watu wenye nia kama hiyo ambao watajibu maswali yako na kujadili maendeleo yako nao.

Somo la 1. Kumulika LED kwenye Arduino

Katika somo la kwanza utajifunza jinsi ya kuunganisha LED kwenye Arduino na kuidhibiti ili kufumba. Huu ni mfano rahisi na wa msingi zaidi.

Diode inayotoa mwanga- kifaa cha semiconductor ambacho huunda mionzi ya macho wakati umeme wa sasa unapitishwa kwa njia hiyo kwa mwelekeo wa mbele.

Somo la 2. Kuunganisha kitufe kwenye Arduino

Katika somo hili utajifunza jinsi ya kuunganisha kitufe na LED kwenye Arduino.

Wakati kifungo kinaposisitizwa, LED itawaka; wakati kifungo kinaposisitizwa, haitawaka. Hii pia ni mfano wa msingi.

Somo la 3. Kuunganisha potentiometer kwenye Arduino

Katika somo hili utajifunza jinsi ya kuunganisha potentiometer kwa Arduino.

Potentiometer-Hii resistor na upinzani adjustable.Potentiometers hutumiwa kama vidhibiti vya vigezo mbalimbali - sauti ya sauti, nguvu, voltage, nk.Hii pia ni moja ya mipango ya msingi. Katika mfano wetu kutoka kwa kugeuza kisu cha potentiometerMwangaza wa LED itategemea.

Somo la 4. Udhibiti wa Servo kwenye Arduino

Katika somo hili utajifunza jinsi ya kuunganisha servo kwa Arduino.

Hudumani motor ambayo nafasi ya shimoni inaweza kudhibitiwa kwa kuweka angle ya mzunguko.

Servos hutumiwa kuiga mienendo mbalimbali ya mitambo ya roboti.

Somo la 5. LED ya rangi tatu kwenye Arduino

Katika somo hili utajifunza jinsi ya kuunganisha LED yenye rangi tatu kwenye Arduino.

LED ya rangi tatu(iliyoongozwa na rgb) - hizi ni LED tatu za rangi tofauti katika nyumba moja. Wanakuja ama na bodi ndogo ya mzunguko iliyochapishwa ambayo vipinga iko, au bila vipinga vilivyojengwa. Somo linashughulikia chaguzi zote mbili.

Somo la 6. Kipengele cha piezoelectric kwenye Arduino

Katika somo hili utajifunza jinsi ya kuunganisha kipengele cha piezo kwenye Arduino.

Kipengele cha piezo- kibadilishaji cha electromechanical ambacho hutafsiri voltage ya umeme katika vibration ya membrane. Mitetemo hii huunda sauti.

Katika mfano wetu, mzunguko wa sauti unaweza kubadilishwa kwa kuweka vigezo vinavyofaa katika programu.

Somo la 7. Photoresistor kwenye Arduino

Katika somo hili la kozi yetu utajifunza jinsi ya kuunganisha photoresistor kwa Arduino.

Photoresistor- upinzani ambao upinzani unategemea mwangaza wa mwanga unaoanguka juu yake.

Katika mfano wetu, taa ya LED inawaka tu ikiwa mwangaza wa mwanga juu ya photoresistor ni chini ya moja fulani; mwangaza huu unaweza kubadilishwa katika programu.

Somo la 8. Sensor ya mwendo (PIR) kwenye Arduino. Kutuma barua pepe kiotomatiki

Katika somo hili la kozi yetu utajifunza jinsi ya kuunganisha sensor ya mwendo (PIR) kwa Arduino, na pia kuandaa kutuma barua pepe moja kwa moja.

Sensa ya mwendo (PIR)- Sensor ya infrared ili kugundua harakati au uwepo wa watu au wanyama.

Katika mfano wetu, wakati wa kupokea ishara kuhusu harakati za binadamu kutoka kwa sensor ya PIR, Arduino hutuma amri kwa kompyuta kutuma E-mail na barua inatumwa moja kwa moja.

Somo la 9. Kuunganisha kihisi joto na unyevunyevu DHT11 au DHT22

Katika somo letu hili, utajifunza jinsi ya kuunganisha sensor ya joto na unyevu ya DHT11 au DHT22 kwenye Arduino, na pia ujue na tofauti za sifa zao.

Sensor ya joto na unyevu ni kihisi cha kidijitali kinachojumuisha kihisishi cha unyevu na kidhibiti joto cha kupima halijoto.

Katika mfano wetu, Arduino inasoma usomaji wa sensor na kuonyesha usomaji kwenye skrini ya kompyuta.

Somo la 10. Kuunganisha kibodi ya matrix

Katika somo hili la kozi yetu, utajifunza jinsi ya kuunganisha kibodi ya matrix kwenye bodi ya Arduino, na pia ujue na mizunguko mbalimbali ya kuvutia.

Kibodi ya matrix zuliwa ili kurahisisha uunganisho wa idadi kubwa ya vifungo. Vifaa vile hupatikana kila mahali - katika keyboards za kompyuta, calculators, na kadhalika.

Somo la 11. Kuunganisha moduli ya saa halisi ya DS3231

Katika somo la mwisho la kozi yetu, utajifunza jinsi ya kuunganisha moduli ya saa halisi kutoka kwa familia
DS kwa bodi ya Arduino, na pia ujue na mizunguko mbalimbali ya kuvutia.

Moduli ya saa halisi- hii ni mzunguko wa umeme iliyoundwa kurekodi data ya chronometric (wakati wa sasa, tarehe, siku ya wiki, nk), na ni mfumo unaojumuisha chanzo cha nguvu cha uhuru na kifaa cha kurekodi.

Maombi. Fremu zilizotengenezwa tayari na roboti za Arduino


Unaweza kuanza kujifunza Arduino sio tu kutoka kwa bodi yenyewe, lakini pia kwa kununua roboti iliyotengenezwa tayari, iliyojaa kamili kulingana na ubao huu - roboti ya buibui, gari la roboti, roboti ya turtle, nk. Vile njia Pia inafaa kwa wale ambao hawavutiwi hasa na nyaya za umeme.

Kwa kununua mfano wa roboti ya kazi, i.e. kwa kweli, toy iliyotengenezwa tayari ya hali ya juu inaweza kuamsha shauku katika muundo wa kujitegemea na robotiki. Uwazi wa jukwaa la Arduino hukuruhusu kutengeneza vinyago vipya kutoka kwa vifaa sawa.

Chaguo jingine ni kununua sura ya roboti au mwili: jukwaa kwenye magurudumu au wimbo, humanoid, buibui, nk. Katika kesi hii, utakuwa na kufanya stuffing ya robot mwenyewe.

Maombi. Saraka ya rununu


- msaidizi kwa watengenezaji wa algoriti kwa jukwaa la Arduino, madhumuni yake ambayo ni kumpa mtumiaji wa mwisho fursa ya kuwa na seti ya amri za rununu (kitabu cha kumbukumbu).

Maombi yana sehemu kuu 3:

  • Waendeshaji;
  • Data;
  • Kazi.

Mahali pa kununua Arduino


Vifaa vya Arduino

Kozi itasasishwa na masomo ya ziada. Tufuate

Baada ya kujijulisha na mambo ya msingi ya Arduino, na pia kuandika programu ya "Hello World!". Ni wakati wa kufahamiana na lugha ya programu.

Muundo wa lugha unategemea hasa C/C++, kwa hivyo wale ambao wameweka programu katika lugha hii hapo awali hawatakuwa na ugumu wa kusimamia programu ya Arduino. Wengine wanapaswa kujifunza maelezo ya msingi kuhusu amri za udhibiti, aina za data na utendakazi.

Maelezo mengi yaliyo hapa yataendana na kozi yoyote ya C/C++, kwa kuzingatia tofauti za aina za data, pamoja na maagizo machache mahususi kuhusu upangaji wa programu kwenye bandari ya I/O.

Misingi

Mambo machache rasmi, ambayo ni, yale ambayo kila mtu anajua, lakini wakati mwingine husahau ...

Katika IDE ya Arduino, kama katika C/C++, unahitaji kufahamu kesi za wahusika. Maneno muhimu kama vile if, kwa kila mara huandikwa kwa herufi ndogo. Kila maagizo huisha na ";". Nusu koloni inamwambia mkusanyaji ni sehemu gani ya kutafsiri kama maagizo.

Mabano (..) hutumiwa kuashiria vizuizi vya programu. Tunazitumia kudhibiti vyombo vya utendaji (tazama hapa chini), vitanzi, na taarifa za masharti.

Ni mazoezi mazuri ya kuongeza maoni kwenye yaliyomo kwenye programu, hii hurahisisha msimbo kueleweka. Maoni ya mstari mmoja huanza na // (kufyeka mara mbili). Maoni ya mitandao mingi huanza /* na kuishia na */

Ikiwa tunataka kujumuisha maktaba yoyote katika programu yetu, tunatumia amri ya pamoja. Hapa kuna mifano ya kuunganisha maktaba:

#pamoja na // maktaba ya kawaida #inajumuisha "svoya_biblioteka.h" // maktaba kwenye saraka ya mradi

Hufanya kazi Arduino

Kazi (subroutine) ni sehemu tofauti ya programu inayofanya shughuli fulani. Kazi hutumika kurahisisha programu kuu na kuboresha usomaji wa msimbo. Ni muhimu kutumia vitendaji kwani tunaweza kuzitumia kwa urahisi katika miradi yetu mingi.

Kozi ya kawaida ya programu ina habari kuhusu vipengele ambavyo vitawasilishwa katika makala zifuatazo. Kwa upande wa Arduino, kazi zitajadiliwa mwanzoni kwa sababu hata programu rahisi lazima iwe na kazi mbili maalum. Hii tayari imetajwa katika nakala zilizopita, lakini hapa tunapanga habari hii.

Tamko la Kazi

Mchoro wa tamko la kazi inaonekana kama hii:

Andika function_name(parameta) ( // maagizo ya utekelezaji (mwili wa kazi) rudisha (/* thamani ya kurudi*/); )

aina ni jina la aina yoyote ya data inayopatikana katika lugha fulani ya programu. Tutatoa orodha ya aina zinazopatikana wakati wa kupanga Arduino katika nakala tofauti.

Baada ya utekelezaji, chaguo la kukokotoa litarudisha thamani ya aina iliyotangazwa. Ikiwa chaguo la kukokotoa halikubali thamani yoyote ya kurejesha, basi aina ya data itakuwa "batili".

function_name inaruhusu kutambuliwa kipekee. Ili kuita (kukimbia) kazi, tunaipa jina.

kigezo- kigezo cha simu cha kazi. Vigezo hazihitajiki, lakini mara nyingi ni muhimu. Ikiwa tutaandika chaguo la kukokotoa ambalo halina hoja, tunaacha mabano tupu.

Ndani ya mabano "(…)" kuna sehemu halisi ya chaguo la kukokotoa au maagizo tunayotaka kutekeleza. Tutatoa maelezo ya maagizo maalum katika makala tofauti.

Chaguo zote za kukokotoa ambazo hurejesha thamani huisha kwa taarifa ya kurejesha ikifuatiwa na thamani ya kurejesha. Chaguo za kukokotoa pekee zilizotangazwa kwa kiashiria batili ("batili") hazina taarifa ya kurejesha. Unahitaji kujua kuwa taarifa ya kurejesha hukatisha kazi bila kujali eneo.

Ifuatayo ni baadhi ya mifano ya matamko ya utendakazi.

Utupu f1() ( //mwili wa kufanya kazi) —————————————— int minus () ( //function body return (0); ) ——————————— ——— int plus(int a, int b) ( rudisha (a+b);)

Kama unaweza kuona kutoka kwa mifano, tamko la utendaji linaweza kuchukua aina nyingi kulingana na mahitaji yako.

Tunakuhimiza sana kujifunza na kutumia vipengele unapoandika programu zako mwenyewe. Kwa wakati, kila programu hujilimbikiza maktaba yake ya kazi "kwa hafla zote," ambayo inafanya iwe rahisi na haraka kuandika programu mpya.

Sasa kwa kuwa tunajua jinsi ya kuandika kazi yetu wenyewe, tunahitaji kujifunza jinsi ya kuitumia.

Kuita kipengele

Tunaandika kazi zote katika faili/programu moja. Kuna, bila shaka, suluhisho la kifahari zaidi, lakini tutajaribu kuelezea wakati ujao.

Mara tu tunapotangaza chaguo za kukokotoa, tunaweza kuitumia katika vitendakazi vingine na jina linalofaa na vigezo vyovyote vinavyohitajika. Ifuatayo ni mifano ya kuita vitendaji ambavyo tumetoa hapo juu:

F1(); plus(2,2); y=plus(1.5);

Kama unaweza kuona katika mifano, simu ya kazi inafanywa kwa kutaja jina lake na idadi inayotakiwa ya vigezo. Ni muhimu kila mara kuita kitendakazi kama kilivyotangazwa.

Ikiwa kazi ya f1 () inatangazwa bila vigezo, basi hakuna vigezo vinaweza kutajwa wakati wa kuiita, i.e. kupiga simu f1(0) itakuwa si sahihi.

Kazi plus(int a, int b) inahitaji vigezo viwili haswa, kwa hivyo kupiga simu na kigezo kimoja au tatu haiwezekani.

Kupiga simu y=plus(1,5) kutatekeleza kitendakazi cha "plus" na vigezo "1" na "5" na kuhifadhi thamani ya kurudi kwenye kigezo "y".

setup() na loop() kazi.

Kwa ujuzi wa tamko la utendaji na wito, tunaweza kuendelea na kazi za mfumo wa Arduino: kuweka () Na kitanzi (). IDE ya Arduino inahitajika kutangaza kazi hizi mbili.

setup() ni kitendakazi kinachoitwa kiotomatiki wakati nguvu imewashwa au kitufe cha RESET kikibonyezwa.

Kama jina lake linavyoonyesha, hutumiwa kuweka maadili ya awali ya vigezo, matamko ya pembejeo ya mfumo na matokeo, ambayo kawaida hutajwa katika vigezo vya awali. Kwa sababu ya umaalum wake, chaguo la kukokotoa halirudishi thamani na halijaitwa na vigezo. Tamko la kazi sahihi la usanidi() liko hapa chini:

Usanidi tupu () (// mwili wa kazi - uanzishaji wa mfumo)

loop() ni kazi ambayo inaitwa katika kitanzi kisicho na mwisho. Chaguo hili la kukokotoa pia halirudishi thamani na halijaitwa na vigezo. Tamko sahihi la kazi ya kitanzi () limeonyeshwa hapa chini:

Kitanzi tupu () (// mwili wa kazi - nambari ya programu)

Kama unavyoona, tamko la chaguo la kukokotoa kitanzi () ni sawa na tamko la utendakazi la setup(). Tofauti iko katika utendaji wa kazi hizi na microcontroller.

Sasa tutachambua pseudocode ifuatayo:

Usanidi wa utupu () ( on_led1 (); // washa led1 off_led1 (); // zima led1) kitanzi batili () ( on_led2 (); // washa led2 off_led2 (); // zima led2)

Kuna maagizo mawili katika kitendakazi cha usanidi(): ya kwanza huwasha led1 iliyounganishwa kwenye ubao (k.m. pini 13) na ya pili inazima led1.

Kitendaji cha loop() kina maagizo yanayofanana ya kuwasha na kuzima LED2 iliyounganishwa kwenye ubao (k.m. pin 12).

Kama matokeo ya kuendesha programu, led1 itapepesa mara moja, wakati led2 itawaka na kuzimika mradi Arduino imewashwa.

Kubonyeza kitufe cha RESET kutasababisha led1 kuwaka tena na led2 kuwaka tena mfululizo.

Fanya muhtasari:

  • Vitendaji vya usanidi() na loop() ni vitendaji vya mfumo ambavyo lazima vifafanuliwe katika kila mradi. Hata katika hali ambayo hatuandiki msimbo wowote katika mojawapo yao, bado tunapaswa kutangaza kazi hizi mbili;
  • Seti () kazi inatekelezwa mara moja, kitanzi () inatekelezwa kwa kuendelea;
  • Tunaunda kazi zetu wenyewe katika faili moja;
  • Tunaweza kuita vitendaji vyetu kutoka kwa usanidi() na kitanzi(), na kutoka kwa vitendaji vingine;
  • Kazi zetu wenyewe zinaweza kuitwa na vigezo na kurudisha thamani;
  • Simu ya kazi lazima ifanywe kwa mujibu wa tamko lake.

Utahitaji

  • - Arduino UNO bodi,
  • - Kebo ya USB (USB A - USB B),
  • - Kompyuta binafsi,
  • - Diode inayotoa mwanga,
  • - upinzani 220 Ohm,
  • - jozi ya waya 5-10 cm,
  • - ikiwa inapatikana - ubao wa mkate.

Maagizo

Pakua mazingira ya maendeleo ya Arduino kwa mfumo wako wa uendeshaji (Windows, Mac OS X, Linux zinatumika) kwenye ukurasa http://arduino.cc/en/Main/Software, unaweza kusakinisha, unaweza. Faili iliyopakuliwa pia ina viendeshi vya bodi za Arduino.

Sakinisha dereva. Fikiria chaguo kwa Windows OS. Ili kufanya hivyo, subiri hadi mfumo wa uendeshaji utakuhimiza kufunga dereva. Kataa. Bonyeza Win + Sitisha, uzindua Kidhibiti cha Kifaa. Pata sehemu ya "Bandari (COM & LPT)". Utaona bandari pale inaitwa "Arduino UNO (COMxx)". Bonyeza-click juu yake na uchague "Sasisha Dereva". Ifuatayo, chagua eneo la kiendeshi ulichopakua hivi punde.

Mazingira ya maendeleo tayari yana mifano mingi ya kusoma utendakazi wa bodi. Fungua mfano wa "Blink": Faili > Mifano > 01.Misingi > Blink.

Elekeza mazingira yako ya maendeleo kwenye bodi yako. Ili kufanya hivyo, kwenye menyu ya Vyombo> Bodi, chagua "Arduino UNO".

Chagua bandari ambayo bodi ya Arduino imepewa. Ili kujua ni bandari gani bodi imeunganishwa, zindua Kidhibiti cha Kifaa na utafute sehemu ya Bandari (COM & LPT). Bandari itaonyeshwa kwenye mabano baada ya jina la ubao. Ikiwa bodi haipo kwenye orodha, jaribu kutoka kwa kompyuta na kusubiri sekunde chache, jaribu tena.

Tenganisha bodi kutoka kwa kompyuta. Kusanya mzunguko kama inavyoonyeshwa kwenye takwimu. Tafadhali kumbuka kuwa mguu mfupi wa LED lazima uunganishwe kwenye pini ya GND, mguu mrefu kwa njia ya kupinga kwa pini ya digital 13 ya bodi ya Arduino. Ni rahisi zaidi kutumia ubao wa mkate, lakini ikiwa haipatikani, unaweza kuunganisha waya kwa kupotosha.
Kumbuka muhimu! Pini ya dijiti 13 tayari ina kipingamizi chake kwenye ubao. Kwa hiyo, wakati wa kuunganisha LED kwenye bodi, si lazima kutumia kupinga nje. Wakati wa kuunganisha LED kwa pini nyingine yoyote ya Arduino, matumizi ni ya lazima!

Sasa unaweza kupakia programu kwenye kumbukumbu ya bodi. Unganisha bodi kwenye kompyuta, subiri sekunde chache wakati bodi inapoanzisha. Bofya kitufe cha "Pakia" na yako itaandikwa kwenye kumbukumbu ya bodi ya Arduino. Kupanga programu na Arduino ni angavu sana na sio ngumu hata kidogo. Angalia picha - kuna maelezo madogo katika maoni kwa programu. Hii inatosha kukufanya uanze na jaribio lako la kwanza.

Video kwenye mada

Kumbuka

Kuwa mwangalifu wakati wa kufanya kazi na bodi ya Arduino - hii ni bidhaa ya elektroniki ambayo inahitaji utunzaji makini. Kuna waendeshaji wazi chini ya ubao, na ikiwa unaweka ubao kwenye uso wa conductive, kuna nafasi ya kuchoma ubao. Pia, usigusa ubao kwa mikono yenye unyevu au mvua na uepuke maeneo yenye uchafu wakati wa kufanya kazi.

Ushauri wa manufaa

Kuna tovuti nyingi kwenye mtandao zinazotolewa kwa Arduino. Soma, bwana, usiogope kujaribu na kujifunza mambo mapya!

Vyanzo:

  • LED inayowaka

Programu huvutia na kuvutia watu wengi wa kisasa, hasa vijana na wataalamu wa mwanzo ambao wanaanza tu kuchagua taaluma ya baadaye. Mara nyingi wanakabiliwa na swali - wapi kuanza katika kujifunza programu? Ikiwa unaamua kujifunza jinsi ya kupanga, haifai kufanya makosa ya kawaida - usichukue mara moja mifumo na lugha ngumu (kwa mfano, C). Kuanza na lugha ambayo ni changamano sana kunaweza kukupa maoni yasiyo sahihi kuhusu upangaji programu kwa ujumla. Kompyuta wanapendekezwa kufanya kazi na mifumo rahisi - kwa mfano, kujifunza kuandika programu katika BASIC. Kujifunza lugha hii itawawezesha kufikia matokeo mazuri kwa muda mfupi. PureBasic ni rahisi kujifunza - lugha hii yenye matumizi mengi, iliyokusanywa kwa nguvu itakusaidia kuelewa misingi ya upangaji programu na kuboresha ujuzi wako katika siku zijazo.

Maagizo

Huenda ikakuchukua takriban mwaka mmoja kujifunza misingi ya upangaji programu. Utajifunza vipengele vya programu ya utaratibu na kitu, kanuni za kufanya kazi na miti ya binary, safu, orodha, nk. Tu baada ya kujifunza mambo ya msingi kuendelea na kazi ngumu zaidi.

Tembelea tovuti za wasanidi programu wa lugha na nyaraka za masomo. Hakikisha kuwasiliana kwenye mabaraza ya watengeneza programu; kwa kawaida hujibu maswali mengi kutoka kwa wanaoanza.

Hisabati

Ikiwa unataka kujifunza kupanga, unahitaji tu kujua hesabu. Katika mchakato wa kazi, utakutana na idadi kubwa ya matatizo ambayo hayawezi kutatuliwa bila ujuzi wa misingi ya sayansi hii. Kuna idadi kubwa ya mifumo na nadharia za hisabati (Msururu wa nne, nambari za Fibonacci, n.k.) ambazo hurahisisha sana mchakato wa upangaji.

Kujifunza hakuna mwisho

Mageuzi ya lugha za programu haisimama; maendeleo yao yanaendelea. Jaribu kusoma fasihi nyingi iwezekanavyo zinazohusiana na eneo la programu ambalo unapanga kufanya kazi. Daima tafuta njia mbadala za kutatua matatizo yanayotokea, hii itakusaidia daima kuboresha ufanisi wa kanuni unayounda. Ongea na waandaaji wa programu kitaaluma; wataweza kushauri kila wakati jinsi ya kushughulikia shida fulani. Kusoma misimbo yao pia kutakunufaisha sana.
Haiwezekani kuweka kila kitu katika akili yako wakati wote. Jisikie huru kutumia vitabu vya marejeleo vya lugha ya programu.

Matatizo ya programu, bila kujali jinsi yanaweza kuwa rahisi, kamwe hayatatuliwi mara moja. Daima zinahitaji maendeleo ya algorithm sahihi ya vitendo ambayo inafaa katika hali fulani maalum. Kupata algorithms bora kunahitaji mazoezi na mafunzo ya mara kwa mara. Jaribu kusuluhisha shida ndogo za programu mara nyingi zaidi (unaweza kuzipata kwenye tovuti maalum), hii itakusaidia kuongeza ujuzi wako hatua kwa hatua katika eneo hili.

Kwa hivyo una processor. Labda unaelewa kuwa kichakataji kinaweza kupangwa kwa njia fulani kufanya kile unachotaka. Ili kazi muhimu ifanyike, ni muhimu (a) kuandika programu muhimu na (b) kumpa processor kwa utekelezaji.

Kwa ujumla, haijalishi ni aina gani ya processor unayo: Intel Pentium ya hivi karibuni kwenye kompyuta yako ndogo au kidhibiti kidogo kwenye ubao wa Arduino. Kanuni za kuandika programu, i.e. kupanga programu, katika hali zote mbili sawa. Tofauti pekee ni kasi na upeo wa uwezo wa kufanya kazi na vifaa vingine.

Mpango ni nini na wapi kuandika

Kichakataji, licha ya ugumu wote wa uzalishaji, kimsingi ni jambo rahisi na la moja kwa moja. Hajui kufikiria. Anaweza tu kwa upofu, byte byte, kutekeleza maagizo ambayo alikabidhiwa. Mfano mbaya wa mlolongo wa maagizo unaweza kutolewa:

Instruction byteInamaanisha nini kwa processor
00001001 inamaanisha: chukua baiti inayofuata na uihifadhi kwenye seli Nambari 1
00000110 ...hii ndiyo baiti inayofuata ambayo tunakumbuka katika seli Nambari 1: nambari 5
00011001 inamaanisha: toa moja kutoka kwa thamani katika kisanduku Na. 1 na uache matokeo yaliyosasishwa hapo
00101001 inamaanisha: linganisha thamani katika kisanduku Na. 1 na sifuri na ikiwa ni sifuri, ruka baiti nyingi kama ilivyoonyeshwa katika baiti inayofuata.
00000100 ... ikiwa matokeo yalikuwa sifuri, tunataka kuruka baiti 4 kwa maagizo ya mwisho
10000011
01000001 ...herufi "A" inalingana haswa na msimbo huu
00101000 inamaanisha kuwa tunataka kuruka nyuma kadiri baiti nyingi kama ilivyoonyeshwa katika baiti inayofuata
00000110 ...tutaruka baiti 6 kurudi kwenye maagizo Na. 3
10000011 inamaanisha kuwa tunataka kuonyesha mhusika ambaye msimbo wake umeandikwa kwa baiti inayofuata
00100001 ...saini "!" Msimbo huu unalingana kabisa

Kama matokeo ya kutekeleza mlolongo huu wa maagizo, maneno ya hofu "AHHH!" yataonyeshwa kwenye skrini.

Nambari nyingi sana kwa kusudi rahisi kama hilo! Ni wazi kwamba ikiwa programu zote zingeandikwa hivi, moja kwa moja, maendeleo ya bidhaa ngumu ingechukua karne nyingi.

Kwa nini lugha za programu zinahitajika?

Ili kurahisisha kazi mara milioni, lugha za programu ziligunduliwa. Kuna mengi yao, na hata kutoka kwa wale wanaosikika mara kwa mara, unaweza kukumbuka haraka dazeni au mbili: Assembler, C, C ++, C #, Java, Python, Ruby, PHP, Scala, JavaScript.

Programu katika lugha hizi ziko karibu zaidi na lugha asilia ya mwanadamu. Na kwa hiyo ni rahisi zaidi, kwa kasi na zaidi ya kupendeza kuandika, na muhimu zaidi, ni rahisi zaidi soma: kwako mara baada ya kuandika, kwako mwaka mmoja baadaye, au kwa mwenzako.

Shida ni kwamba lugha kama hizo hazieleweki kwa processor na kabla ya kuipa programu hii, unahitaji kukusanya: kutafsiri kutoka kwa lugha ya asili hadi kwa maagizo sawa kwa njia ya sufuri na moja. Hii inafanywa na programu zinazoitwa wakusanyaji. Kila lugha, isipokuwa inabaki katika kiwango cha fantasia, ina mkusanyaji wake. Kwa lugha maarufu, kuna kawaida kadhaa za kuchagua, kutoka kwa wazalishaji tofauti na kwa majukwaa tofauti. Wengi wao hupatikana kwa uhuru kwenye mtandao.

Kwa hivyo, kuna programu katika lugha ambayo inaeleweka kabisa kwa wanadamu: pia huitwa "msimbo wa chanzo", kwa urahisi "msimbo" au "misimbo ya chanzo". Zimeandikwa kwa faili rahisi za maandishi kwa kutumia yoyote mhariri wa maandishi, hata kwa kutumia notepad. Kisha zinageuzwa kuwa seti za zero na zinazoeleweka kwa processor kutumia mkusanyaji: mkusanyaji hupokea msimbo wa chanzo kama pembejeo, na huunda. binary inayoweza kutekelezwa, ile inayoeleweka kwa processor.

Faili za binary hazisomeki na kwa ujumla zinakusudiwa tu kutekelezwa na kichakataji. Wanaweza kuwa wa aina tofauti kulingana na kile walichopokea: .exe ni programu za Windows, .hex ni programu za kutekelezwa na kidhibiti kidogo cha aina ya Arduino, nk.

Kwa nini kuna lugha nyingi za programu na ni tofauti gani?

    Kwa nini? Kwa sababu kuna watu wengi na makampuni duniani, na wengi waliamini kwamba wanaweza kufanya bora zaidi: rahisi zaidi, wazi, haraka, nyembamba.

    Kuna tofauti gani: lugha tofauti zina usawa tofauti wa kasi ya uandishi, usomaji na kasi ya utekelezaji.

Wacha tuangalie programu ile ile inayoonyesha wimbo kuhusu chupa 99 za bia kwenye skrini katika lugha tofauti za programu.

Kwa mfano, lugha ya Perl. Imeandikwa kwa haraka; haiwezekani kuelewa nini programu ilimaanisha; kutekelezwa polepole:

sub b( $n = 99 - @_ - $_ || Hapana; "$n chupa" . "s" x!!-- $n . "ya bia" ) ; $w = "ukutani"; ramani ya kufa ( b. "$w, \n". b. ", \n Chukua moja chini, ipitishe,\n ". b (0). "$w. \n\n"} 0 .. 98

Lugha ya Java. Inachukua muda mrefu kiasi kuandika; rahisi kusoma; hufanya haraka sana, lakini inachukua kumbukumbu nyingi:

chupa za darasa ( utupu kuu wa umma ( Kamba args) ( Kamba s = "s" ; kwa (int beers= 99 ; bia>- 1 ; ) ( Mfumo.toka .chapisha (bia + "chupa" + s + "ya bia ukutani, " ) ; Mfumo.out .println (bia + "chupa" + s + "ya bia, " ) ; ikiwa (bia== 0 ) ( Mfumo.out .chapisha ( "Nenda dukani, nunua zaidi,") ; Mfumo.out .println ( "Chupa 99 za bia ukutani.\n") ; Mfumo.toka(0); ) mwingine Mfumo.out .chapisha ( "Shusha moja chini, ipitishe karibu,"); s = (-- bia == 1) ? "" : "s" ; Mfumo.out .println (bia + "chupa" + s + " ya bia ukutani.\n ") ; } } }

Lugha ya mkutano. Inachukua muda mrefu kuandika; vigumu kusoma; hufanya haraka sana:

sehemu ya msimbo chukulia cs: msimbo, ds: msimbo org 100h anza:; Kitanzi kikuu mov cx, 99; chupa kuanza na loopstart: piga simu printcx; chapisha nambari mov dx , offset line1 ; chapisha sehemu iliyobaki ya mstari wa kwanza mov ah, 9; MS-DOS chapisha kamba ya kawaida int 21h wito printcx ; chapisha nambari mov dx , laini ya kukabiliana2_3 ; mapumziko ya mstari wa 2 na 3 mov ah, 9 int 21h dec cx; ondoa simu moja chini printcx; chapisha nambari mov dx , offset line4 ; chapisha sehemu iliyobaki ya mstari wa nne mov ah, 9 int 21h cmp cx, 0; Nje ya bia? jne kitanzi; ikiwa sivyo, endelea int 20h; ondoka kwa MS-DOS ; utaratibu mdogo wa kuchapisha rejista ya CX katika desimali printcx: mov di , rekebisha numbufferend ; jaza bafa kutoka mwisho shoka shoka, cx ; weka nambari kwenye AX ili tuweze kuigawanya printcxloop: mov dx, 0 ; neno la mpangilio wa juu la nambari - kila wakati 0 mov bx, 10 div bx ; gawanya DX:AX kwa 10. AX=quotient, DX=salio ongeza dl , "0" ; badilisha salio kuwa herufi ya ASCII mov[ds:di],dl; weka kwenye shoka la bafa ya cmp, 0; Je, kuna tarakimu zaidi za kukokotoa? je printcxend; kama sivyo, mwisho dec di ; weka tarakimu inayofuata kabla ya ile ya sasa jmp printcxloop ; kitanzi printcxend: mov dx , di ; chapa, kuanzia tarakimu ya mwisho iliyokokotwa mov ah, 9 int 21h ret; Mstari wa data 1 db "chupa za bia ukutani,", 13 , 10 , "$" line2_3 db "chupa za bia," 13 , 10 , "Shusha moja chini, ipitishe karibu,", 13 , 10 , "$" line4 db "chupa za bia kwenye ukuta.", 13 , 10 , 13 , 10 , "$" numbuffer db 0 , 0 , 0 , 0 , 0 numbufferend db 0 , "$" msimbo unaisha mwanzo wa mwisho

Je, Arduino imepangwaje?

Ikiwa tunazungumza juu ya Arduino au vidhibiti vidogo kutoka Atmel, unaweza kuandika programu kwa lugha gani? Jibu la kinadharia: yoyote. Lakini katika mazoezi, chaguo ni mdogo kwa lugha Assembler, C na C ++. Hii ni kutokana na ukweli kwamba, ikilinganishwa na kompyuta ya kompyuta, wana rasilimali ndogo sana. Kilobytes ya kumbukumbu, si gigabytes. Megahertz kwenye processor, sio gigahertz. Hii ni bei ya kulipa kwa bei nafuu na ufanisi wa nishati.

Kwa hivyo, tunahitaji lugha ambayo inaweza kukusanya na kutekeleza kwa ufanisi. Hiyo ni, inatafsiriwa kwa zero hizo sana na zile kutoka kwa maagizo vizuri iwezekanavyo, bila kupoteza maagizo ya thamani na kumbukumbu. Lugha zilizotajwa hapo juu zina ufanisi wa aina hii. Kwa kuzitumia hata ndani ya mipaka finyu ya rasilimali za microcontroller, unaweza kuandika programu zenye vipengele vingi zinazoendesha haraka.

Assembler, kama umeona, haiwezi kuitwa rahisi na ya kifahari zaidi na, kwa sababu hiyo, lugha ya bendera ya Arduino ni C/C++.

Vyanzo vingi vinasema kwamba Arduino imepangwa katika lugha ya Arduino, Processing, Wiring. Hii si kauli sahihi kabisa. Arduino imepangwa katika C/C++, na kile kinachoitwa kwa maneno haya ni rahisi tu "kit mwili" ambayo inakuwezesha kutatua matatizo mengi ya kawaida bila kurejesha gurudumu kila wakati.

Kwa nini C na C++ zimetajwa katika sentensi moja? C++ ni muundo mkuu wa C. Kila mpango wa C ni mpango halali wa C++, lakini si kinyume chake. Unaweza kutumia zote mbili. Mara nyingi, hutafikiria hata kile unachotumia wakati wa kutatua shida ya sasa.

Karibu na uhakika: mpango wa kwanza

Wacha tuandike programu ya kwanza ya Arduino na tufanye bodi iitekeleze. Unahitaji kuunda faili ya maandishi na msimbo wa chanzo, uikusanye na kulisha faili ya binary inayosababisha kwa microcontroller kwenye ubao.

Twende kwa utaratibu. Hebu tuandike msimbo wa chanzo. Unaweza kuiandika kwenye notepad au kihariri kingine chochote. Hata hivyo, ili kufanya kazi iwe rahisi, kuna kinachojulikana mazingira ya maendeleo (IDE: Integrated Development Environment). Kwa namna ya chombo kimoja, hutoa kihariri cha maandishi kwa kuangazia na vidokezo, mkusanyiko uliozinduliwa na kifungo, na furaha nyingine nyingi. Kwa Arduino, mazingira haya yanaitwa Arduino IDE. Inapatikana kwa uhuru kwa kupakuliwa kwenye tovuti rasmi.

Sakinisha mazingira na uiendeshe. Katika dirisha inayoonekana, utaona: nafasi nyingi hutolewa kwa mhariri wa maandishi. Kanuni imeandikwa ndani yake. Kanuni katika ulimwengu wa Arduino pia huitwa mchoro.

Kwa hivyo wacha tuandike mchoro ambao haufanyi chochote. Hiyo ni, kiwango cha chini cha programu sahihi katika C ++, ambayo inapoteza muda tu.

usanidi utupu() () kitanzi batili() ()

Tusizingatie maana ya msimbo ulioandikwa kwa sasa. Hebu tukusanye. Ili kufanya hivyo, katika IDE ya Arduino, kuna kitufe cha "Thibitisha" kwenye upau wa zana. Bofya na katika sekunde chache faili ya binary itakuwa tayari. Hii itatangazwa na uandishi "Umemaliza kuandaa" chini ya mhariri wa maandishi.

Matokeo yake, tuna faili ya binary na ugani .hex, ambayo inaweza kutekelezwa na microcontroller.

Sasa unahitaji kuiingiza kwenye Arduino. Utaratibu huu unaitwa booting, flashing au mafuriko. Ili kupakia kwenye Kitambulisho cha Arduino, kuna kitufe cha "Pakia" kwenye upau wa vidhibiti. Unganisha Arduino kwenye kompyuta yako kupitia kebo ya USB, bofya "Pakia" na baada ya muda mfupi programu itapakiwa kwenye Arduino. Katika kesi hii, programu iliyokuwa hapo awali itafutwa.

Firmware iliyofanikiwa itatangazwa kwa uandishi "Upakiaji Umekamilika".

Ikiwa utapata hitilafu unapojaribu kupakua, hakikisha kwamba:

    Katika Vyombo → menyu ya Bodi, chagua bandari ambayo Arduino imeunganishwa. Unaweza kuunganisha kebo ya USB ndani na nje ili kuona ni bandari gani inayoonekana na kutoweka: hii ni Arduino.

    Umeweka viendeshi muhimu kwa Arduino. Hii inahitajika kwenye Windows, haihitajiki kwenye Linux, na inahitajika tu kwenye bodi za awali za Arduino Duemilanove kwenye MacOS.

Hongera! Umetoka kwenye ubao tupu hadi kwenye programu ya kufanya kazi huko Arduino. Anaweza asifanye chochote, lakini hii tayari ni mafanikio.

Arduino ni maarufu sana kati ya wapenda muundo wote. Wale ambao hawajawahi kuisikia pia wanapaswa kutambulishwa kwayo.

Arduino ni nini?

Unawezaje kuelezea kwa ufupi Arduino? Maneno bora yatakuwa: Arduino ni chombo ambacho kinaweza kutumika kuunda vifaa mbalimbali vya elektroniki. Kwa asili, hii ni jukwaa la kweli la kompyuta ya madhumuni ya jumla. Inaweza kutumika wote kwa ajili ya kujenga nyaya rahisi na kwa ajili ya kutekeleza miradi ngumu kabisa.

Muumbaji hutegemea vifaa vyake, ambavyo ni bodi ya pembejeo-pato. Ili kupanga bodi, lugha ambazo zinategemea C/C++ hutumiwa. Wanaitwa, kwa mtiririko huo, Usindikaji / Wiring. Kutoka kwa kikundi C walirithi unyenyekevu mkubwa, shukrani ambayo wanaweza kueleweka haraka sana na mtu yeyote, na kutumia maarifa katika mazoezi sio shida kubwa. Ili uelewe urahisi wa kazi, mara nyingi husemwa kuwa Arduino ni ya wabuni wa wachawi wanaoanza. Hata watoto wanaweza kuelewa bodi za Arduino.

Unaweza kukusanya nini juu yake?

Matumizi ya Arduino ni tofauti kabisa; inaweza kutumika kwa mifano rahisi zaidi, ambayo itapendekezwa mwishoni mwa kifungu, na kwa mifumo ngumu kabisa, pamoja na manipulators, roboti au mashine za uzalishaji. Baadhi ya mafundi hufaulu kutumia mifumo hiyo kutengeneza kompyuta za mkononi, simu, uchunguzi wa nyumbani na mifumo ya usalama, mifumo mahiri ya nyumbani, au kompyuta tu. Miradi ya Arduino kwa Kompyuta, ambayo hata wale ambao hawana uzoefu wanaweza kuanza nayo, iko mwisho wa makala. Wanaweza hata kutumiwa kuunda mifumo ya uhalisia dhahania ya primitive. Shukrani zote kwa maunzi na uwezo mwingi ambao programu ya Arduino hutoa.

Ninaweza kununua wapi vipengele?

Vipengele vilivyotengenezwa nchini Italia vinachukuliwa kuwa asili. Lakini bei ya vifaa vile sio chini. Kwa hiyo, idadi ya makampuni au hata watu binafsi hufanya mbinu za ufundi za vifaa na vipengele vinavyoendana na Arduino, ambavyo kwa utani huitwa clones za uzalishaji. Wakati wa kununua clones vile, mtu hawezi kusema kwa uhakika kwamba watafanya kazi, lakini tamaa ya kuokoa pesa inachukua.

Vipengele vinaweza kununuliwa ama kama sehemu ya kits au tofauti. Kuna hata vifaa vilivyotayarishwa awali vya kuunganisha magari, helikopta na aina tofauti za udhibiti, au meli. Seti kama ile iliyo kwenye picha hapo juu, iliyotengenezwa nchini China, inagharimu $49.

Zaidi kuhusu vifaa

Bodi ya Arduino ni kidhibiti kidogo cha AVR, ambacho kimewashwa na bootloader na ina bandari ya chini ya USB-UART inayohitajika. Kuna vipengele vingine muhimu, lakini ndani ya upeo wa makala itakuwa bora kuzingatia tu vipengele hivi viwili.

Kwanza, kuhusu microcontroller, utaratibu uliojengwa kwenye mzunguko mmoja ambao programu iliyotengenezwa iko. Mpango huo unaweza kuathiriwa na vifungo vya kushinikiza, kupokea ishara kutoka kwa vipengele vya uumbaji (resistors, transistors, sensorer, nk), nk Aidha, sensorer inaweza kuwa tofauti sana kwa madhumuni yao: taa, kuongeza kasi, joto, umbali, shinikizo, vikwazo n.k. Sehemu rahisi zinaweza kutumika kama vifaa vya kuonyesha, kutoka kwa LED na tweeter hadi vifaa changamano, kama vile maonyesho ya picha. Ubora unaozingatiwa ni motors, valves, relays, servos, electromagnets na wengine wengi, ambayo inaweza kuchukua muda mrefu sana kuorodheshwa. MK hufanya kazi moja kwa moja na baadhi ya orodha hizi, kwa kutumia waya zinazounganisha. Njia zingine zinahitaji adapta. Lakini mara tu unapoanza kuunda, itakuwa ngumu kwako kujiondoa. Sasa hebu tuzungumze kuhusu programu ya Arduino.

Jifunze zaidi kuhusu mchakato wa upangaji wa bodi

Programu ambayo tayari iko tayari kufanya kazi kwenye microcontroller inaitwa firmware. Kunaweza kuwa na mradi mmoja au miradi ya Arduino, kwa hivyo itakuwa vyema kuhifadhi kila firmware kwenye folda tofauti ili kuharakisha mchakato wa kutafuta faili muhimu. Inaangaziwa kwenye kioo cha MK kwa kutumia vifaa maalum: watengeneza programu. Na hapa Arduino ina faida moja - hauitaji programu. Kila kitu kinafanywa ili programu ya Arduino kwa Kompyuta sio ngumu. Nambari iliyoandikwa inaweza kupakiwa kwenye MK kupitia kebo ya USB. Faida hii haipatikani na programu fulani iliyojengwa kabla, lakini kwa firmware maalum - bootloader. Bootloader ni programu maalum ambayo huanza mara moja baada ya kuunganishwa na inasikiliza ikiwa kuna amri yoyote, iwe ya kuangaza kioo, ikiwa kuna miradi ya Arduino au la. Kuna faida kadhaa za kuvutia sana za kutumia bootloader:

  1. Kutumia njia moja tu ya mawasiliano, ambayo hauhitaji gharama za ziada za muda. Kwa hivyo, miradi ya Arduino hauhitaji kuunganisha waya nyingi tofauti na kutakuwa na machafuko wakati wa kuzitumia. Kebo moja ya USB inatosha kwa operesheni iliyofanikiwa.
  2. Ulinzi kutoka kwa mikono iliyopotoka. Ni rahisi sana kuleta kidhibiti kidogo kwenye hali ya matofali kwa kutumia firmware ya moja kwa moja; hauitaji kufanya kazi kwa bidii. Wakati wa kufanya kazi na bootloader, hutaweza kufikia mipangilio inayoweza kuwa hatari (kwa msaada wa programu ya maendeleo, bila shaka, vinginevyo kila kitu kinaweza kuvunjika). Kwa hiyo, Arduino kwa Kompyuta imekusudiwa sio tu kutoka kwa mtazamo kwamba inaeleweka na inafaa, pia itawawezesha kuepuka gharama zisizohitajika za kifedha zinazohusiana na kutokuwa na uzoefu wa mtu anayefanya kazi nao.

Miradi ya kuanza

Unapopata kit, chuma cha soldering, rosini na solder, haipaswi mara moja kuchonga miundo ngumu sana. Kwa kweli, unaweza kuwafanya, lakini nafasi ya kufanikiwa katika Arduino kwa Kompyuta ni ndogo sana na miradi ngumu. Ili kutoa mafunzo na kuboresha ujuzi wako, unaweza kujaribu kutekeleza mawazo machache rahisi ambayo yatakusaidia kuelewa mwingiliano na uendeshaji wa Arduino. Kama hatua za kwanza za kufanya kazi na Arduino kwa Kompyuta, tunaweza kukushauri kuzingatia:

  1. Unda moja ambayo itafanya kazi shukrani kwa Arduino.
  2. Kuunganisha kitufe tofauti kwa Arduino. Katika kesi hii, unaweza kuifanya ili kifungo kiweze kurekebisha mwanga wa LED kutoka kwa hatua ya 1.
  3. Uunganisho wa Potentiometer.
  4. Udhibiti wa gari la Servo.
  5. Kuunganisha na kufanya kazi na LED ya rangi tatu.
  6. Kuunganisha kipengele cha piezoelectric.
  7. Kuunganisha photoresistor.
  8. Kuunganisha sensor ya mwendo na ishara kuhusu uendeshaji wake.
  9. Kuunganisha sensor ya unyevu au joto.

Miradi ya siku zijazo

Kuna uwezekano kwamba unavutiwa na Arduino ili kuunganisha LED za kibinafsi. Uwezekano mkubwa zaidi, unavutiwa na fursa ya kuunda gari lako mwenyewe, au turntable ya kuruka. Miradi hii ni vigumu kutekeleza na itahitaji muda mwingi na uvumilivu, lakini baada ya kukamilika, utapata kile unachotaka: uzoefu wa thamani wa kubuni wa Arduino kwa Kompyuta.