Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Interesante
  • Program për të shkruar skica Arduino. Arduino: shembuj të asaj që mund të bëhet

Program për të shkruar skica Arduino. Arduino: shembuj të asaj që mund të bëhet

Ditën e mirë, Habr. Po lançoj një seri artikujsh që do t'ju ndihmojnë të njiheni me Arduino. Por kjo nuk do të thotë që nëse nuk jeni i ri në këtë biznes, nuk do të gjeni asgjë interesante për veten tuaj.

Prezantimi

Do të ishte mirë të filloni duke u njohur me Arduino. Arduino – harduer dhe softuer për sistemet e automatizimit të ndërtesave dhe robotikës. Avantazhi kryesor është se platforma u drejtohet përdoruesve jo profesionistë. Kjo do të thotë, çdokush mund të krijojë robotin e tij, pavarësisht nga njohuritë e programimit dhe aftësitë e tij.

Filloni

Krijimi i një projekti në Arduino përbëhet nga 3 faza kryesore: shkrimi i kodit, prototipizim (breadboarding) dhe firmware. Për të shkruar kodin dhe më pas ndezjen e tabelës, na duhet një mjedis zhvillimi. Në fakt, ka mjaft prej tyre, por ne do të programojmë në mjedisin origjinal - Arduino IDE. Do ta shkruajmë vetë kodin në C++, të përshtatur për Arduino. Mund ta shkarkoni në faqen zyrtare të internetit. Një skicë është një program i shkruar në Arduino. Le të shohim strukturën e kodit:


main())( konfigurim i zbrazët())( ) void loop())( ) )

Është e rëndësishme të theksohet se procesori Arduino krijon funksionin main(), i cili kërkohet në C++. Dhe rezultati i asaj që sheh programuesi është:


void setup() ( ) void loop() ( )

Le të shohim dy funksionet e kërkuara. Funksioni setup() thirret vetëm një herë kur fillon mikrokontrolluesi. Është ajo që vendos të gjitha cilësimet themelore. Funksioni loop() është ciklik. Ai thirret në një lak të pafund gjatë gjithë kohës së funksionimit të mikrokontrolluesit.

Programi i parë

Për të kuptuar më mirë parimin e funksionimit të platformës, le të shkruajmë programin e parë. Ne do ta ekzekutojmë këtë program më të thjeshtë (Blink) në dy versione. Dallimi i vetëm midis tyre është montimi.


int Led = 13; // deklaroni variablin Led në pinin 13 (dalje) void setup() ( pinMode(Led, OUTPUT); // përcaktoni variablin ) void loop() ( digitalWrite(Led, HIGH); // aplikoni tensionin në shtyrjen e pin 13 (1000); // prisni 1 sekondë dixhitaleWrite (Led, LOW); // mos aplikoni tension në shtyrjen e shtyllës 13 (1000); // prisni 1 sekondë)

Parimi i funksionimit të këtij programi është mjaft i thjeshtë: LED ndizet për 1 sekondë dhe fiket për 1 sekondë. Për opsionin e parë, nuk kemi nevojë të mbledhim një plan urbanistik. Meqenëse platforma Arduino ka një LED të integruar të lidhur me pinin 13.

Firmware Arduino

Për të ngarkuar një skicë në Arduino, së pari duhet thjesht ta ruajmë atë. Tjetra, për të shmangur problemet gjatë ngarkimit, duhet të kontrolloni cilësimet e programuesit. Për ta bërë këtë, zgjidhni skedën "Vegla" në panelin e sipërm. Në seksionin "Pagesa", zgjidhni pagesën tuaj. Mund të jetë Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo ose të tjerë. Gjithashtu në seksionin "Port" ju duhet të zgjidhni portin tuaj të lidhjes (portin në të cilin keni lidhur platformën tuaj). Pas këtyre hapave, mund të ngarkoni skicën. Për ta bërë këtë, klikoni në shigjetën ose zgjidhni "Shkarko" në skedën "Sketch" (mund të përdorni gjithashtu shkurtoren e tastierës "Ctrl + U"). Firmware-i i bordit është përfunduar me sukses.

Prototipi/faqosje

Për të montuar dërrasën e bukës, na duhen elementët e mëposhtëm: LED, rezistencë, instalime elektrike (jumpers), pllaka e bukës. Për të mos djegur asgjë, dhe në mënyrë që gjithçka të funksionojë me sukses, duhet të merreni me LED. Ka dy "këmbë". E shkurtra është një minus, e gjatë është një plus. Ne do të lidhim tokën (GND) dhe një rezistencë me atë të shkurtër (në mënyrë që të zvogëlojmë rrymën e furnizuar me LED në mënyrë që të mos digjet), dhe do të furnizojmë energjinë me atë të gjatë (lidheni me pinin 13). Pas lidhjes, ngarkoni skicën në tabelë nëse nuk e keni bërë më parë. Kodi mbetet i njëjtë.


Ky është fundi i pjesës së parë. Faleminderit per vemendjen.

Në jetën e një zhvilluesi Arduino, herët a vonë vjen një moment kur mjedisi standard i zhvillimit bëhet i mbushur me njerëz. Nëse skicat nuk kanë më memorie të mjaftueshme, keni nevojë për kohë reale dhe punë me ndërprerje, ose thjesht dëshironi të jeni më afër harduerit, atëherë është koha të kaloni në C. Inxhinierët elektronikë me përvojë do të vrenjten me përbuzje kur përmendet Arduino dhe do të dërgojnë i ri në një dyqan radio për një saldim. Kjo mund të mos jetë këshilla më e keqe, por ne nuk do ta ndjekim ende. Nëse hedhim poshtë Arduino IDE dhe gjuhën e lidhjes/përpunimit, na mbetet një tabelë e shkëlqyer korrigjimi, e pajisur tashmë me gjithçka të nevojshme për funksionimin e mikrokontrolluesit. Dhe, më e rëndësishmja, një bootloader është tashmë i lidhur në memorien e kontrolluesit, duke ju lejuar të ngarkoni firmuerin pa përdorur një programues.

Për të programuar në C, na duhet AVR GCC Toolchain.

Do të na duhet gjithashtu i instaluar Arduino IDE, sepse... ai përmban programin avrdude, i cili nevojitet për të shkarkuar firmuerin në kontrollues. CrossPack gjithashtu përmban avrdude, por versioni që vjen me të nuk funksionon me Arduino.

Pasi të jetë instaluar gjithçka, le të krijojmë projektin tonë të parë. Për të filluar, le të shkruajmë Makefile. Do të na lejojë të shmangim futjen manuale të komandave të gjata sa herë që përpilojmë dhe ngarkojmë firmware-in.

#Kontrolluesi i instaluar në tabelë. Mund të jetë i ndryshëm, për shembull atmega328 DEVICE = atmega168 #Clock Frekuenca 16 MHz CLOCK = 16000000 #Avrdude komanda e nisjes. Duhet të kopjohet nga Arduino IDE. AVRDUDE = /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.con. -carduino -P/dev/tty.usbserial-A600dAAQ -b19200 -D -p atmega168 OBJEKTE = main.o COMPILE = avr-gcc -Wall -Os -DF_CPU=$(CLOCK) -mmcu=$(DEVICE) të gjitha: kryesore .hex .c.o: $(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

Në këtë skedar duhet të fusim komandën tonë për të nisur avrdude. Do të duket ndryshe në sisteme të ndryshme. Për të zbuluar opsionin tuaj, hapni Arduino IDE dhe kontrolloni kutinë "Trego daljen me fjalë gjatë ngarkimit" në cilësimet.

Tani ngarkojmë çdo skicë në Arduino dhe shikojmë mesazhet e shfaqura në fund të dritares. Aty gjejmë thirrjen avrdude, kopjojmë gjithçka përveç parametrit -Uflash dhe ngjisim në Makefile pas “AVRDUDE =”.


Një shënim i shpejtë: të gjitha futjet në Makefile bëhen me karaktere skedash (tasti Tab). Nëse redaktori juaj i tekstit zëvendëson këto karaktere me hapësira, komanda make do të refuzojë të ndërtojë projektin.

Tani le të krijojmë një skedar kryesore.c- teksti aktual i programit tonë, në të cilin ne tradicionalisht ndezim LED.

#përfshi #përfshi #define LED_PIN 5 int main() ( DDRB |= 1<< LED_PIN; while(1) { PORTB |= 1 << LED_PIN; _delay_ms(1000); PORTB &= ~(1 << LED_PIN); _delay_ms(1000); } return 0; }

Projekti ynë është gati. Le të hapim konsolën në drejtorinë tonë të projektit dhe të futim komandën "make":


Siç mund ta shihni, madhësia e firmware-it që rezulton është vetëm 180 bajt. Një skicë e ngjashme Arduino merr 1116 bajt në kujtesën e kontrolluesit.

Tani le të kthehemi në tastierë dhe të futim "make flash" për të ngarkuar skedarin e përpiluar në kontrollues:


Nëse shkarkimi përfundoi pa gabime, LED i lidhur me pinin 13 të tabelës do të pulsojë me gëzim. Ndonjëherë avrdude nuk mund ta gjejë tabelën ose bie për shkak të një afati kohor - në këtë rast, përdredhja e kabllit USB mund të ndihmojë. Gjithashtu, për të shmangur konfliktet e aksesit në bord, mos harroni të mbyllni Arduino IDE përpara komandës "make flash".

Ndoshta shumë nga gjërat e përshkruara në këtë artikull do të duken të dukshme për zhvilluesit me përvojë. U përpoqa ta përshkruaj procesin në një gjuhë sa më të kuptueshme për një përdorues fillestar të Arduino dhe të mbledh në një vend informacionin që arrita të marr nga burime të ndryshme dhe të verifikuara në mënyrë empirike. Ndoshta ky artikull do t'i kursejë dikujt disa orë kohë.

Fat i mirë në zotërimin e mikrokontrolluesve!

Arduino është një tabelë e vogël që përdoret për të krijuar pajisje të ndryshme, pajisje interesante dhe madje edhe platforma kompjuterike. Ky bord quhet mikrokontrollues, i cili është me kod të hapur dhe mund të përdoret me shumë aplikacione.

Ky është opsioni më i thjeshtë dhe më i lirë për fillestarët, amatorët dhe profesionistët. Procesi i programimit zhvillohet në gjuhën Processing/Wiring, e cila mësohet shpejt dhe lehtë dhe bazohet në gjuhën C++ dhe falë kësaj bëhet shumë e lehtë. Le të shohim se çfarë është Arduino, si është i dobishëm për fillestarët, aftësitë dhe veçoritë e tij.

Arduino është një platformë ose tabelë kompjuterike që do të shërbejë si truri për pajisjet ose pajisjet tuaja të reja. Bazuar në të, ju mund të krijoni të dy pajisje me qarqe të thjeshta dhe projekte komplekse, intensive të punës, për shembull, robotë ose drone.

Baza e projektuesit është bordi hyrje-dalje (hardware), si dhe pjesa e softuerit. Softueri projektues i bazuar në Arduino përfaqësohet nga një mjedis zhvillimi i integruar.

Nga jashtë, vetë mjedisi duket kështu:

Softueri Arduino është krijuar në atë mënyrë që edhe një përdorues fillestar pa njohuri programimi mund ta trajtojë atë. Një faktor shtesë suksesi në përdorimin e një mikrokontrollues ishte aftësia për të punuar me një tabelë buke, kur pjesët e nevojshme (rezistorët, diodat, transistorët, etj.) lidhen me kontrolluesin pa pasur nevojë për saldim.

Shumica e bordeve Arduino janë të lidhura përmes një kabllo USB. Një lidhje e tillë ju lejon të siguroni energji në tabelë dhe të ngarkoni skica, d.m.th. mini-programe. Procesi i programimit është gjithashtu jashtëzakonisht i thjeshtë. Së pari, përdoruesi përdor redaktuesin e kodit IDE për të krijuar programin e kërkuar, më pas ai ngarkohet me një klik në Arduino.

Si të blini Arduino?

Pllaka dhe shumë pjesë Arduino janë prodhuar në Italia Prandaj, komponentët origjinalë janë mjaft të shtrenjtë. Por ka komponentë të veçantë të stilistit apo kompleteve, të ashtuquajturat kite, të cilat prodhohen sipas analogjisë italiane, por me çmime më të volitshme.

Mund të blini një analog në tregun e brendshëm ose, për shembull, ta porosisni nga Kina. Shumë njerëz dinë për faqen e internetit të AliExpress, për shembull. Por për ata që fillojnë njohjen me Arduino, është më mirë të porosisin bordin e tyre të parë nga një dyqan online rus. Me kalimin e kohës, mund të kaloni në blerjen e pllakave dhe pjesëve të qarkut në Kinë. Koha e dorëzimit nga ky vend do të jetë nga dy javë në një muaj dhe, për shembull, kostoja e një komplete të madhe komplete nuk do të jetë më 60-70 dollarë.

Kompletet standarde zakonisht përfshijnë pjesët e mëposhtme:

  • dërrasë buke;
  • LED;
  • rezistenca;
  • Bateritë 9V;
  • rregullatorët e tensionit;
  • butona;
  • kërcyes;
  • tastierë matricë;
  • pllaka zgjerimi;
  • kondensatorë.

Keni nevojë të dini programim?

Hapat e parë në punën me tabelën Arduino fillojnë me programimin e tabelës. Një program që tashmë është gati për të punuar me një tabelë quhet skicë. Nuk ka nevojë të shqetësoheni për mosnjohjen e programimit. Procesi i krijimit të programeve është mjaft i thjeshtë, dhe ka shumë shembuj të skicave në internet, pasi komuniteti Arduino është shumë i madh.

Pas kompilimit të programit, ai ngarkohet (flash) në tabelë. Në këtë rast, Arduino ka një avantazh të pamohueshëm - në shumicën e rasteve përdoret një kabllo USB për programim. Menjëherë pas ngarkimit, programi është gati për të ekzekutuar komanda të ndryshme.

Fillestarët me Arduino duhet të dinë dy funksione kryesore:

  • konfigurimi ()– përdoret një herë kur bordi është i ndezur, përdoret për të inicializuar cilësimet;
  • lak ()– përdoret vazhdimisht, është faza e fundit e konfigurimit.

Shembull i shënimit të funksionit konfigurimi ():

Void setup() ( Serial.begin(9600); // Hapni një lidhje serike pinMode (9, INPUT); // Cakto pinin 9 si një pinMode hyrëse (13, OUTPUT); // Cakto pinin 13 si dalje )

Funksioni konfigurimi () kryhet në fillim dhe vetëm 1 herë menjëherë pas ndezjes ose rinisjes së pajisjes tuaj.

Funksioni lak () ekzekutohet pas funksionit setup(). Loop përkthehet si lak ose cikël. Funksioni do të ekzekutohet përsëri dhe përsëri. Pra, mikrokontrolluesi ATmega328 (shumica e bordeve Arduino e përmbajnë këtë) do të kryejë funksionin e ciklit rreth 10,000 herë në sekondë.

Do të hasni gjithashtu veçori shtesë:

  • pinMode– mënyra e hyrjes dhe daljes së informacionit;
  • analogLexo– ju lejon të lexoni tensionin analog të shfaqur në pin;
  • analog Shkruaj– regjistrimi i tensionit analog në pinin e daljes;
  • leximi dixhital– ju lejon të lexoni vlerën e një dalje dixhitale;
  • dixhital Shkruaj– ju lejon të vendosni vlerën e daljes dixhitale në një nivel të ulët ose të lartë;
  • Serial.print– përkthen të dhënat e projektit në tekst të lehtë për t’u lexuar.

Përveç kësaj, fillestarëve të Arduino do t'ju pëlqejë fakti që ka shumë biblioteka për bordet, të cilat janë koleksione funksionesh që ju lejojnë të kontrolloni bordin ose module shtesë. Më të njohurat përfshijnë:

  • lexim dhe shkrim në ruajtje,
  • Lidhje interneti,
  • leximi i kartave SD,
  • kontrolli i motorit stepper,
  • përkthimi i tekstit
  • etj.

Si të konfiguroni Arduino?

Një nga avantazhet kryesore të projektuesit është siguria e tij në lidhje me cilësimet e përdoruesit. Cilësimet kryesore që janë potencialisht të dëmshme për Arduino janë të mbrojtura dhe nuk do të jenë të aksesueshme.

Prandaj, edhe një programues i papërvojë mund të eksperimentojë me siguri dhe të ndryshojë opsione të ndryshme për të arritur rezultatin e dëshiruar. Por për çdo rast, ne rekomandojmë shumë të lexoni tre materiale të rëndësishme se si të mos dëmtoni tabelën:

Algoritmi klasik i konfigurimit të programit Arduino duket si ky:

  • Instalimi IDE, i cili mund të shkarkohet më poshtë ose nga faqja e internetit e prodhuesit;
  • instalimi i softuerit në kompjuterin që po përdorni;
  • nisni skedarin Arduino;
  • futja e programit të zhvilluar në dritaren e kodit dhe transferimi i tij në tabelë (duke përdorur një kabllo USB);
  • në seksionin IDE ju duhet të zgjidhni llojin e konstruktorit që do të përdoret. Kjo mund të bëhet në dritaren "veglat" - "bordet";
  • kontrolloni kodin dhe klikoni "Next", pas së cilës do të fillojë shkarkimi në Arduino.
Version Dritaret MacOS Linux
1.6.5 Zip
Instalues
Instalues 32 bit
64 bit
1.8.2 Zip
Instalues
Instalues 32 bit
64 bit
ARM
1.8.5 Zip
Instalues
Aplikacioni
Instalues 32 bit
64 bit
ARM

Le të stërvitim dorën tonë

Për të zbatuar me besim ide komplekse, për të përdorur mjedisin e softuerit dhe Arduino, fillestarët duhet ta kenë në dorë atë. Për ta bërë këtë, rekomandohet fillimisht të zotëroni detyra dhe projekte më të lehta.

Projekti më i thjeshtë që mund të bëni është që LED, i cili ndodhet në tabelën Arduino përballë portit, të pulsojë çdo sekondë.

Për ta bërë këtë ju duhet:

  • lidhni projektuesin me PC,
  • hapni programin, në seksionin "shërbim" ne kërkojmë bllokun "port serial".
  • zgjidhni intervalin e kërkuar
  • pas së cilës duhet të shtoni kodin që është në Arduino IDE në seksionin "Shembuj".

Projektet e para në Arduino për fillestarët mund të jenë:

  • LED ndezës;
  • lidhja dhe kontrolli i një sensori të temperaturës;
  • lidhja dhe kontrolli i një sensori të lëvizjes;
  • lidhja e një fotorezistori;
  • kontrolli i servo drive.

Projekti i parë

Tani kemi arritur në projektin tonë të parë. Le të lidhim Arduino, LED dhe butonin. Ky projekt është i përsosur për fillestarët.

Skema jonë do të jetë si kjo:

LED do të ndizet pasi të shtypni butonin dhe do të fiket pas shtypjes tjetër. Skica ose programi për vetë Arduino do të jetë si ky:

// kunjat e pajisjeve të lidhura int switchPin = 8; int ledPin = 11; // variabla për të ruajtur gjendjen e butonit dhe LED boolean lastButton = LOW; rryma booleanButton = ULËT; boolean ledOn = false; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // funksion për debounse debounse boolean(boolean fundit) (rryma boolean = digitalRead(switchPin); if(last != aktuale) ( vonesë ( 5); aktual = DigitalRead(switchPin); ) rrymë kthese; ) void loop() (currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == LARTË) (ledOn = !ledOn;) lastButton = aktualButton; digitalWrite (ledPin, ledOn); )

Ju mund të keni vënë re funksionin debounse, për të cilin nuk kemi shkruar ende. Është e nevojshme për.

Pasi të keni zotëruar aftësitë fillestare të punës me një bord, mund të filloni të zbatoni detyra më komplekse dhe të shumëanshme. Projektuesi ju lejon të krijoni një makinë RC, një helikopter të kontrollueshëm, të krijoni telefonin tuaj, të krijoni një sistem, etj.

Për të përshpejtuar zotërimin tuaj të punës me bordin Arduino, ju rekomandojmë të filloni të bëni pajisje nga seksioni ynë, ku proceset për krijimin e pajisjeve dhe veglave më interesante përshkruhen hap pas hapi.

Ky mësim ofron njohuritë minimale të nevojshme për të programuar sistemet Arduino në C. Mund ta shikoni dhe ta përdorni vetëm si informacion referimi në të ardhmen. Për ata që kanë programuar në C në sisteme të tjera, mund ta kaloni artikullin.

E përsëris se ky është informacion minimal. Përshkrimi i treguesve, klasave, variablave të vargut, etj. do të jepet në mësimet vijuese. Nëse diçka është e paqartë, mos u shqetësoni. Do të ketë shumë shembuj dhe shpjegime në mësimet e ardhshme.

Struktura e programit Arduino.

Struktura e programit Arduino është mjaft e thjeshtë dhe, në formën e tij minimale, përbëhet nga dy pjesë setup() dhe loop().

konfigurimi i zbrazët () (

void loop() (

Funksioni setup() ekzekutohet një herë, kur kontrolluesi aktivizohet ose rivendoset. Zakonisht, cilësimet fillestare të variablave dhe regjistrave ndodhin në të. Funksioni duhet të jetë i pranishëm në program, edhe nëse nuk ka asgjë në të.

Pasi të përfundojë setup(), kontrolli kalon në funksionin loop(). Ai ekzekuton komandat e shkruara në trupin e tij (midis kllapave kaçurrelë) në një lak të pafund. Në fakt, këto komanda kryejnë të gjitha veprimet algoritmike të kontrolluesit.

Rregullat origjinale të sintaksës së gjuhës C.

; pikëpresje Shprehjet mund të përmbajnë sa më shumë hapësira dhe ndërprerje rreshtash sipas dëshirës. Fundi i një shprehjeje tregohet me simbolin e pikëpresjes.

z = x + y;
z=x
+ y;

( ) mbajtëse kaçurrelë Përcaktoni një bllok funksionesh ose shprehjesh. Për shembull, në funksionet setup() dhe loop().

/* … */ bllok komentesh, sigurohuni që ta mbyllni.

/* ky është një bllok komentesh */

// koment me një rresht, nuk ka nevoje per mbyllje, e vlefshme deri ne fund te rreshtit.

// ky është një rresht komenti

Variablat dhe llojet e të dhënave.

Një variabël është një qelizë RAM në të cilën ruhet informacioni. Programi përdor variabla për të ruajtur të dhënat e ndërmjetme të llogaritjes. Për llogaritjet, mund të përdoren të dhëna të formateve të ndryshme dhe thellësi të ndryshme bit, kështu që variablat në gjuhën C kanë llojet e mëposhtme.

Lloji i të dhënave Thellësia, copa Gama e numrave
logjike 8 e vërtetë, e rreme
karakter 8 -128 … 127
karakter i panënshkruar 8 0 … 255
bajt 8 0 … 255
ndër 16 -32768 … 32767
i panënshkruar int 16 0 … 65535
fjalë 16 0 … 65535
gjatë 32 -2147483648 … 2147483647
i panënshkruar gjatë 32 0 … 4294967295
i shkurtër 16 -32768 … 32767
noton 32 -3.4028235+38 … 3.4028235+38
dyfishtë 32 -3.4028235+38 … 3.4028235+38

Llojet e të dhënave zgjidhen bazuar në saktësinë e kërkuar të llogaritjes, formatet e të dhënave, etj. Për shembull, nuk duhet të zgjidhni llojin e gjatë për një numërues që numëron deri në 100. Do të funksionojë, por operacioni do të marrë më shumë të dhëna dhe memorie programi dhe do të marrë më shumë kohë.

Deklarimi i variablave.

Lloji i të dhënave është specifikuar, i ndjekur nga emri i ndryshores.

int x; // deklarimi i një ndryshoreje të quajtur x të tipit int
float widthBox; // deklarimi i një ndryshoreje të quajtur widthBox e tipit float

Të gjitha variablat duhet të deklarohen përpara se të përdoren.

Një variabël mund të deklarohet kudo në një program, por kjo përcakton se cilat blloqe programi mund ta përdorin atë. Ato. Variablat kanë shtrirje.

  • Variablat e deklaruar në fillim të programit, përpara funksionit void setup(), konsiderohen globale dhe janë të disponueshme kudo në program.
  • Variablat lokale deklarohen brenda funksioneve ose blloqeve të tilla si një cikli for, dhe mund të përdoren vetëm brenda blloqeve të deklaruara. Është e mundur që të ketë variabla të shumtë me të njëjtin emër, por me shtrirje të ndryshme.

modaliteti int; // variabël i disponueshëm për të gjitha funksionet

konfigurimi i zbrazët () (
// bllok bosh, nuk kërkohen cilësime fillestare
}

void loop() (

numërim i gjatë; // variabli count është i disponueshëm vetëm në funksionin loop().

për (int i=0; i< 10;) // переменная i доступна только внутри цикла
{
i++;
}
}

Kur deklaroni një ndryshore, mund të vendosni vlerën fillestare të saj (initializoni).

int x = 0; // ndryshorja x deklarohet me vlerë fillestare 0
char d = 'a'; // ndryshorja d deklarohet me vlerën fillestare të barabartë me kodin e karakterit "a"

Gjatë kryerjes së veprimeve aritmetike me lloje të ndryshme të dhënash, ndodh konvertimi automatik i llojeve të të dhënave. Por është gjithmonë më mirë të përdoret një konvertim i qartë.

int x; // ndryshore int
char y; // ndryshore char
int z; // ndryshore int

z = x + (int)y; // ndryshorja y konvertohet në mënyrë eksplicite në int

Veprimet aritmetike.

Operacionet e marrëdhënieve.

Operacionet logjike.

Operacionet në tregues.

Operacionet me bit.

& DHE
| OSE
^ EKSKLUZIVE OSE
~ INVERSION
<< SHIFT ME LEJTA
>> SHIFT Djathtas

Operacionet e caktimit të përzier.

Zgjedhja e opsioneve, menaxhimi i programit.

operatori IF teston gjendjen në kllapa dhe ekzekuton shprehjen ose bllokun pasues në kllapa kaçurrelë nëse kushti është i vërtetë.

nëse (x == 5) // nëse x=5, atëherë ekzekutohet z=0
z=0;

nëse (x > 5) // nëse x >
(z=0; y=8;)

NESE TJETER ju lejon të zgjidhni midis dy opsioneve.

nëse (x > 5) // nëse x > 5, atëherë blloku ekzekutohet z=0, y=8;
{
z=0;
y=8;
}

{
z=0;
y=0;
}

TJETER NESE– ju lejon të bëni zgjedhje të shumta

nëse (x > 5) // nëse x > 5, atëherë blloku ekzekutohet z=0, y=8;
{
z=0;
y=8;
}

ndryshe nëse (x > 20) // nëse x > 20, ky bllok ekzekutohet
{
}

else // përndryshe ky bllok ekzekutohet
{
z=0;
y=0;
}

KALUTA E KALUARËS- zgjedhje e shumfishte. Ju lejon të krahasoni një ndryshore (në shembull kjo është x) me disa konstante (në shembullin 5 dhe 10) dhe të ekzekutoni një bllok në të cilin ndryshorja është e barabartë me konstanten.

kaloni (x) (

rasti 5:
// kodi ekzekutohet nëse x = 5
pushim;

rasti 10:
// kodi ekzekutohet nëse x = 10
pushim;

default:
// kodi ekzekutohet nëse asnjë nga vlerat e mëparshme nuk përputhet
pushim;
}

FOR Loop. Dizajni ju lejon të organizoni sythe me një numër të caktuar përsëritjesh. Sintaksa duket si kjo:

për (veprim përpara fillimit të ciklit;
gjendja e vazhdimit të lakut;
veprim në fund të çdo përsëritjeje) (

// Kodi i trupit të lakut

Një shembull i një cikli prej 100 përsëritjesh.

për (i=0; i< 100; i++) // начальное значение 0, конечное 99, шаг 1

{
shuma = shuma + I;
}

WHILE lak. Operatori ju lejon të organizoni sythe me ndërtimin:

ndërsa (shprehje)
{
// Kodi i trupit të lakut
}

Cikli funksionon për aq kohë sa shprehja në kllapa është e vërtetë. Një shembull i një cikli për 10 përsëritje.

x = 0;
ndërsa (x< 10)
{
// Kodi i trupit të lakut
x++;
}

BEJ NDERKOHE– një lak me një kusht në dalje.

bëj
{
// Kodi i trupit të lakut
) ndërsa (shprehje);

Cikli funksionon për aq kohë sa shprehja është e vërtetë.
THYES– operatori i daljes së ciklit. Përdoret për të ndërprerë ekzekutimin e sytheve for, while, do while.

x = 0;
ndërsa (x< 10)
{
nëse (z > 20) thyejnë; // nëse z > 20, atëherë dilni nga cikli
// Kodi i trupit të lakut
x++;
}

SHKO– operatori i pakushtëzuar i tranzicionit.

gotometka1; // shko te metka1
………………
metka1:

VAZHDO- anashkalimi i deklaratave deri në fund të trupit të lakut.

x = 0;
ndërsa (x< 10)
{
// Kodi i trupit të lakut
nëse (z > 20) vazhdon; // nëse z > 20, atëherë kthehuni në fillim të trupit të lakut
// Kodi i trupit të lakut
x++;
}

Vargjeve.

Një grup është një zonë memorie ku disa variabla ruhen në mënyrë sekuenciale.

Një grup deklarohet si kjo:

ndër moshat; // grup prej 10 variablash int

peshë notuese // grup prej 100 variablash float

Kur deklarohen, vargjet mund të inicializohen:

mes moshave = ( 23, 54, 34, 24, 45, 56, 23, 23, 27, 28);

Ndryshoret e grupit arrihen si kjo:

x = moshat; // x i caktohet vlera nga elementi i 5-të i grupit.
mosha = 32; // Elementi i 9-të i grupit është vendosur në 32

Numri i elementeve të grupit është gjithmonë nga zero.

Funksione.

Funksionet ju lejojnë të kryeni të njëjtat veprime me të dhëna të ndryshme. Funksioni ka:

  • emri me të cilin quhet ajo;
  • argumente – të dhëna që funksioni përdor për llogaritje;
  • lloji i të dhënave të kthyer nga funksioni.

Përshkruan një funksion të përcaktuar nga përdoruesi jashtë funksioneve setup() dhe loop().

konfigurimi i zbrazët () (
// kodi ekzekutohet një herë kur programi fillon
}

void loop() (
// kodi kryesor, i ekzekutuar në një lak
}

// Deklarata e një funksioni të personalizuar me emrin funksionName
shkruani emrin e funksionit (lloji argument1, shkruani argument1, … , shkruani argument)
{
// funksion trup
return();
}

Një shembull i një funksioni që llogarit shumën e katrorëve të dy argumenteve.

int sumQwadr(int x, int y)
{
kthye (x* x + y*y);
}

Thirrja e funksionit shkon si kjo:

d= 2; b= 3;
z= shumaQwadr(d, b); // z do të jetë shuma e katrorëve të ndryshoreve d dhe b

Funksionet mund të jenë të integruara, të personalizuara ose shtesë.

Shumë e shkurtër, por këto të dhëna duhet të jenë të mjaftueshme për të filluar të shkruani programe C për sistemet Arduino.

Gjëja e fundit që dua t'ju them në këtë mësim është se si është zakon të formatoni programet në C. Unë mendoj se nëse po e lexoni këtë mësim për herë të parë, duhet ta kaloni këtë pjesë dhe t'i ktheheni më vonë, kur të keni diçka për të formatuar.

Qëllimi kryesor i dizajnit të jashtëm të programeve është të përmirësojë lexueshmërinë e programeve dhe të zvogëlojë numrin e gabimeve formale. Prandaj, për të arritur këtë qëllim, mund të shkelni me siguri të gjitha rekomandimet.

Emrat në gjuhën C.

Emrat që përfaqësojnë llojet e të dhënave duhet të shkruhen në shkronja të përziera. Shkronja e parë e emrit duhet të jetë me shkronja të mëdha (të mëdha).

Sinjali, numërimi i kohës

Variablat duhet të shkruhen me emra të përzier, me shkronjën e parë të vogël (të vogël).

Kategoria: . Ju mund ta shënoni atë.

Gjëja e parë që duhet të bëni për të zotëruar Arduino është të blini një tabelë korrigjimi (do të ishte një ide e mirë të blini menjëherë një tabelë qarku, etj.). Unë kam përshkruar tashmë se çfarë lloje të bordeve Arduino janë në treg. Nëse nuk e keni lexuar ende artikullin, ju rekomandoj ta lexoni. Për të mësuar bazat, ne zgjedhim një tabelë standarde Arduino Uno (origjinali ose një kopje e mirë kineze - varet nga ju). Kur lidhni bordin origjinal për herë të parë, nuk duhet të ketë probleme, por me atë "kinez" do t'ju duhet të gërmoni pak më thellë (mos u shqetësoni - unë do t'ju tregoj dhe ju them gjithçka).

Ne e lidhim Arduino me kompjuterin me një kabllo USB. LED në tabelë duhet të ndizet AKTIV". Një pajisje e re do të shfaqet në Device Manager " Pajisje e panjohur". Duhet të instaloni drejtuesin. Këtu do të shtoj një të vogël paqartësi(macja ishte e hutuar - nuk mbaj mend se cili shofer vendosi " problem i panjohur i pajisjes».

Fillimisht shkarkoi dhe shpaketoi mjedisin e softuerit Arduino ( arduino-1.6.6-dritare). Pastaj e shkarkova këtë. Është vetë-ekstraktuese. Hapi skedarin CH341SER.EXE. Zgjedhur instalimi (INSTALL). Pas instalimit, u shfaq një mesazh, kliko " Ne rregull(nuk pata kohë ta lexoja).

Pastaj shkova te vetitë e "pajisjes ende të panjohur" dhe zgjodha butonin "Përditëso drejtuesin". Zgjodha opsionin "Instalo nga një vend i caktuar" - tregova dosjen me mjedisin e softuerit të zbërthyer Arduino. Dhe ja, gjithçka funksionoi me sukses ...

Ne hapim programin Arduino (në rastin tim 1.6.6) dhe lejojmë aksesin.

Të gjitha projektet (programet) për Arduino përbëhen nga dy pjesë: konfigurimi i zbrazët Dhe lak i zbrazët. konfigurimi i zbrazët kryhet vetëm një herë, dhe lak i zbrazët bëhet pa pushim.

Përpara se të vazhdojmë, ka dy operacione të detyrueshme që duhet të kryhen:

— tregoni në mjedisin e softuerit Arduino se cilën tabelë po përdorni. Mjet->borde->Arduino Uno. Nëse shenja është tashmë në tabelën që ju nevojitet, kjo është mirë; nëse jo, vendosni një shenjë.

— specifikoni në mjedisin e softuerit se cilën portë serike përdorni për të komunikuar me bordin. Mjeti->port->COM3. Nëse shenja është tashmë në port, kjo është mirë, nëse jo, vendosni një shenjë. Nëse keni më shumë se një port të listuar në seksionin e porteve, si mund të zbuloni se cili prej tyre përdoret për t'u lidhur me tabelën? Marrim tabelën dhe shkëputim telin prej saj. Shkojmë përsëri në port dhe shohim se cili është zhdukur. Në rastin tim, skeda "portet" u bë fare joaktive.

Rilidhni kabllon USB.

Programi i parë nuk kërkon asnjë modul shtesë. Ne do të ndezim LED-in, i cili tashmë është montuar në tabelë (në pinin 13 të mikrokontrolluesit).

Së pari, le të konfigurojmë pinin 13 (hyrje ose dalje).

Për ta bërë këtë, futni në bllokun " konfigurimi i zbrazët» ekip pinMode , ne tregojmë parametrat në kllapa (13, OUTPUT) (Cili pin është i përfshirë, mënyra e funksionimit). Mjedisi i softuerit thekson fjalët/komandat me ngjyrën e duhur të shkronjave.

Shkoni në bllok" lak i zbrazët"dhe fut komandën dixhital Shkruaj me parametra (13, LARTË) .


Programi i parë është gati, tani mbetet vetëm ta ngarkoni atë në mikrokontrollues. Klikoni butonin UPLOAD.

LED u ndez. Por mos jini kaq skeptik për thjeshtësinë e programit të parë. Sapo keni zotëruar komandën e parë të kontrollit. Në vend të një LED, ju mund të lidhni çdo ngarkesë (qoftë ndriçimi në një dhomë ose një servo drive që mbyll furnizimin me ujë), por ne do të flasim për të gjitha këto më vonë ...

Ne ndezëm LED-in, shkëlqeu pak, është koha ta fikim. Për ta bërë këtë, le të modifikojmë programin që kemi shkruar. Në vend të " I LARTË "Le të shkruajmë" I ULËT ».


Klikoni butonin UPLOAD. LED doli.

Tashmë jemi njohur me konceptin "", është koha ta përdorim atë. Programet e mëtejshme do të bëhen gjithnjë e më voluminoze dhe komplekse, dhe puna për ndryshimin e tyre do të marrë gjithnjë e më shumë kohë nëse vazhdojmë të shkruajmë kode të tilla.

Ne shikojmë programin (ndizni LED përsëri). Le të vendosim numrin e pinit të mikrokontrolluesit jo si numër 13 , por një variabël që do t'i caktohet vlera e prodhimit përkatës (në rastin tonë, 13). Në të ardhmen, do të jetë shumë i përshtatshëm për të ndryshuar vlerat e variablave në fillim të programit, në vend që të gërmoni kodin në kërkim të atyre vendeve ku është e nevojshme të ndryshoni vlerat.

Krijoni një ndryshore globale int LED_pin = 13; (lloji i ndryshores, emri i ndryshores, vlera e caktuar për të).


Klikoni butonin UPLOAD. LED ndizet. Gjithçka funksionon në mënyrë perfekte.

Në këtë mësim, përveç ndezjes/fikjes së LED-së, do të mësojmë gjithashtu se si ta pulsojmë atë.

Për ta bërë këtë, futni komandën e dytë " dixhital Shkruaj» me parametra (Led_pin, ULËT).


Klikoni butonin UPLOAD. Dhe çfarë shohim? LED shkëlqen "në masën më të plotë". Arsyeja qëndron në faktin se koha e ndërrimit të dy gjendjeve ( I LARTË Dhe I ULËT ) është i papërfillshëm dhe syri i njeriut nuk mund t'i dallojë këta ndërprerës. Është e nevojshme të rritet koha e qëndrimit të LED-it në një nga gjendjet. Për ta bërë këtë ne shkruajmë komandën vonesë me parametër (1000 ) . Vonesa në milisekonda: 1000 milisekonda – 1 sekondë. Algoritmi i programit është si më poshtë: ndizni LED - prisni 1 sekondë, fikni LED - prisni 1 sekondë, etj.


Klikoni butonin UPLOAD. LED filloi të dridhej. Gjithçka po funksionon.

Le të finalizojmë programin duke krijuar një variabël që do t'i caktohet një vlerë përgjegjëse për kohëzgjatjen e vonesës.


Klikoni butonin UPLOAD. LED dridhet si më parë.

Le të finalizojmë programin që kemi shkruar. Detyrat janë si më poshtë:

  • LED ndizet për 0,2 sekonda dhe fiket për 0,8 sekonda;
  • LED ndizet për 0,7 sekonda dhe fiket për 0,3 sekonda.

Programi krijoi 2 variabla që janë përgjegjëse për vonesat kohore. Njëra përcakton kohën e funksionimit të LED-së të ndezur dhe e dyta përcakton kohën e funksionimit të LED-së të fikur.

Faleminderit per vemendjen. Shihemi se shpejti!

Artikujt më të mirë mbi këtë temë