Jukwaa la programu ya Arduino. Lugha ya programu ya Arduino

  • 21.09.2019

Jambo la kwanza kuanza na kusimamia Arduino ni kununua bodi ya utatuzi (itakuwa nzuri kununua mara moja bodi ya mzunguko, nk). Nimeelezea tayari ni aina gani za bodi za Arduino ziko kwenye soko. Ikiwa bado haujasoma nakala hiyo, ninakushauri uisome. Ili kujifunza misingi, chagua bodi ya kawaida ya Arduino Uno (nakala halisi au nzuri ya Wachina - ni juu yako). Wakati wa kuunganisha bodi ya asili kwa mara ya kwanza, haipaswi kuwa na shida, lakini na "Wachina" utahitaji kuchimba zaidi ndani yake (usijali - nitaonyesha na kusema kila kitu).

Tunaunganisha Arduino kwenye kompyuta na kebo ya USB. LED kwenye bodi inapaswa kuwaka Washa". Kifaa kipya kitaonekana katika msimamizi wa kifaa " Kifaa kisichojulikana". Dereva anahitaji kusanikishwa. Hapa nitaongeza ndogo utata (paka aliwasihi - sikukumbuka ni yupi wa madereva aliyeamua " shida isiyojulikana ya kifaa».

Iliyopakuliwa mapema na kufungua mazingira ya programu ya Arduino ( arduino-1.6.6-madirisha). Kisha nikapakua hii. Ni kujitolea. Ilizindua faili CH341SER.EXE... Chagua ufungaji (INSTALL)... Baada ya usanidi, ujumbe ulionekana, ukibonyeza " sawa”(Sikupata muda wa kuisoma).

Kisha nikaenda kwenye mali ya "kifaa kisichojulikana" na nikachagua kitufe cha "Sasisha Dereva". Nilichagua chaguo "Sakinisha kutoka eneo maalum" - ilionyesha folda na mazingira ya programu ya Arduino isiyofunguliwa. Na tazama - kila kitu kilifanya kazi vizuri ...

Endesha programu ya Arduino (1.6.6 kwa upande wangu) na ruhusu ufikiaji.

Miradi yote (mipango) ya Arduino ina sehemu mbili: kuanzisha batili na kitanzi batili. kuanzisha batili inatekelezwa mara moja tu, na kitanzi batili huendesha tena na tena.

Kabla ya kuendelea, kuna hatua mbili zinazohitajika:

- onyesha kwenye programu ya Arduino ambayo unatumia bodi. Zana-\u003e bodi-\u003e Arduino Uno. Ikiwa alama iko tayari kwenye bodi unayohitaji, hiyo ni nzuri, ikiwa sivyo, tunaweka alama.

- onyesha katika mazingira ya programu ambayo unatumia bandari kuu kuwasiliana na bodi. Zana-\u003e bandari-\u003e COM3. Ikiwa alama iko tayari kwenye bandari, hiyo ni nzuri, ikiwa sivyo, tunaweka alama. Ikiwa una zaidi ya bandari moja katika sehemu ya bandari, unajuaje ni ipi inayotumiwa kuunganisha kwenye bodi? Tunachukua bodi na kukata waya kutoka kwake. Tunarudi kwenye bandari na kuona ni ipi imepotea. Kwa upande wangu, kichupo cha "bandari" hakikuweza kufanya kazi kabisa.

Unganisha kebo ya USB tena.

Hakuna moduli za ziada zinazohitajika kwa programu ya kwanza. Tutawasha LED, ambayo tayari imewekwa kwenye ubao (kwenye pini 13 ya microcontroller).

Kwanza, wacha tusanidi pin 13 (pembejeo au pato).

Ili kufanya hivyo, ingiza kwenye kizuizi " kuanzisha batili»Amri pinMode , kwenye mabano tunaonyesha vigezo (13, OUTPUT) (Ni hitimisho gani linalohusika, Njia ya utendaji). Mazingira ya programu huangazia maneno / amri na rangi inayofaa ya fonti.

Nenda kwenye kizuizi " kitanzi batiliNa ingiza amri andika na vigezo (13, JUU) .


Programu ya kwanza iko tayari, sasa inabaki kuipakia kwenye microcontroller. Bonyeza kitufe cha "PAKUA".

LED iliwaka. Lakini usiwe na wasiwasi juu ya unyenyekevu wa programu ya kwanza. Umetambua tu amri yako ya kwanza ya kudhibiti. Badala ya LED, baada ya yote, unaweza kuunganisha mzigo wowote (iwe ni taa kwenye chumba au servo inayokata usambazaji wa maji), lakini tutazungumza juu yake yote baadaye ..

Tuliwasha LED, iliangaza kidogo, ni wakati wa kuizima. Ili kufanya hivyo, tutarekebisha programu tuliyoandika. Badala ya " JUU "Andika" CHINI ».


Bonyeza kitufe cha "PAKUA". LED imezimwa.

Tayari tulifahamiana na dhana "", ni wakati wa kuitumia. Programu zaidi zitakuwa ngumu zaidi na ngumu, na kazi ya kuibadilisha itachukua muda zaidi na zaidi ikiwa tutaweka mtindo huu wa usimbuaji.

Tunaangalia programu (washa tena LED). Wacha tuweke nambari ya siri ya mdhibiti mdogo sio kwa nambari 13 , lakini tofauti ambayo itapewa thamani ya pato linalofanana (kwa upande wetu, 13). Katika siku zijazo, itakuwa rahisi sana kubadilisha maadili ya vigeugeu mwanzoni mwa programu, badala ya kupotosha nambari kwa kutafuta sehemu hizo ambapo inahitajika kuchukua nafasi ya maadili.

Unda ubadilishaji wa ulimwengu int LED_pin \u003d 13; (aina ya kutofautisha, jina linalobadilika, dhamana iliyopewa).


Bonyeza kitufe cha "PAKUA". LED imewashwa. Kila kitu hufanya kazi kikamilifu.

Katika somo hili, pamoja na kuwasha / kuzima LED, tutajifunza pia jinsi ya kuipepesa.

Ili kufanya hivyo, ingiza amri ya pili " andika» na vigezo (Pini ya LED, CHINI).


Bonyeza kitufe cha "PAKUA". Na tunaona nini? Taa za LED zinawaka "hadi sakafu ya agizo". Sababu iko katika ukweli kwamba wakati wa kubadilisha majimbo mawili ( JUU na CHINI ) ni ya kupuuza na jicho la mwanadamu haliwezi kuchukua mabadiliko haya. Inahitajika kuongeza muda uliotumiwa na LED katika moja ya majimbo. Ili kufanya hivyo, andika amri kuchelewesha na parameter (1000 ) ... Latency katika milliseconds: milliseconds 1000 - sekunde 1. Algorithm ya programu ni kama ifuatavyo: washa LED - subiri sekunde 1, zima LED - subiri sekunde 1, nk.


Bonyeza kitufe cha "PAKUA". Taa ilianza kuteremka. Kila kitu kinafanya kazi.

Wacha tukamilishe programu kwa kuunda tofauti ambayo itapewa dhamana ambayo inawajibika kwa muda wa kuchelewa.


Bonyeza kitufe cha "PAKUA". Taa za LED kama ilivyokuwa.

Wacha tukamilishe programu tuliyoandika. Kazi ni kama ifuatavyo:

  • Kuwasha kwa sekunde 0.2 na kuzima kwa sekunde 0.8;
  • LED imewashwa kwa sekunde 0.7 na imezimwa kwa sekunde 0.3.

Programu imeunda vigeuzi 2 ambavyo vinahusika na ucheleweshaji wa wakati. Mtu anafafanua wakati wa kufanya kazi kwa LED, na ya pili huamua wakati wa kufanya kazi kwa LED.

Asante kwa umakini. Nitakuona hivi karibuni!

Katika maisha ya mchezaji wa arduino, mapema au baadaye wakati unakuja wakati unakuwa mdogo katika mazingira ya kiwango cha maendeleo. Ikiwa michoro inakosa kumbukumbu, inahitaji wakati mgumu na ufanye kazi na usumbufu, au unataka tu kuwa karibu na vifaa, basi ni wakati wa kubadili C. Wahandisi wa elektroniki wenye ujuzi watakataa kwa dharau wakati wa kutajwa kwa Arduino na kutuma newbie kwenye duka la redio kwa chuma cha kutengeneza. Huu unaweza kuwa sio ushauri mbaya zaidi, lakini hatutaufuata bado. Ikiwa tutatupa IDE ya Arduino na lugha ya wiring / usindikaji, tunabaki na bodi bora ya utatuzi, tayari ikiwa na kila kitu muhimu kwa mdhibiti mdogo kufanya kazi. Na, muhimu, bootloader tayari imeunganishwa kwenye kumbukumbu ya mtawala, ambayo hukuruhusu kupakua firmware bila kutumia programu.

Kwa programu katika C, tunahitaji Zana ya AVR GCC.

Tunahitaji pia IDE ya Arduino iliyosanikishwa, kwani ina matumizi ya avrdude, ambayo inahitajika kupakua firmware kwa kidhibiti. CrossPack pia ina avrdude, lakini toleo linalokuja nalo haifanyi kazi na Arduino.

Baada ya kila kitu kusanikishwa, wacha tuunde mradi wetu wa kwanza. Kwanza, wacha tuandike Faili ya kutengeneza... Itaturuhusu kuepuka kuingiza amri ndefu kwa mikono kila wakati firmware inakusanywa na kupakiwa.

# Mdhibiti amewekwa kwenye ubao. Inaweza kuwa tofauti, kwa mfano atmega328 DEVICE \u003d atmega168 # 16 MHz saa COCK \u003d 16000000 # Anza amri avrdude. Inahitaji kunakiliwa kutoka IDE ya Arduino. AVRDUDE \u003d / Maombi/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C / Applications / Arduino.app / Contents / Rasilimali / Java / vifaa / zana / avr / etc / avrdude.conf -carduino -P / dev / tty.usbserial-A600dAAQ -b19200 -D -p atmega168 OBJECTS \u003d kuu.o COMPILE \u003d avr-gcc -Wall -Os -DF_CPU \u003d $ (CLOCK) -mmcu \u003d $ (DEVICE) zote: kuu .hex .co: $ (COMPILE) -c $< -o $@ .S.o: $(COMPILE) -x assembler-with-cpp -c $< -o $@ .c.s: $(COMPILE) -S $< -o $@ flash: all $(AVRDUDE) -U flash:w:main.hex:i clean: rm -f main.hex main.elf $(OBJECTS) main.elf: $(OBJECTS) $(COMPILE) -o main.elf $(OBJECTS) main.hex: main.elf rm -f main.hex avr-objcopy -j .text -j .data -O ihex main.elf main.hex avr-size --format=avr --mcu=$(DEVICE) main.elf

Katika faili hii, tunahitaji kuingiza amri yetu ya kuendesha avrdude. Itaonekana tofauti kwenye mifumo tofauti. Ili kujua toleo lako, anzisha IDE ya Arduino na uangalie sanduku la kuangalia "Onyesha verbose wakati wa kupakia" kwenye mipangilio.

Sasa pakia mchoro wowote kwenye Arduino na utazame ujumbe ulioonyeshwa chini ya dirisha. Tunapata wito wa kupigania huko, nakili kila kitu isipokuwa -Uflash parameter na uibandike kwenye Faili ya maandishi baada ya "AVRDUDE \u003d".


Ujumbe wa haraka: indents zote za Makefile ni tabo (Kitufe cha Tab). Ikiwa mhariri wa maandishi yako hubadilisha herufi hizi na nafasi, make itakataa kujenga mradi.

Sasa wacha tuunde faili kuu.c - maandishi halisi ya programu yetu, ambayo kwa jadi tunapepesa LED.

#jumlisha #jumlisha #fafanua LED_PIN 5 int kuu () (DDRB | \u003d 1<< LED_PIN; while(1) { PORTB |= 1 << LED_PIN; _delay_ms(1000); PORTB &= ~(1 << LED_PIN); _delay_ms(1000); } return 0; }

Mradi wetu uko tayari. Wacha tufungue koni kwenye saraka ya mradi wetu na weka amri ya "fanya":


Kama unavyoona, saizi ya firmware inayosababishwa ni ka 180 tu. Mchoro sawa wa Arduino huchukua kaiti 1116 kwenye kumbukumbu ya mtawala.

Sasa hebu turudi kwenye koni na andika "fanya flash" kupakia faili iliyojumuishwa kwenye kidhibiti:


Ikiwa upakuaji ulifanikiwa, LED iliyounganishwa na kubandika 13 ya bodi itaangaza kwa furaha. Wakati mwingine avrdude haiwezi kupata bodi au kuanguka kwa sababu ya muda - katika kesi hii, kuzungusha kebo ya USB inaweza kusaidia. Pia, ili kuzuia migongano ya ufikiaji wa bodi, hakikisha umefunga Arduino IDE kabla ya amri ya "fanya flash".

Labda mambo mengi yaliyoelezewa katika nakala hii yataonekana dhahiri kwa watengenezaji wenye uzoefu. Nilijaribu kuelezea mchakato huo kwa lugha inayoeleweka zaidi kwa mchezaji wa novice arduino na kukusanya mahali pamoja habari ambayo niliweza kupata kutoka kwa vyanzo anuwai, na kuthibitishwa kwa nguvu. Labda kwa mtu kifungu hiki kitaokoa masaa kadhaa ya wakati.

Bahati nzuri katika kudhibiti watawala wadogo.

Je! Kusoma kwa watawala wadogo kunaonekana kuwa ngumu na isiyoeleweka? Kabla ya ujio wa Arudino, kwa kweli haikuwa rahisi na ilihitaji seti fulani ya wapangaji programu na vifaa vingine.

Hii ni aina ya mjenzi wa elektroniki. Kazi ya awali ya mradi huo ni kuruhusu watu kujifunza kwa urahisi kupanga vifaa vya elektroniki, wakati wa kutumia muda mdogo kwenye sehemu ya elektroniki.

Mkutano wa mizunguko ngumu zaidi na unganisho la bodi zinaweza kufanywa bila chuma cha kutengeneza, lakini kwa msaada wa wanarukaji wenye unganisho linaloweza kutenganishwa "wa kiume" na "wa kike". Kwa njia hii, vitu vyote vilivyounganishwa na bodi za upanuzi zinaweza kushikamana, ambazo katika leksimu ya Arduins huitwa tu "Shields" (ngao).

Je! Bodi ya kwanza ya Arduino kununua kwa mwanzoni?

Inachukuliwa kuwa bodi ya msingi na maarufu. Bodi hii ni saizi ya kadi ya mkopo. Kubwa kabisa. Ngao nyingi kwenye soko zinafaa kabisa. Kuna soketi kwenye bodi ya kuunganisha vifaa vya nje.

Katika duka za ndani za 2017, bei yake ni karibu dola 4-5. Kwenye mifano ya kisasa, moyo wake ni Atmega328.

Picha ya bodi ya Arduino na kufafanua kazi za kila pini, Arduino UNO pinout

Mdhibiti mdogo kwenye bodi hii ni microcircuit ndefu kwenye kifurushi cha DIP28, ambayo inamaanisha kuwa ina pini 28.

Bodi inayofuata maarufu hugharimu karibu nusu ya bei ya ile ya awali - $ 2-3. Hii ni ada. Bodi za sasa zimejengwa na Atmega328 sawa, kiutendaji zinafanana na UNO, tofauti za saizi na suluhisho la kulinganisha na USB, zaidi baadaye. Tofauti nyingine ni kwamba kuziba katika mfumo wa sindano hutolewa kwa vifaa vya kuunganisha kwenye bodi.

Idadi ya pini (miguu) ya bodi hii ni sawa, lakini unaweza kuona kwamba mdhibiti mdogo ametengenezwa kwa kifurushi zaidi cha TQFP32, ADC6 na ADC7 zimeongezwa kwenye kifurushi, miguu mingine miwili "ya ziada" inaiga basi ya nguvu. Vipimo vyake ni sawa - karibu saizi ya kidole chako.

Bodi ya tatu maarufu zaidi ni kwamba haina bandari ya USB ya kuunganisha kwenye kompyuta, nitakuambia jinsi mawasiliano hufanywa baadaye kidogo.

Hii ndio bodi ndogo kuliko zote zilizopitiwa, vinginevyo ni sawa na hizo mbili zilizopita, na moyo wake bado ni Atmega328. Hatutazingatia bodi zingine, kwani hii ni nakala ya Kompyuta, na kulinganisha bodi ni mada ya nakala tofauti.

Katika sehemu ya juu, mchoro wa unganisho la USB-UART, pini "GRN" - iliyotiwa waya kwa mzunguko wa kuweka tena mdhibiti mdogo, inaweza kuitwa tofauti, ambayo utapata baadaye.

Wakati UNO ni rahisi kwa mfano, Nano na Pro Mini ni rahisi kwa matoleo ya mwisho ya mradi wako kwa sababu wanachukua nafasi kidogo.

Jinsi ya kuunganisha Arduino kwenye kompyuta?

Arduino Uno na Nano huunganisha kwenye kompyuta yako kupitia USB. Wakati huo huo, hakuna msaada wa vifaa kwa bandari ya USB, suluhisho la mzunguko wa ubadilishaji hutumiwa hapa, kawaida huitwa USB-to-Serial au USB-UART (rs-232). Wakati huo huo, bootloader maalum ya Arduino imeunganishwa kwenye microcontroller, ambayo inaruhusu kuangaza kwenye basi hizi.

Arduino Uno hutumia kiunga hiki kwenye microcontroller na msaada wa USB - ATmega16U2 (AT16U2). Inageuka kuwa microcontroller ya ziada kwenye bodi inahitajika kuwasha mdhibiti mkuu.

Katika Arduino Nano, hii inatekelezwa na chip ya FT232R, au analog yake CH340. Huyu sio mdhibiti mdogo - ni kibadilishaji cha kiwango, ukweli huu unafanya iwe rahisi kukusanyika Arduino Nano kutoka mwanzoni na mikono yako mwenyewe.

Madereva kawaida huwekwa moja kwa moja wakati bodi ya Arduino imeunganishwa. Walakini, wakati nilinunua nakala ya Kichina ya Arduino Nano, kifaa hicho kiligunduliwa, lakini hakikufanya kazi, stika iliyozunguka na data juu ya tarehe ya kutolewa iliambatishwa kwa kibadilishaji, sijui ikiwa hii ilifanywa kwa makusudi, lakini nilipoionea nikaona alama ya CH340.

Kabla ya hapo, sikukuta hii na nilidhani kuwa waongofu wote wa USB-UART wamekusanyika kwenye FT232, ilibidi nipakue madereva, ni rahisi kupata kwa ombi "Arduino ch340 driver" Baada ya ufungaji rahisi, kila kitu kilifanya kazi!

Mdhibiti mdogo pia anaweza kuwezeshwa kupitia bandari hiyo hiyo ya USB, i.e. ikiwa utaiunganisha na adapta ya simu ya rununu, mfumo wako utafanya kazi.

Je! Ikiwa bodi yangu haina USB?

Bodi ya Arduino Pro Mini ni ndogo. Hii ilifanikiwa kwa kuondoa kontakt USB ya firmware na kibadilishaji hicho cha USB-UART. Kwa hivyo, lazima inunuliwe kando. Kigeuzi rahisi zaidi cha CH340 (cha bei rahisi), CPL2102 na FT232R, inauzwa kwa $ 1.

Wakati wa kununua, zingatia ni voltage gani ambayo adapta hii imeundwa. Pro mini inakuja katika toleo la 3.3 na 5 V, na mara nyingi kuna jumper kwenye waongofu kubadili voltage ya usambazaji.

Wakati wa kuwasha Pro Mini, mara moja kabla ya kuianza, unahitaji kubonyeza Rudisha, lakini kwa waongofu na DTR hii sio lazima, mchoro wa unganisho uko kwenye takwimu hapa chini.

Wanajiunga na vituo maalum vya kike na kike.

Kwa kweli, viunganisho vyote vinaweza kufanywa kwa kutumia vituo kama hivi (Dupont), zote ziko pande zote mbili na soketi na plugs, na upande mmoja na tundu, na kwa upande mwingine na kuziba.

Ninaandikaje programu za Arduino?

Kufanya kazi na michoro (jina la firmware iko katika lugha ya Arduino), kuna mazingira maalum ya maendeleo ya IDE ya Arduino, unaweza kuipakua bure kutoka kwa wavuti rasmi au kutoka kwa rasilimali yoyote ya mada, kawaida hakuna shida na usanikishaji.

Hivi ndivyo interface ya programu inavyoonekana. Unaweza kuandika programu katika lugha rahisi ya C AVR iliyoundwa mahsusi kwa Arduino, kwa kweli ni seti ya maktaba inayoitwa Wiring, na vile vile katika C AVR safi. Matumizi ambayo hufanya nambari iwe rahisi na kuharakisha kazi yake.

Juu ya dirisha kuna menyu inayojulikana ambapo unaweza kufungua faili, mipangilio, chagua bodi unayofanya kazi nayo (Uno, Nano na nyingi, na zingine nyingi) na pia fungua miradi iliyo na mifano ya nambari zilizopangwa tayari. Chini ni seti ya vifungo vya kufanya kazi na firmware, unaweza kuona madhumuni ya funguo kwenye takwimu hapa chini.

Katika sehemu ya chini ya dirisha kuna eneo la kuonyesha habari kuhusu mradi huo, hali ya nambari, firmware na uwepo wa makosa.

Misingi ya Programu ya Arduino IDE

Mwanzoni mwa nambari, unahitaji kutangaza anuwai na unganisha maktaba ya ziada, ikiwa ipo, hii inafanywa kama ifuatavyo:

# pamoja na biblioteka.h; // ni pamoja na maktaba inayoitwa "Biblioteka.h"

#fafanua peremennaya 1234; // Tangaza kutofautisha na thamani 1234

Amri ya Kufafanua inamruhusu mkusanyaji kuchagua aina ya ubadilishaji, lakini unaweza kuiweka kwa mikono, kwa mfano, int kamili, au mahali pa kuelea

int imesababisha \u003d 13; // tengeneza "iliyoongozwa" inayobadilika na kuipatia thamani "13"

Programu inaweza kuamua hali ya pini kama 1 au 0. 1 ni kitengo cha kimantiki, ikiwa pini 13 ni 1, basi voltage kwenye mguu wake wa mwili itakuwa sawa na voltage ya usambazaji wa microcontroller (kwa arduino UNO na Nano - 5 V)

Ishara ya dijiti imeandikwa na amri ya Kuandika ya dijiti (pini, thamani), kwa mfano:

andika kwa dijiti (iliyoongozwa, juu); // andika moja kubandika 13 (tuliitangaza hapo juu) logi. Vitengo.

Kama unavyoweza kuelewa, ufikiaji wa bandari huenda kwa nambari kwenye ubao, nambari inayolingana. Hapa kuna mfano sawa na nambari ya awali:

andika kwa dijiti (13, juu); // kuweka pini 13 kwa moja

Kazi ya ucheleweshaji wa muda inayoombwa mara kwa mara inaitwa na amri ya kuchelewesha (), ambayo thamani yake imewekwa kwa milliseconds, microseconds hufikiwa kwa kutumia

kucheleweshaMicroseconds () Kuchelewa (1000); // mdhibiti mdogo atasubiri 1000ms (sekunde 1)

Mipangilio ya bandari ya pembejeo na pato imewekwa katika kazi ya usanidi batili () na amri:

pinMode (NOMERPORTA, OUTPUT / INPUT); // hoja - jina linalobadilika au nambari ya bandari, pembejeo au pato la kuchagua

Kuelewa mpango wa kwanza wa Blink

Kama aina ya "Hujambo, ulimwengu" kwa watawala wadogo, kuna mpango wa kupepesa LED, hebu tuchambue nambari yake:

Mwanzoni, kwa amri ya pinMode, tulimwambia mdhibiti mdogo ape bandari iliyo na LED kwenye pato. Tayari umegundua kuwa katika nambari hakuna tamko la ubadilishaji wa "LED_BUILTIN", ukweli ni kwamba katika bodi za Uno, Nano na zingine kutoka kwa kiwanda, LED iliyojengwa imeunganishwa kwa kubandika 13 na inauzwa kwenye bodi. Inaweza kutumiwa na wewe kwa dalili katika miradi yako au kwa jaribio rahisi la programu zako za taa.

Ifuatayo, tunaweka pato ambalo LED imeuzwa kwa moja (5 V), laini inayofuata inalazimisha MK kusubiri sekunde 1, na kisha inaweka pini ya LED_BUILTIN hadi sifuri, inasubiri sekunde na mpango unarudia kwenye duara, kwa hivyo, wakati LED_BUILTIN ni 1, LED ( na mzigo mwingine wowote uliounganishwa na bandari) umewashwa, ukiwa katika 0 - off.

Tunasoma thamani kutoka kwa bandari ya analog na tumia data iliyosomwa

Mdhibiti mdogo wa AVR Atmega328 ana kibadilishaji cha 10-bit analog-to-digital. ADC ya 10-bit hukuruhusu kusoma thamani ya voltage kutoka volts 0 hadi 5, kwa hatua ya 1/1024 ya ishara nzima ya sauti (5 V).

Ili kuifanya iwe wazi zaidi, fikiria hali hiyo, wacha tuseme thamani ya voltage kwenye pembejeo ya analog ni 2.5 V, ambayo inamaanisha kuwa mdhibiti mdogo atasoma thamani kutoka kwa pini "512", ikiwa voltage ni 0 - "0", na ikiwa 5 V - (1023). 1023 - kwa sababu kuhesabu huanza kutoka 0, i.e. 0, 1, 2, 3, nk. hadi maadili 1023 - 1024 kwa jumla.

Hivi ndivyo inavyoonekana katika nambari, kwa kutumia mfano wa mchoro wa kawaida "AnalogInput"

sensor ya ndaniPin \u003d A0;

int ledPin \u003d 13;

sensor ya ndaniValue \u003d 0;

pinMode (ledPin, OUTPUT);

sensorValue \u003d AnalogRead (sensorPin);

digitalWrite (ledPin, HIGH);

kuchelewesha (sensorValue);

andika kwa dijiti (LedPin, LOW);

kuchelewesha (sensorValue);

Tunatangaza anuwai:

    Ledpin - toa pini kwa hiari na LED iliyojengwa kwa pato na upe jina la mtu binafsi;

    sensorPin - pembejeo ya analog, iliyowekwa kulingana na kuashiria kwenye ubao: A0, A1, A2, nk.

    sensorValue ni tofauti ya kuhifadhi nambari kamili ya kusoma na kufanya kazi zaidi nayo.

Nambari inafanya kazi kama hii: sensorValue kuokoa thamani ya analog iliyosomwa kutoka kwa sensorPin (amri ya AnalogSoma). - hapa kazi na ishara ya analogi inaisha, basi kila kitu ni kama ilivyo kwenye mfano uliopita.

Tunaandika moja kwa ledPin, LED inawasha na kusubiri wakati sawa na thamani ya sensorValue, i.e. kutoka milliseconds 0 hadi 1023. Zima LED na subiri tena kwa kipindi hiki cha muda, baada ya hapo nambari hurudiwa.

Kwa hivyo, kwa msimamo wa potentiometer, tunaweka masafa ya kupepesa ya LED.

Kazi ya ramani ya Arudino

Sio kazi zote za watendaji (sijui yoyote) zinaunga mkono "1023" kama hoja, kwa mfano, servo imepunguzwa na pembe ya mzunguko, ambayo ni, kwa nusu ya mapinduzi (digrii 180) (nusu ya mapinduzi) ya motor servo, hoja ya juu ya kazi ni "180"

Sasa kuhusu sintaksia: ramani (thamani tunayotafsiri, kiwango cha chini cha pembejeo, kiwango cha juu cha pembejeo, pato la chini, kiwango cha juu cha pato).

Katika msimbo, inaonekana kama hii:

(ramani (AnalogSoma (sufuria), 0, 1023, 0, 180));

Tulisoma thamani kutoka kwa potentiometer (AnalogSoma (sufuria)) kutoka 0 hadi 1023, na kwa pato tunapata nambari kutoka 0 hadi 180

Thamani za ramani:

Kwa mazoezi, tunatumia hii kwa operesheni ya nambari ya servo hiyo hiyo, angalia nambari kutoka kwa IDE ya Arduino, ikiwa unasoma kwa uangalifu sehemu zilizopita, haiitaji ufafanuzi.

Na mchoro wa unganisho.

Hitimisho Arduino ni zana rahisi sana ya kujifunza jinsi ya kufanya kazi na watawala wadogo. Na ikiwa utatumia C CR safi, au kama wakati mwingine inaitwa "Pure C" - utapunguza kwa uzito uzito wa nambari hiyo, na itaingia zaidi kwenye kumbukumbu ya microcontroller, kwa sababu hiyo, utapata bodi bora ya utengenezaji wa kiwanda iliyotengenezwa na uwezo wa kuangaza kupitia USB.

Napenda arduino. Ni jambo la kusikitisha kwamba wengi wa wapangaji wake wenye uzoefu wa microcontroller wanakosoa kwamba ni rahisi sana. Kimsingi, lugha tu ndiyo iliyorahisishwa, lakini hakuna mtu anayekulazimisha kuitumia, pamoja na unaweza kuwasha mdhibiti mdogo kupitia kiunganishi cha ICSP, na ujaze nambari unayotaka hapo, bila bootloaders yoyote ya lazima.

Kwa wale ambao wanataka kucheza na vifaa vya elektroniki, kama mjenzi wa hali ya juu, ni kamili, lakini kwa watengenezaji wa programu wenye uzoefu kama bodi ambayo haihitaji mkutano, itakuwa muhimu pia!

Kwa habari zaidi juu ya Arduino na huduma za matumizi yake katika mipango anuwai, angalia e-kitabu - .

Nakala hii itakusaidia kuanza na Arduino na inajumuisha maelezo ya aina tofauti za Arduino, jinsi ya kupakua mazingira ya programu ya Arduino, na inaelezea bodi na vifaa anuwai vinavyopatikana kwa Arduino ambayo utahitaji kukuza miradi yako ya Arduino.

Arduino ni kidhibiti wazi cha bodi moja ambayo inaweza kutumika katika matumizi anuwai. Hii labda ni chaguo rahisi na cha bei rahisi zaidi kwa wataalam wa hobbyists, wanafunzi, na wataalamu kukuza miradi inayotegemea wadhibiti. Bodi za Arduino hutumia Mdhibiti Mdogo wa Atmel AVR au Mdhibiti Mdogo wa Atmel ARM, na matoleo mengine yana kiolesura cha USB. Pia zina pini za kuingiza analog sita au zaidi na pini kumi na nne au zaidi za kuingiza / kutoa (I / O), ambazo hutumiwa kuunganisha sensorer, anatoa, na mizunguko mingine ya pembeni kwa microcontroller. Bei ya bodi za Arduino, kulingana na kipengee kilichowekwa, ni kati ya dola sita hadi arobaini.

Aina za bodi ya Arduino

Kuna aina nyingi za bodi za Arduino, kama inavyoonyeshwa kwenye orodha hapa chini, kila moja ina seti yake ya huduma. Zinatofautiana katika kasi ya usindikaji, kumbukumbu, bandari za I / O na unganisho, lakini sehemu kuu ya utendaji wao bado haibadilika.

  • Roboti ya Arduino
  • Ethernet ya Arduino

Aina ya bodi za Arduino na maelezo yao ya kiufundi yanaweza kupatikana katika kifungu "" cha sehemu ya "Nunua" ya wavuti hii.

Programu (IDE)

Programu inayotumiwa kwa programu ya Arduino ni IDE ya Arduino. IDE ni programu ya Java inayoendesha kwenye majukwaa anuwai anuwai pamoja na mifumo ya PC, Mac na Linux. Imeundwa kwa Kompyuta ambazo hazijui programu. Inajumuisha mhariri, mkusanyaji na kipakiaji. IDE pia inajumuisha maktaba za nambari za kutumia vifaa vya pembeni kama vile bandari za serial na aina anuwai za maonyesho. Programu za Arduino zinaitwa "michoro" na zimeandikwa kwa lugha inayofanana sana na C au C ++.

Bodi nyingi za Arduino huunganisha kwenye kompyuta kwa kutumia kebo ya USB. Uunganisho huu hukuruhusu kupakia michoro kwenye bodi yako ya Arduino na pia hutoa nguvu kwa bodi.

Cable ya USB kwa Arduino

Kupanga programu

Programu ya Arduino ni rahisi: kwanza unatumia mhariri wa nambari ya IDE kuandika programu hiyo, kisha uiandike na uipakue kwa mbofyo mmoja.

Programu ya Arduino inajumuisha kazi mbili kuu:

  • kuanzisha ()
  • kitanzi ()

Unaweza kutumia kazi ya kuanzisha () kuanzisha mipangilio ya bodi. Kazi hii inafanywa mara moja tu, wakati bodi imewashwa.

Kazi ya kitanzi () inatekelezwa baada ya kazi ya kuanzisha () kukamilisha, na tofauti na kazi ya kuanzisha (), inaendelea kuendelea.

Kazi za programu

Chini ni orodha ya kazi zinazotumiwa sana wakati wa programu ya Arduino:

  • pinMode - inaweka pini kuingia au kutoka mode;
  • analogSoma - inasoma voltage ya analog kwenye pini ya pembejeo ya analog;
  • analogWrite - Anaandika voltage ya analog kwa pini ya pato ya analog;
  • digitalRead - inasoma pini ya pembejeo ya dijiti;
  • digitalWrite - Inaweka pini ya pato la dijiti kwa kiwango cha juu au chini;
  • Serial.print - Anaandika data kwenye bandari ya serial kama maandishi ya ASCII yanayoweza kusomwa na binadamu.

Maktaba za Arduino

Maktaba za Arduino ni mkusanyiko wa kazi zinazokuruhusu kudhibiti vifaa. Baadhi ya maktaba zinazotumiwa zaidi ni:

  • EEPROM - kusoma na kuandika kwa uhifadhi wa "kudumu";
  • Ethernet - kwa kuunganisha kwenye mtandao kwa kutumia bodi ya Ngao ya Arduino Ethernet Shield;
  • Firmata - kwa kuwasiliana na programu kwenye kompyuta kwa kutumia itifaki ya kawaida ya serial;
  • GSM - kuungana na mtandao wa GSM / GRPS ukitumia bodi ya GSM;
  • Liquid Crystal - kwa kudhibiti maonyesho ya kioo kioevu (LCD);
  • SD - kwa kusoma na kuandika kadi za SD;
  • Servo - kudhibiti anatoa servo;
  • SPI - kwa mawasiliano na vifaa vinavyotumia basi ya SPI;
  • SoftwareSerial - kwa mawasiliano ya serial kupitia pini yoyote ya dijiti;
  • Stepper - kudhibiti motors za stepper;
  • TFT - kwa kuchora maandishi, picha na maumbo kwenye skrini za Arduino TFT;
  • WiFi - kuungana na mtandao kwa kutumia bodi ya ngao ya Arduino WiFi;
  • Waya ni kiunganisho cha waya mbili (TWI / I2C) cha kupitisha na kupokea data kupitia mtandao wa vifaa au sensorer.

Hatua za kuanzisha Arduino


Kumbuka: Unaweza kuhitaji kusakinisha madereva ikiwa mfumo wako haugunduli Arduino.

Arduino, kwa kweli, ni maendeleo ya miradi ya kipekee kwa hafla zote. Kama nilivyoandika tayari, Arduino ni aina ya bodi iliyo na mdhibiti mdogo aliyewekwa juu yake, ambayo inaweza kusanidiwa bila shida.

Lengo kuu la ujanja huu ni kutoa udhibiti rahisi wa anuwai vifaa vya nje... Pamoja na ulimwengu wa nje, bodi hii inaingiliana kupitia nyongeza nyingi:

  • sensorer,
  • lEDs,
  • injini,
  • mtandao
  • na kadhalika.

Hii itafanya iwe jukwaa la ulimwengu kwa miradi anuwai ya viwango anuwai. Hivi sasa, kuna anuwai ndogo sana ya watawala, kati ya ambayo Arduino ni maarufu sana, kwa sababu ya uwekaji wa miradi ya kushangaza na maendeleo kwenye mtandao.

Ili kutekeleza kwa urahisi moja ya mamilioni ya maoni, unaweza kutumia habari inayofaa zaidi ambayo inapatikana kwa uhuru kwenye wavuti nyingi. Chini ni mfano wa utekelezaji wa wazo moja kama hilo - kengele ya Krismasi inayoweza kudhibitiwa:

Tutachambua jinsi ya kuifanya katika moja ya masomo yafuatayo.

Katika tukio ambalo hakuna uzoefu hata kidogo wa kufanya kazi na watawala wadogo (programu na mipangilio), kwa sababu ya sura ya kipekee, unaweza kujifunza kwa urahisi peke yako, baada ya kufanya majaribio mafupi. Hapo chini napendekeza tu kuchambua uwezo wa Arduino, mifano ya ambapo ni bora kutumia mjenzi wa kipekee.

Mchoro wa Arduino

Kweli, mpango wa mdhibiti mdogo wa aina hii unaitwa mchoro... Programu yoyote kama hiyo ina kazi mbili kuu.

Sanidi

Setup () - inapewa kuwa ndani ya kazi hii, mtumiaji ataweza kuweka mipangilio yote muhimu.

Kwa mfano, imeamuliwa ni pini gani itafanya kazi kama pato au pembejeo katika siku zijazo, ikiamua unganisho la maktaba maalum, hata kuanzisha vigeuzi, yote haya imedhamiriwa kwa kutumia utendaji huu.

Uzinduzi huo unafanywa mara moja wakati wa mchoro mzima, wakati mwanzo wa utekelezaji wa programu hii umewekwa alama.

Kitanzi

Kitanzi () - inawakilisha kazi kuu ambayo hufanywa mara tu baada ya kuanza (tu katika kesi hii, kuanzisha ()).

Kwa kweli, hii ndio programu yenyewe, kazi hii itatekelezwa kwa hali isiyo na mwisho hadi mtumiaji atakapozima nguvu kwenye kifaa.

Mifano ya michoro

Unaweza kuzingatia mifano kadhaa ya michoro ambayo itakuwa mahali pa kumbukumbu ya operesheni inayofuata ya vifaa. Nitajaribu kutekeleza kila mfano katika vifaa vifuatavyo. Leo tutazungumza tu juu ya uwezekano.

Mfano 1

Moja ya michoro ya kupendeza inaweza kutumika kuonyesha wakati wa kufanya kazi wa mtawala, kisha kukubalika kwa amri ya "kupepesa", hutolewa ili kuanzisha utaratibu wa kupepesa wa vitu vya LED.

Kwa kweli, hakuna kitu muhimu sana kwenye mchoro, lakini pia hupanga uwezekano wa kuonyesha bahati mbaya kifungu fulani "Takwimu Zilizopokelewa"; inaweza kutumika katika siku zijazo moja kwa moja kwa kujaribu na kuchambua sheria zilizowekwa za utendakazi wa kitu cha kawaida.

Mfano 2

Uunganisho wa maalum sensor ya sasa ya kiwango cha maji, sensor ya mvua. Ili kutekeleza mradi maalum, lazima uwe na:

Sensa ya maji yenyewe,
- Mdhibiti wa Arduino,
- seti ya waya zinazounganisha,
- kompyuta iliyo na nyaya na programu ya IDE inayofanana na ubao wa mkate.

Kama matokeo, kwa sababu ya usanidi rahisi wa microcontroller, hali bora za operesheni ya sensa huundwa.

Mfano 3

Uwezekano wa kutekeleza pato la tabia, usakinishaji unaofuata wa fonti kwenye LCD5110, ambayo itatoa udhibiti rahisi na wa kuaminika juu ya hali ya vifaa vyenyewe.

Kuonyesha na kubadilisha fonti hufanywa kwa kutumia uwezo wa Arduino. Katika kesi hii, utahitaji kutumia maktaba ya data iliyo tayari, na pia nambari ya chanzo.

Mifano ya Matumizi ya Arduino

Kuzingatia mifano kadhaa ya Arduino, mtu anaweza kushangaa tu kwa njia ya ubunifu ya watengenezaji wa mradi na mawazo ya kushangaza. Kwa kweli, unaweza kuunda vitu vya kushangaza zaidi, kwa mfano, sawa kicheza muziki na seti ya LED.

Ukuaji kama huo utathaminiwa sana na wapenzi wa muziki, hukuruhusu kuunda sio wimbo wa asili tu, lakini pia kukupa fursa ya kufurahiya mchanganyiko mkali wa rangi.

Hata wanyama wa kipenzi, kwa mfano, paka, wataweza kutathmini miradi. Sababu itakuwa feeder moja kwa moja kwa paka, ambayo inaweza kutengenezwa kwa msingi wa kicheza CD kawaida, kwa mfano, na sio tu.

Miongoni mwa faida za vifaa hivi, inapaswa kuzingatiwa uwezekano wa kupeana chakula kwa mnyama, sasa hakuna haja ya kuangalia mara kwa mara kiwango cha chakula kwenye bakuli. Wakati wa kufungua umebadilishwa, baada ya hapo paka itapokea bidhaa zenye lishe kulingana na ratiba iliyowekwa, ikifurahia wazo la asili la mmiliki wake.

Ikiwa tunazungumza juu ya miradi isiyo ya kawaida kabisa, tunaweza kuchagua vifaa vya moja kwa moja kwa mauaambayo sasa itaweza kutuma habari kuhusu hali yake ya sasa moja kwa moja kwa Twitter. Yote hii inafanywa kwa kutumia uwezo wa Mdhibiti mdogo wa Arduino, ambayo itakuruhusu kuhamisha data moja kwa moja ukitumia unganisho la Mtandaoni kwa hili. Kama unavyoona, mifano inaweza kuwa tofauti sana, nitajaribu kuzingatia kila mmoja wao katika nakala zifuatazo.