Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Zanimljivo
  • Program za pisanje Arduino skica. Arduino: primjeri onoga što se može učiniti

Program za pisanje Arduino skica. Arduino: primjeri onoga što se može učiniti

Dobar dan, Habr. Pokrećem seriju članaka koji će vam pomoći da se upoznate sa Arduinom. Ali to ne znači da ako niste novi u ovom poslu, nećete pronaći ništa zanimljivo za sebe.

Uvod

Bilo bi dobro da počnete od upoznavanja sa Arduinom. Arduino – hardver i softver za automatizaciju zgrada i robotske sisteme. Glavna prednost je što je platforma namijenjena neprofesionalnim korisnicima. Odnosno, svako može kreirati svog robota, bez obzira na znanje programiranja i sopstvene veštine.

Počni

Kreiranje projekta na Arduinu sastoji se od 3 glavne faze: pisanje koda, prototip (breadboarding) i firmware. Da bismo napisali kod i zatim flešovali ploču, potrebno nam je razvojno okruženje. Zapravo, ima ih dosta, ali mi ćemo programirati u originalnom okruženju - Arduino IDE. Sam kod ćemo napisati u C++, prilagođenom za Arduino. Možete ga preuzeti na službenoj web stranici. Skica je program napisan na Arduinu. Pogledajmo strukturu koda:


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

Važno je napomenuti da Arduino procesor kreira main() funkciju, koja je neophodna u C++. A rezultat onoga što programer vidi je:


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

Pogledajmo dvije potrebne funkcije. Funkcija setup() se poziva samo jednom kada se mikrokontroler pokrene. Ona je ta koja postavlja sve osnovne postavke. Funkcija loop() je ciklična. Poziva se u beskonačnoj petlji kroz cijelo vrijeme rada mikrokontrolera.

Prvi program

Da bismo bolje razumjeli princip rada platforme, napišimo prvi program. Ovaj najjednostavniji program (Blink) ćemo izvršiti u dvije verzije. Jedina razlika između njih je montaža.


int Led = 13; // deklarirati Led varijablu na pinu 13 (izlaz) void setup() ( pinMode(Led, OUTPUT); // definirati varijablu ) void loop() ( digitalWrite(Led, HIGH); // primijeniti napon na pin 13 kašnjenje (1000 ); // pričekajte 1 sekundu digitalWrite (Led, LOW); // ne primjenjujte napon na pin 13 delay (1000); // pričekajte 1 sekundu)

Princip rada ovog programa je prilično jednostavan: LED svijetli na 1 sekundu i gasi se na 1 sekundu. Za prvu opciju, ne moramo sastavljati raspored. Budući da Arduino platforma ima ugrađenu LED diodu spojenu na pin 13.

Arduino firmver

Da bismo prenijeli skicu na Arduino, prvo je moramo jednostavno spremiti. Zatim, da biste izbjegli probleme prilikom učitavanja, morate provjeriti postavke programatora. Da biste to učinili, odaberite karticu "Alati" na gornjoj ploči. U odjeljku "Plaćanje" odaberite svoju uplatu. To može biti Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo ili drugi. Također u odjeljku “Port” trebate odabrati svoj port za povezivanje (port na koji ste povezali svoju platformu). Nakon ovih koraka, možete otpremiti skicu. Da biste to učinili, kliknite na strelicu ili odaberite "Preuzmi" na kartici "Sketch" (možete koristiti i prečicu na tipkovnici "Ctrl + U"). Firmver ploče je uspješno završen.

Izrada prototipa/izgled

Za sastavljanje matične ploče potrebni su nam sljedeći elementi: LED, otpornik, ožičenje (skakači), matična ploča. Da ništa ne bi izgorjelo, i kako bi sve uspješno funkcionisalo, morate se pozabaviti LED diodom. Ima dvije "noge". Kratko je minus, dugo je plus. Uzemljenje (GND) i otpornik ćemo spojiti na kratki (kako bismo smanjili struju koja se dovodi do LED-a kako ga ne bi spalila), a na dugu ćemo napajati (spojiti na pin 13). Nakon povezivanja, otpremite skicu na ploču ako to ranije niste učinili. Šifra ostaje ista.


Ovo je kraj prvog dijela. Hvala vam na pažnji.

U životu Arduino programera prije ili kasnije dođe vrijeme kada standardno razvojno okruženje postane pretrpano. Ako skice više nemaju dovoljno memorije, treba vam teško realno vrijeme i rad s prekidima ili jednostavno želite biti bliže hardveru, onda je vrijeme da pređete na C. Iskusni inženjeri elektronike će se prezrivo namrštiti na pomen Arduina i poslati početnik u radionici za lemilicu. Ovo možda nije najgori savjet, ali ga još nećemo slijediti. Ako odbacimo Arduino IDE i jezik ožičenja/procesiranja, ostaje nam odlična ploča za otklanjanje grešaka, već opremljena svime potrebnim za rad mikrokontrolera. I, što je još važnije, bootloader je već ugrađen u memoriju kontrolera, što vam omogućava da učitate firmver bez upotrebe programatora.

Za programiranje u C, potreban nam je AVR GCC Toolchain.

Takođe će nam trebati instaliran Arduino IDE, jer... sadrži uslužni program avrdude, koji je potreban za preuzimanje firmvera na kontroler. CrossPack također sadrži avrdude, ali verzija koja dolazi s njim ne radi sa Arduinom.

Nakon što je sve instalirano, kreirajmo naš prvi projekat. Za početak, hajde da napišemo Makefile. To će nam omogućiti da izbjegnemo ručno unošenje dugih komandi svaki put kada kompajliramo i učitavamo firmver.

#Kontroler instaliran na ploči. Može biti drugačije, na primjer atmega328 DEVICE = atmega168 #Frekvencija takta 16 MHz SAT = 16000000 #Avrdude naredba za pokretanje. Treba ga kopirati iz 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.conf -carduino -P/dev/tty.usbserial-A600dAAQ -b19200 -D -p atmega168 OBJEKTI = main.o COMPILE = avr-gcc -Wall -Os -DF_CPU=$(SAT) -mmcu=$(UREĐAJ) sve: glavno .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

U ovom fajlu treba da unesemo našu komandu za pokretanje avrdude. Na različitim sistemima će izgledati drugačije. Da biste saznali svoju opciju, pokrenite Arduino IDE i označite okvir „Prikaži detaljan izlaz tokom uploada“ u postavkama.

Sada učitavamo bilo koju skicu u Arduino i gledamo poruke prikazane na dnu prozora. Tamo nalazimo poziv avrdude, kopiramo sve osim parametra -Uflash i zalijepimo ga u Makefile nakon “AVRDUDE = “.


Kratka napomena: svo uvlačenje u Makefile-u se vrši pomoću znakova tab (taster). Ako vaš uređivač teksta zamijeni ove znakove razmacima, naredba make će odbiti da izgradi projekat.

Sada kreirajmo fajl main.c- stvarni tekst našeg programa, u kojem tradicionalno treperimo LED diodom.

#include #include #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; }

Naš projekat je spreman. Otvorimo konzolu u direktoriju našeg projekta i unesite naredbu "make":


Kao što vidite, veličina rezultirajućeg firmvera je samo 180 bajtova. Slična Arduino skica zauzima 1116 bajtova u memoriji kontrolera.

Sada se vratimo na konzolu i unesite "make flash" da učitate kompajlirani fajl u kontroler:


Ako je preuzimanje završeno bez grešaka, LED dioda spojena na pin 13 ploče će treptati radosno. Ponekad avrdude ne može pronaći ploču ili otpadne zbog isteka - u ovom slučaju može pomoći uvrtanje USB kabela. Također, da biste izbjegli sukobe u pristupu ploči, ne zaboravite zatvoriti Arduino IDE prije naredbe “make flash”.

Možda će mnoge stvari opisane u ovom članku izgledati očigledne iskusnim programerima. Pokušao sam da opišem proces na jeziku koji je što razumljiviji za početnika Arduino korisnika i da na jednom mjestu prikupim informacije koje sam uspio dobiti iz različitih izvora i empirijski provjeriti. Možda će ovaj članak nekome uštedjeti par sati vremena.

Sretno u savladavanju mikrokontrolera!

Arduino je mala ploča koja se koristi za kreiranje raznih uređaja, zanimljivih gadgeta, pa čak i računalnih platformi. Ova ploča se zove mikrokontroler, koji je otvorenog koda i može se koristiti u mnogim aplikacijama.

Ovo je najjednostavnija i najjeftinija opcija za početnike, amatere i profesionalce. Proces programiranja odvija se u jeziku Processing/Wiring, koji se brzo i lako uči i koji je baziran na jeziku C++, a zahvaljujući tome je vrlo lako izvodljiv. Pogledajmo šta je Arduino, koliko je koristan za početnike, njegove mogućnosti i karakteristike.

Arduino je računarska platforma ili ploča koja će služiti kao mozak za vaše nove uređaje ili gadgete. Na temelju toga možete kreirati i uređaje s jednostavnim krugovima i složene, radno intenzivni projekti, na primjer, robote ili dronove.

Osnova dizajnera je ulazno-izlazna ploča (hardver), kao i softverski dio. Dizajnerski softver zasnovan na Arduinu predstavljen je integrisanim razvojnim okruženjem.

Spolja, samo okruženje izgleda ovako:

Arduino softver je dizajniran na takav način da ga može nositi čak i početnik bez znanja o programiranju. Dodatni faktor uspjeha u korištenju mikrokontrolera bila je mogućnost rada sa matičnom pločom, kada su potrebni dijelovi (otpornici, diode, tranzistori itd.) povezani na kontroler bez potrebe za lemljenjem.

Većina Arduino ploča je povezana preko USB kabla. Takva veza vam omogućava da napajate ploču i učitate skice, tj. mini-programi. Proces programiranja je također izuzetno jednostavan. Prvo, korisnik koristi IDE editor koda za kreiranje potrebnog programa, a zatim se jednim klikom učitava u Arduino.

Kako kupiti Arduino?

Ploča i mnogi Arduino dijelovi su napravljeni u Italija, dakle, originalne komponente su prilično skupe. Ali postoje odvojene komponente dizajnera ili kompleta, takozvani setovi, koji se proizvode po talijanskoj analogiji, ali po pristupačnijim cijenama.

Možete kupiti analog na domaćem tržištu ili ga, na primjer, naručiti iz Kine. Mnogi ljudi znaju za web stranicu AliExpress, na primjer. Ali za one koji počinju svoje upoznavanje sa Arduinom, bolje je naručiti svoju prvu ploču iz ruske internetske trgovine. S vremenom se možete prebaciti na kupovinu ploča i dijelova u Kini. Vrijeme isporuke iz ove zemlje bit će od dvije sedmice do mjesec dana, a na primjer, cijena velikog kompleta neće biti više 60-70 dolara.

Standardni kompleti obično uključuju sljedeće dijelove:

  • ploča za kruh;
  • LED diode;
  • otpornici;
  • 9V baterije;
  • regulatori napona;
  • dugmad;
  • džemperi;
  • matrična tipkovnica;
  • ploče za proširenje;
  • kondenzatori.

Da li trebate znati programiranje?

Prvi koraci u radu sa Arduino pločom počinju programiranjem ploče. Program koji je već spreman za rad sa pločom naziva se skica. Nema potrebe da brinete o nepoznavanju programiranja. Proces kreiranja programa je prilično jednostavan, a na internetu postoji mnogo primjera skica, budući da je Arduino zajednica vrlo velika.

Nakon što je program preveden, on se učitava (flešuje) na ploču. U ovom slučaju, Arduino ima neospornu prednost - u većini slučajeva se za programiranje koristi USB kabel. Odmah nakon učitavanja, program je spreman za izvršavanje raznih naredbi.

Početnici sa Arduinom moraju znati dvije ključne funkcije:

  • postaviti()– koristi se jednom kada je ploča uključena, koristi se za inicijalizaciju postavki;
  • petlja()– koristi se stalno, je završna faza podešavanja.

Primjer notacije funkcije postaviti():

Void setup() ( Serial.begin(9600); // Otvorite serijsku vezu pinMode(9, INPUT); // Dodijelite pin 9 kao ulazni pinMode(13, OUTPUT); // Dodijelite pin 13 kao izlaz)

Funkcija postaviti() se izvodi na samom početku i samo 1 put odmah nakon uključivanja ili ponovnog pokretanja uređaja.

Funkcija petlja() izvršava se nakon funkcije setup(). Petlja se prevodi kao petlja ili ciklus. Funkcija će se izvršavati iznova i iznova. Dakle, ATmega328 mikrokontroler (većina Arduino ploča sadrži ovo) će izvršiti funkciju petlje oko 10.000 puta u sekundi.

Također ćete se susresti sa dodatnim funkcijama:

  • pinMode– način unosa i izlaza informacija;
  • analogRead– omogućava vam očitavanje analognog napona koji se pojavljuje na pinu;
  • analogWrite– snimanje analognog napona na izlazni pin;
  • digitalRead– omogućava čitanje vrijednosti digitalnog izlaza;
  • digitalWrite– omogućava vam da postavite vrijednost digitalnog izlaza na niski ili visoki nivo;
  • Serial.print– prevodi podatke projekta u tekst koji se lako čita.

Osim toga, početnicima u Arduinu će se svidjeti činjenica da postoji mnogo biblioteka za ploče, koje su zbirke funkcija koje vam omogućavaju kontrolu ploče ili dodatnih modula. Najpopularnije uključuju:

  • čitanje i pisanje u pohranu,
  • Priključak za internet,
  • čitanje SD kartica,
  • kontrola koračnog motora,
  • prikazivanje teksta
  • itd.

Kako podesiti Arduino?

Jedna od glavnih prednosti dizajnera je njegova sigurnost u pogledu korisničkih postavki. Ključne postavke koje su potencijalno štetne za Arduino su zaštićene i neće im biti dostupne.

Stoga čak i neiskusni programer može sigurno eksperimentirati i mijenjati različite opcije kako bi postigao željeni rezultat. Ali za svaki slučaj, toplo preporučujemo da pročitate tri važna materijala o tome kako ne oštetiti ploču:

Klasični algoritam za podešavanje Arduino programa izgleda ovako:

  • IDE instalacija, koja se može preuzeti ispod ili sa web stranice proizvođača;
  • instaliranje softvera na PC koji koristite;
  • pokrenite Arduino datoteku;
  • unošenje razvijenog programa u kodni prozor i prijenos na ploču (pomoću USB kabela);
  • u IDE sekciji morate odabrati tip konstruktora koji će se koristiti. To se može uraditi u prozoru „alati” - „ploče”;
  • provjerite kod i kliknite na “Dalje”, nakon čega će započeti preuzimanje na Arduino.
Verzija Windows MacOS Linux
1.6.5 Zip
Instalater
Instalater 32 bita
64 bita
1.8.2 Zip
Instalater
Instalater 32 bita
64 bita
ARM
1.8.5 Zip
Instalater
Aplikacija
Instalater 32 bita
64 bita
ARM

Vježbajmo ruku

Kako bi pouzdano implementirali složene ideje, koristili softversko okruženje i Arduino, početnici se moraju dočepati toga. Da biste to učinili, preporučuje se prvo savladati lakše zadatke i projekte.

Najjednostavniji projekat koji možete napraviti je da LED, koji se nalazi na Arduino ploči nasuprot porta, treperi svake sekunde.

Za ovo vam je potrebno:

  • povežite dizajnera sa računarom,
  • otvorite program, u odjeljku "servis" tražimo blok "serijski port".
  • odaberite željeni interval
  • nakon čega trebate dodati kod koji se nalazi u Arduino IDE u odjeljku "Primjeri".

Prvi projekti u Arduinu za početnike mogu biti:

  • treperi LED;
  • povezivanje i upravljanje temperaturnim senzorom;
  • povezivanje i upravljanje senzorom pokreta;
  • povezivanje fotootpornika;
  • kontrola servo pogona.

Prvi projekat

Sada smo stigli do našeg prvog projekta. Spojimo Arduino, LED i dugme. Ovaj projekat je savršen za početnike.

Naša šema će izgledati ovako:

LED dioda će se upaliti nakon pritiska na dugme, a ugasit će se nakon sljedećeg pritiska. Skica ili program za sam Arduino će biti ovakav:

// pinovi povezanih uređaja int switchPin = 8; int ledPin = 11; // varijable za pohranjivanje stanja gumba i LED boolean lastButton = LOW; boolean currentButton = LOW; boolean ledOn = lažno; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // funkcija za odbijanje boolean debounse(boolean last) ( boolean current = digitalRead(switchPin); if(last != current) ( kašnjenje ( 5); struja = digitalRead(switchPin); ) povratna struja; ) void loop() ( currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ; digitalWrite(ledPin, ledOn); )

Možda ste primijetili funkciju debounse, o kojoj još nismo pisali. To je potrebno za.

Nakon što ovladate početnim vještinama rada s pločom, možete početi implementirati složenije i višestruke zadatke. Dizajner vam omogućava da kreirate RC automobil, upravljivi helikopter, kreirate svoj telefon, kreirate sistem itd.

Kako biste ubrzali svoje savladavanje rada sa Arduino pločom, preporučujemo da počnete s izradom uređaja iz našeg odjeljka, gdje su korak po korak opisani procesi stvaranja najzanimljivijih uređaja i gadgeta.

Ova lekcija pruža minimalno znanje potrebno za programiranje Arduino sistema u C. Možete je samo pregledati i koristiti kao referentnu informaciju u budućnosti. Za one koji su programirali u C na drugim sistemima, možete preskočiti članak.

Ponavljam da je ovo minimalna informacija. Opis pokazivača, klasa, string varijabli, itd. biće dato u narednim časovima. Ako vam nešto nije jasno, ne brinite. U budućim lekcijama će biti mnogo primjera i objašnjenja.

Struktura Arduino programa.

Struktura Arduino programa je prilično jednostavna i, u svom minimalnom obliku, sastoji se od dva dijela setup() i loop().

void setup() (

void loop() (

Funkcija setup() se izvršava jednom, kada se kontroler uključi ili resetuje. Obično se u njemu odvijaju početna podešavanja varijabli i registara. Funkcija mora biti prisutna u programu, čak i ako u njoj nema ničega.

Nakon što setup() završi, kontrola prelazi na funkciju loop(). Izvršava naredbe zapisane u njegovom tijelu (između vitičastih zagrada) u beskonačnoj petlji. Zapravo, ove komande izvode sve algoritamske radnje kontrolera.

Originalna pravila sintakse C jezika.

; tačka i zarez Izrazi mogu sadržavati koliko god želite razmaka i prijeloma reda. Kraj izraza je označen simbolom tačke i zareza.

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

( ) vitičaste zagrade definirati blok funkcija ili izraza. Na primjer, u funkcijama setup() i loop().

/* … */ blok komentara, obavezno zatvorite.

/* ovo je blok komentara */

// komentar u jednom redu, nema potrebe za zatvaranjem, važi do kraja reda.

// ovo je jedan red komentara

Varijable i tipovi podataka.

Varijabla je RAM ćelija u kojoj se pohranjuju informacije. Program koristi varijable za skladištenje međuproračunskih podataka. Za proračune se mogu koristiti podaci različitih formata i različitih bitnih dubina, tako da varijable u jeziku C imaju sljedeće tipove.

Tip podataka Dubina, bitovi Raspon brojeva
boolean 8 tačno, lažno
char 8 -128 … 127
unsigned char 8 0 … 255
bajt 8 0 … 255
int 16 -32768 … 32767
unsigned int 16 0 … 65535
riječ 16 0 … 65535
dugo 32 -2147483648 … 2147483647
unsigned long 32 0 … 4294967295
kratko 16 -32768 … 32767
float 32 -3.4028235+38 … 3.4028235+38
duplo 32 -3.4028235+38 … 3.4028235+38

Tipovi podataka se biraju na osnovu zahtevane tačnosti proračuna, formata podataka itd. Na primjer, ne biste trebali odabrati dugi tip za brojač koji broji do 100. Radit će, ali operacija će zauzeti više podataka i programske memorije i trebat će više vremena.

Deklaracija varijabli.

Tip podataka je specificiran, praćen imenom varijable.

int x; // deklaracija varijable pod nazivom x tipa int
float widthBox; // deklaracija varijable pod nazivom widthBox tipa float

Sve varijable moraju biti deklarirane prije nego što se koriste.

Varijabla se može deklarirati bilo gdje u programu, ali to određuje koji programski blokovi je mogu koristiti. One. Varijable imaju opseg.

  • Varijable deklarirane na početku programa, prije funkcije void setup(), smatraju se globalnim i dostupne su bilo gdje u programu.
  • Lokalne varijable su deklarirane unutar funkcija ili blokova kao što je for petlja i mogu se koristiti samo unutar deklariranih blokova. Moguće je imati više varijabli sa istim imenom, ali različitim opsegom.

int mod; // varijabla dostupna svim funkcijama

void setup() (
// prazan blok, nisu potrebne početne postavke
}

void loop() (

dugo računanje; // varijabla count dostupna je samo u funkciji loop().

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

Kada deklarišete promenljivu, možete postaviti njenu početnu vrednost (inicijalizovati).

int x = 0; // varijabla x je deklarirana s početnom vrijednošću 0
char d = 'a'; // varijabla d je deklarirana sa početnom vrijednošću jednakom kodu znakova “a”

Prilikom izvođenja aritmetičkih operacija s različitim tipovima podataka dolazi do automatske konverzije tipova podataka. Ali uvijek je bolje koristiti eksplicitnu konverziju.

int x; // int varijabla
char y; // char varijabla
int z; // int varijabla

z = x + (int)y; // varijabla y se eksplicitno pretvara u int

Aritmetičke operacije.

Operacije odnosa.

Logičke operacije.

Operacije na pokazivačima.

Bitne operacije.

& I
| ILI
^ EKSKLUZIVNO ILI
~ INVERZIJA
<< SHIFT LEFT
>> SHIFT DESNO

Mješovite operacije dodjele.

Izbor opcija, upravljanje programom.

IF operater testira uvjet u zagradama i izvršava sljedeći izraz ili blok u vitičastim zagradama ako je uvjet istinit.

if (x == 5) // ako je x=5, tada se izvršava z=0
z=0;

if (x > 5) // ako je x >
( z=0; y=8; )

IF...ELSE omogućava vam da birate između dvije opcije.

if (x > 5) // ako je x > 5, tada se blok izvršava z=0, y=8;
{
z=0;
y=8;
}

{
z=0;
y=0;
}

ELSE IF– omogućava vam da napravite više izbora

if (x > 5) // ako je x > 5, tada se blok izvršava z=0, y=8;
{
z=0;
y=8;
}

else if (x > 20) // ako je x > 20, ovaj blok se izvršava
{
}

else // inače se ovaj blok izvršava
{
z=0;
y=0;
}

SWITCH CASE- više izbora. Omogućava vam da uporedite varijablu (u primjeru je to x) sa nekoliko konstanti (u primjeru 5 i 10) i izvršite blok u kojem je varijabla jednaka konstanti.

prekidač (x) (

slučaj 5:
// kod se izvršava ako je x = 5
break;

slučaj 10:
// kod se izvršava ako je x = 10
break;

zadano:
// kod se izvršava ako se nijedna od prethodnih vrijednosti ne podudara
break;
}

FOR Loop. Dizajn vam omogućava da organizirate petlje sa datim brojem iteracija. Sintaksa izgleda ovako:

for (radnja prije početka petlje;
uslov nastavka petlje;
radnja na kraju svake iteracije) (

// kod tijela petlje

Primjer petlje od 100 iteracija.

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

{
suma = suma + I;
}

WHILE petlja. Operator vam omogućava da organizirate petlje s konstrukcijom:

dok (izraz)
{
// kod tijela petlje
}

Petlja se izvodi sve dok je izraz u zagradama istinit. Primjer petlje za 10 iteracija.

x = 0;
dok (x< 10)
{
// kod tijela petlje
x++;
}

DO WHILE– petlja sa uslovom na izlazu.

uradi
{
// kod tijela petlje
) while (izraz);

Petlja se izvodi sve dok je izraz istinit.
BREAK– operator izlaza iz petlje. Koristi se za prekid izvršavanja for, while, do while petlji.

x = 0;
dok (x< 10)
{
ako (z > 20) prekid; // ako je z > 20, onda izlazimo iz petlje
// kod tijela petlje
x++;
}

IDI– operator bezuslovnog prelaza.

gotometka1; // idi na metka1
………………
metka1:

NASTAVI- preskakanje naredbi do kraja tijela petlje.

x = 0;
dok (x< 10)
{
// kod tijela petlje
ako (z > 20) nastavi; // ako je z > 20, onda se vraćamo na početak tijela petlje
// kod tijela petlje
x++;
}

Nizovi.

Niz je memorijska oblast u kojoj je nekoliko varijabli pohranjeno uzastopno.

Niz je deklarisan ovako:

int ages; // niz od 10 int varijabli

plutajuća težina // niz od 100 float varijabli

Kada su deklarisani, nizovi se mogu inicijalizirati:

int starosti = ( 23, 54, 34, 24, 45, 56, 23, 23, 27, 28);

Varijablama niza se pristupa ovako:

x = godine; // x je dodijeljena vrijednost iz 5. elementa niza.
godine = 32; // 9. element niza je postavljen na 32

Numeracija elemenata niza je uvijek od nule.

Funkcije.

Funkcije vam omogućavaju da izvršite iste radnje s različitim podacima. Funkcija ima:

  • ime kojim se zove;
  • argumenti – podaci koje funkcija koristi za izračunavanje;
  • tip podataka koji vraća funkcija.

Opisuje korisnički definiranu funkciju izvan funkcija setup() i loop().

void setup() (
// kod se izvršava jednom kada se program pokrene
}

void loop() (
// glavni kod, izvršava se u petlji
}

// deklaracija prilagođene funkcije pod nazivom functionName
upišite ime funkcije(tip argument1, tip argument1, …, tip argument)
{
// tijelo funkcije
return();
}

Primjer funkcije koja izračunava zbir kvadrata dva argumenta.

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

Poziv funkcije ide ovako:

d= 2; b= 3;
z= suma Qwadr(d, b); // z će biti zbir kvadrata varijabli d i b

Funkcije mogu biti ugrađene, prilagođene ili plug-in.

Vrlo kratko, ali ovi podaci bi trebali biti dovoljni za početak pisanja C programa za Arduino sisteme.

Poslednja stvar koju želim da vam kažem u ovoj lekciji je kako je uobičajeno da se programi formatiraju u C. Mislim da ako čitate ovu lekciju po prvi put, trebalo bi da preskočite ovaj deo i vratite se na njega kasnije, kada budete imali nešto za formatiranje.

Glavni cilj eksternog dizajna programa je poboljšati čitljivost programa i smanjiti broj formalnih grešaka. Stoga, da biste postigli ovaj cilj, možete sigurno prekršiti sve preporuke.

Imena na C jeziku.

Imena koja predstavljaju tipove podataka moraju se pisati u mješovitim velikim slovima. Prvo slovo imena mora biti veliko (velika slova).

Signal, TimeCount

Promjenjive moraju biti napisane u mješovitim nazivima, s prvim malim slovom (mala slova).

Kategorija: . Možete ga označiti.

Prva stvar koju treba da uradite da biste savladali Arduino je da kupite ploču za otklanjanje grešaka (bilo bi dobra ideja da odmah kupite ploču, itd.). Već sam opisao koje vrste Arduino ploča postoje na tržištu. Ako još niste pročitali članak, preporučujem da ga pročitate. Da bismo naučili osnove, biramo standardnu ​​Arduino Uno ploču (original ili dobra kineska kopija - na vama je). Prilikom prvog povezivanja originalne ploče ne bi trebalo biti problema, ali s "kineskom" morat ćete kopati malo dublje (ne brinite - sve ću vam pokazati i reći).

Arduino povezujemo sa računarom USB kablom. LED dioda na ploči bi trebala upaliti ON". Novi uređaj će se pojaviti u Upravitelju uređaja " Nepoznati uređaj". Morate instalirati drajver. Ovdje ću dodati malo dvosmislenost(mačka je bila rastrojena - ne sjećam se koji je vozač odlučio “ nepoznat problem sa uređajem».

Prvo ste preuzeli i raspakovali Arduino softversko okruženje ( arduino-1.6.6-windows). Onda sam preuzeo ovu. Samoraspakuje se. Pokrenuo fajl CH341SER.EXE. Odabrano instalacija (INSTALACIJA). Nakon instalacije pojavila se poruka, kliknulo na " uredu"(nisam imao vremena da ga pročitam).

Zatim sam otišao u svojstva još uvijek "nepoznatog uređaja" i odabrao dugme "Ažuriraj upravljački program". Odabrao sam opciju "Instaliraj sa određene lokacije" - označio je mapu s raspakiranim Arduino softverskim okruženjem. I eto, sve je funkcionisalo uspešno...

Pokrećemo Arduino program (u mom slučaju 1.6.6) i dozvoljavamo pristup.

Svi projekti (programi) za Arduino sastoje se iz dva dijela: void setup I void loop. void setup se izvodi samo jednom, i void loop se radi iznova i iznova.

Prije nego što nastavimo, postoje dvije obavezne operacije koje treba završiti:

— naznačite u Arduino softverskom okruženju koju ploču koristite. Alat->ploča->Arduino Uno. Ako je oznaka već na ploči koja vam je potrebna, to je dobro; ako nije, stavite oznaku.

— navedite u softverskom okruženju koji serijski port koristite za komunikaciju sa pločom. Alat->port->COM3. Ako je oznaka već na portu, to je dobro, ako nije, stavite oznaku. Ako imate više od jednog porta navedenih u odjeljku portovi, kako možete saznati koji se koristi za povezivanje na ploču? Uzimamo ploču i odspojimo žicu s nje. Ponovo idemo u luke i vidimo koji je nestao. U mom slučaju, kartica "portovi" je uopće postala neaktivna.

Ponovo povežite USB kabl.

Prvi program ne zahtijeva nikakve dodatne module. Upalit ćemo LED, koji je već montiran na ploči (na pinu 13 mikrokontrolera).

Prvo, konfigurirajmo pin 13 (ulaz ili izlaz).

Da biste to učinili, unesite u blok " void setup» tim pinMode , označavamo parametre u zagradama (13, IZLAZ) (Koji pin je uključen, način rada). Softversko okruženje ističe riječi/naredbe odgovarajućom bojom fonta.

Idi u blok" void loop"i unesite komandu digitalWrite sa parametrima (13, VISOKO) .


Prvi program je spreman, sada ostaje samo da ga učitate u mikrokontroler. Kliknite na dugme UPLOAD.

LED dioda se upalila. Ali nemojte biti toliko skeptični u pogledu jednostavnosti prvog programa. Upravo ste savladali prvu kontrolnu komandu. Umjesto LED-a, možete spojiti bilo koje opterećenje (bilo da se radi o rasvjeti u prostoriji ili servo pogonu koji isključuje dovod vode), ali o tome ćemo kasnije...

Upalili smo LED, malo je svijetlio, vrijeme je da ga ugasimo. Da bismo to učinili, izmijenimo program koji smo napisali. Umjesto " HIGH "ajmo pisati" LOW ».


Kliknite na dugme UPLOAD. LED dioda se ugasila.

Već smo se upoznali s konceptom "", vrijeme je da ga iskoristimo. Dalji programi će postajati sve obimniji i složeniji, a rad na njihovoj promjeni zahtijevat će sve više vremena ako nastavimo pisati ovakav kod.

Gledamo program (ponovo upalimo LED). Postavimo broj pina mikrokontrolera ne kao broj 13 , ali varijabla kojoj će biti dodijeljena vrijednost odgovarajućeg izlaza (u našem slučaju, 13). U budućnosti će biti vrlo zgodno mijenjati vrijednosti varijabli na početku programa, umjesto da preturate po kodu u potrazi za onim mjestima gdje je potrebno promijeniti vrijednosti.

Kreirajte globalnu varijablu int LED_pin = 13; (tip varijable, ime varijable, vrijednost koja joj je dodijeljena).


Kliknite na dugme UPLOAD. LED dioda svijetli. Sve radi savršeno.

U ovoj lekciji, osim uključivanja/isključivanja LED-a, naučit ćemo i kako ga treptati.

Da biste to učinili, unesite drugu naredbu “ digitalWrite» sa parametrima (LED_pin, LOW).


Kliknite na dugme UPLOAD. I šta vidimo? LED dioda svijetli “u najvećoj mjeri”. Razlog leži u činjenici da je vrijeme prebacivanja dva stanja ( HIGH I LOW ) je zanemariv i ljudsko oko ne može otkriti ove prekidače. Potrebno je povećati vrijeme dok LED dioda ostaje u jednom od stanja. Da bismo to uradili pišemo naredbu kašnjenje sa parametrom (1000 ) . Kašnjenje u milisekundama: 1000 milisekundi – 1 sekunda. Algoritam programa je sljedeći: upaliti LED - pričekati 1 sekundu, isključiti LED - pričekati 1 sekundu, itd.


Kliknite na dugme UPLOAD. LED dioda je počela da treperi. Sve radi.

Završimo program kreiranjem varijable kojoj će biti dodijeljena vrijednost odgovorna za trajanje kašnjenja.


Kliknite na dugme UPLOAD. LED lampica treperi kao i prije.

Hajde da finaliziramo program koji smo napisali. Zadaci su sljedeći:

  • LED je uključen 0,2 sekunde i isključen 0,8 sekundi;
  • LED dioda je uključena 0,7 sekundi i isključena 0,3 sekunde.

Program je kreirao 2 varijable koje su odgovorne za vremenska kašnjenja. Jedan određuje vrijeme rada uključene LED diode, a drugi vrijeme rada isključene LED diode.

Hvala vam na pažnji. Vidimo se uskoro!

Najbolji članci na ovu temu