Arduino: šta se može učiniti s njim. Arduino za početnike: upute korak po korak. Arduino programiranje i projekti: odakle početi? Arduino dizajni

U ovom članku odlučio sam prikupiti kompletan korak po korak vodič za Arduino početnike. Pogledat ćemo šta je Arduino, šta treba da počnete da učite, gde da preuzmete i kako da instalirate i konfigurišete programsko okruženje, kako funkcioniše i kako da koristite programski jezik i još mnogo toga što je potrebno za kreiranje punopravnog složeni uređaji bazirani na familiji ovih mikrokontrolera.

Ovdje ću pokušati dati sažeti minimum kako biste razumjeli principe rada sa Arduinom. Za potpunije uranjanje u svijet programabilnih mikrokontrolera, obratite pažnju na druge odjeljke i članke ove stranice. Ostaviću linkove na druge materijale na ovoj stranici radi detaljnijeg proučavanja nekih aspekata.

Šta je Arduino i čemu služi?

Arduino je komplet za elektroničku konstrukciju koji svakome omogućava stvaranje raznih elektro-mehaničkih uređaja. Arduino se sastoji od softvera i hardvera. Softverski dio uključuje razvojno okruženje (program za pisanje i otklanjanje grešaka firmvera), mnoge gotove i pogodne biblioteke i pojednostavljeni programski jezik. Hardver uključuje veliku liniju mikrokontrolera i gotovih modula za njih. Zahvaljujući tome, rad sa Arduinom je veoma lak!

Uz pomoć Arduina možete naučiti programiranje, elektrotehniku ​​i mehaniku. Ali ovo nije samo obrazovni konstruktor. Na osnovu toga možete napraviti zaista korisne uređaje.
Počevši od jednostavnih trepćućih svjetala, meteoroloških stanica, sistema za automatizaciju i završavajući sistemima pametnih kuća, CNC mašinama i bespilotnim letjelicama. Mogućnosti nisu ograničene ni vašom maštom, jer postoji ogroman broj uputstava i ideja za implementaciju.

Arduino Starter Kit

Da biste počeli učiti Arduino, morate nabaviti samu ploču mikrokontrolera i dodatne dijelove. Najbolje je kupiti Arduino starter kit, ali sve što vam treba možete odabrati sami. Preporučam odabir kompleta jer je lakši i često jeftiniji. Evo linkova do najboljih kompleta i pojedinačnih dijelova koje ćete svakako morati proučiti:

Osnovni Arduino kit za početnike:Kupi
Veliki set za obuku i prve projekte:Kupi
Set dodatnih senzora i modula:Kupi
Arduino Uno je najosnovniji i najprikladniji model iz linije:Kupi
Matična ploča bez lemljenja za lako učenje i izradu prototipa:Kupi
Set žica sa praktičnim konektorima:Kupi
LED set:Kupi
Komplet otpornika:Kupi
Dugmad:Kupi
Potenciometri:Kupi

Arduino IDE razvojno okruženje

Da biste napisali, otklonili greške i preuzeli firmver, morate preuzeti i instalirati Arduino IDE. Ovo je vrlo jednostavan i zgodan program. Na svojoj web stranici sam već opisao proces preuzimanja, instaliranja i konfiguracije razvojnog okruženja. Dakle, ovdje ću samo ostaviti linkove do najnoviju verziju programe i

Verzija Windows Mac OS X Linux
1.8.2

Arduino programski jezik

Kada imate mikrokontrolersku ploču u rukama i razvojno okruženje instalirano na vašem računaru, možete početi da pišete svoje prve skice (firmver). Da biste to učinili, morate se upoznati s programskim jezikom.

Arduino programiranje koristi pojednostavljenu verziju jezika C++ s unaprijed definiranim funkcijama. Kao iu drugim programskim jezicima sličnim C, postoji niz pravila za pisanje koda. Evo najosnovnijih:

  • Svaka instrukcija mora biti praćena tačkom i zarezom (;)
  • Prije deklariranja funkcije, morate navesti tip podataka koji vraća funkcija ili poništiti ako funkcija ne vrati vrijednost.
  • Također je potrebno naznačiti tip podataka prije deklariranja varijable.
  • Komentari su označeni: // Inline i /* blok */

Možete saznati više o tipovima podataka, funkcijama, varijablama, operatorima i jezičkim konstrukcijama na stranici Ne morate pamtiti i pamtiti sve ove informacije. Uvijek možete otići do priručnika i pogledati sintaksu određene funkcije.

Sav Arduino firmver mora sadržavati najmanje 2 funkcije. To su setup() i loop().

funkcija podešavanja

Da bi sve funkcionisalo potrebno je da napišemo skicu. Upalimo LED diodu nakon pritiska na tipku i ugasimo se nakon sljedećeg pritiska. Evo naše prve skice:

// varijable sa pinovima 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); )

// varijable sa pinovima povezanih uređaja

int switchPin = 8 ;

int ledPin = 11 ;

// varijable za pohranjivanje stanja gumba i LED-a

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 struja = digitalRead(switchPin);

if (zadnji != trenutni ) (

kašnjenje(5);

struja = digitalRead(switchPin);

povratna struja ;

void loop() (

currentButton = debounse(lastButton);

if (lastButton == LOW && currentButton == VISOKO ) (

ledOn = ! ledOn;

lastButton = CurrentButton ;

digitalWrite(ledPin, ledOn);

U ovoj skici, kreirao sam dodatnu funkciju debounse za suzbijanje odbijanja kontakta. Na mojoj web stranici postoje informacije o odbijanju kontakata. Obavezno pogledajte ovaj materijal.

PWM Arduino

Modulacija širine impulsa (PWM) je proces upravljanja naponom korištenjem radnog ciklusa signala. Odnosno, koristeći PWM možemo glatko kontrolirati opterećenje. Na primjer, možete glatko mijenjati svjetlinu LED-a, ali ova promjena svjetline se ne postiže smanjenjem napona, već povećanjem intervala niskog signala. Princip rada PWM-a je prikazan na ovom dijagramu:

Kada primenimo PWM na LED, ona počinje brzo da svetli i gasi se. Ljudsko oko to ne može vidjeti jer je frekvencija previsoka. Ali kada snimate video, najvjerovatnije ćete vidjeti trenutke kada LED ne svijetli. Ovo će se dogoditi pod uslovom da brzina kadrova kamere nije višestruka od PWM frekvencije.

Arduino ima ugrađen modulator širine impulsa. PWM možete koristiti samo na onim pinovima koje podržava mikrokontroler. Na primjer, Arduino Uno i Nano imaju 6 PWM pinova: to su pinovi D3, D5, D6, D9, D10 i D11. Pinovi se mogu razlikovati na drugim pločama. Možete pronaći opis ploče koja vas zanima

Za korištenje PWM-a u Arduinu postoji funkcija koja kao argumente uzima pin broj i PWM vrijednost od 0 do 255. 0 je 0% ispunjenja visokim signalom, a 255 je 100%. Napišimo jednostavnu skicu kao primjer. Učinimo da LED svijetli glatko, sačekajte jednu sekundu i ugasi se jednako glatko, i tako u nedogled. Evo primjera korištenja ove funkcije:

// LED je spojen na pin 11 int ledPin = 11; void setup() ( pinMode(ledPin, OUTPUT); ) void loop() ( for (int i = 0; i< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) ( analogWrite(ledPin, i); kašnjenje(5); ) )

// LED spojen na pin 11

int ledPin = 11 ;

void setup() (

pinMode(ledPin, OUTPUT);

void loop() (

za (int i = 0; i< 255 ; i ++ ) {

analogWrite(ledPin, i);

kašnjenje(5);

kašnjenje (1000);

za (int i = 255; i > 0; i -- ) (

Serija članaka i dijagrama obuke s radioamaterskim eksperimentima na Arduinu za početnike. Ovo je takva radio-amaterska igračka za konstrukciju, od koje, bez lemilice, graviranja štampanih ploča i slično, bilo koji električni čajnik može sastaviti punopravni radni uređaj, pogodan i za profesionalnu izradu prototipa i za amaterske eksperimente u proučavanju elektronika.


Arduino ploča je prvenstveno namijenjena podučavanju početnika radio amatera osnovama programiranja mikrokontrolera i kreiranju mikrokontrolerskih uređaja vlastitim rukama bez ozbiljne teorijske obuke. Arduino razvojno okruženje vam omogućava da prevedete i učitate gotov programski kod u memoriju ploče. Štaviše, učitavanje koda je izuzetno jednostavno.

Arduino odakle početi za početnike

Prije svega, da bi radio s Arduino pločom, početnik elektroničara treba preuzeti razvojni program Arduino; on se sastoji od ugrađenog uređivača teksta u kojem radimo s programskim kodom, područja za poruke, prozora za izlaz teksta (konzola ), traka sa alatkama sa dugmadima za često korišćene komande i nekoliko menija. Za preuzimanje svojih programa i komunikaciju, ovaj program je povezan na Arduino ploču preko standardnog USB kabla.


Kod napisan u Arduino okruženju se zove skica. Napisano je u uređivač teksta, koji ima posebne alate za umetanje/rezanje, zamjenu/pretraživanje teksta. Prilikom spremanja i izvoza, u području poruka se pojavljuju objašnjenja (pogledajte sliku u prvoj lekciji za početnike, odmah ispod), a mogu se prikazati i greške. Konzola prikazuje Arduino poruke, uključujući potpune izvještaje o greškama i druge korisne informacije. Dugmad na alatnoj traci omogućavaju vam da provjerite i snimite skicu, otvorite je, kreirate i sačuvate, otvorite praćenje serijske magistrale i još mnogo toga.

Dakle, prijeđimo na prvu lekciju Arduino sklopova za inženjere elektronike početnike.

Za praktičnost početnika, Arduino UNO kontroler već ima otpor i LED spojenu na pin 13 konektora, tako da nam u prvom eksperimentu nisu potrebni nikakvi vanjski radio elementi.


Učitavanjem koda, Arduino dozvoljava našem programu da učestvuje u inicijalizaciji sistema. Da bismo to učinili, naznačimo komandama mikrokontrolera koje će on izvršiti u trenutku početnog pokretanja, a zatim ih potpuno zaboravimo (tj. Arduino će ove komande izvršiti samo jednom pri pokretanju). I u tu svrhu u našem kodu odabiremo blok u kojem se te naredbe pohranjuju. void setup(), odnosno u prostoru unutar vitičastih zagrada ove funkcije, pogledajte skicu programa.

Ne zaboravi proteze! Gubitak barem jednog od njih učinit će cijelu skicu potpuno neizvodljivom. Ali nemojte stavljati ni dodatne zagrade, jer će to također uzrokovati grešku.

Preuzmi kod:
Skica sa komentarima i objašnjenjima u datoteci 001-1_mig-led.ino

Funkcija void loop() ovo je mjesto gdje stavljamo komande koje će se izvršavati sve dok je Arduino uključen. Nakon što je započeo izvršavanje od prve naredbe, Arduino će doći do samog kraja i odmah otići na početak da ponovi istu sekvencu. I tako beskonačan broj puta, sve dok ploča prima struju. U svojoj srži, void petlja je glavna funkcija, ulazna tačka u Arduino.


Funkcija kašnjenje(1000) odlaže obradu programa za 1000 milisekundi. Sve se odvija u vječnom ciklusu petlja().

Glavni zaključak nakon razumijevanja našeg prvog programa na Arduinu: Koristeći void loop i void setup funkcije, prenosimo naše upute mikrokontroleru. Sve što se nalazi unutar bloka za podešavanje će se izvršiti samo jednom. Sadržaj modula petlje će se ponavljati u petlji sve dok je Arduino uključen.

U prethodnom programu bilo je drugo kašnjenje između uključivanja i isključivanja LED lampice. Postojao je jedan veliki minus u najjednostavnijem kodu početnika Arduino operatera koji je korišten gore. Da bismo održali pauzu između uključivanja i isključivanja LED-a na jednu sekundu, koristili smo funkciju kašnjenje() i stoga u ovom trenutku kontroler nije u mogućnosti da izvrši druge komande u glavnoj funkciji petlja(). Ispravljanje koda u funkciji petlja(), prikazan u nastavku, rješava ovaj problem.

Umjesto postavljanja vrijednosti na HIGH, a zatim na LOW, dobićemo vrijednost ledPin-a i invertirati je. Recimo da je bio VISOK, postat će NISKI, itd.

Sekunda Opcija Arduino koda za LED kontrolu ovdje:

Tada možete zamijeniti funkciju kašnjenje(). Umjesto toga, bolje je koristiti funkciju millis(). Vraća broj milisekundi koje su prošle od pokretanja programa. Funkcija će se prepuniti nakon otprilike 50 dana od pokretanja programskog koda.

Slična funkcija je mikros(), koji vraća broj mikrosekundi koje su prošle od pokretanja programskog koda. Funkcija će se vratiti na nulu nakon 70 minuta rada programa.

Naravno, ovo će dodati nekoliko linija koda našoj skici, ali će vas nesumnjivo učiniti iskusnijim programerom i povećati potencijal vašeg Arduina. Da biste to učinili, samo trebate naučiti kako koristiti millis funkciju.

Treba jasno shvatiti da najjednostavnija funkcija kašnjenja pauzira izvršavanje cijelog Arduino programa, čineći ga nesposobnim za obavljanje bilo kakvih zadataka tokom ovog vremenskog perioda. Umjesto da pauziramo cijeli naš program, možemo izbrojati koliko je vremena prošlo prije nego što se akcija završi. Ovo je lijepo implementirano pomoću millis() funkcije. Kako bismo sve učinili lakšim za razumijevanje, razmotrit ćemo sljedeću opciju za treptanje LED-a bez vremenskog kašnjenja.

Početak ovog programa je isti kao i bilo koja druga standardna Arduino skica.


Ovaj primjer koristi dva Arduino digitalna I/O pina. LED je spojen na pin 8, koji je konfigurisan kao IZLAZ. Dugme je povezano na 9 preko, koji je konfigurisan kao INPUT. Kada pritisnemo dugme, pin 9 se postavlja na HIGH, a program prebacuje pin 8 na HIGH i time uključuje LED. Otpuštanjem dugmeta se pin 9 vraća na LOW. Kod zatim prebacuje pin 8 na LOW, gaseći indikatorsko svjetlo.

Za kontrolu pet LED dioda koristit ćemo različite manipulacije sa Arduino portovima. Da bismo to učinili, direktno ćemo pisati podatke na Arduino portove, što će nam omogućiti da postavimo vrijednosti ​​​​LED dioda koristeći samo jednu funkciju.

Arduino UNO ima tri porta: B(digitalni ulazi/izlazi od 8 do 13); C(analogni ulazi); D(digitalni ulazi/izlazi 0 do 7)

Svaki port kontrolira tri registra. Prvi DDR određuje da li će pin biti ulaz ili izlaz. Koristeći drugi PORT registar, možete postaviti pin na HIGH ili LOW. Koristeći treći, možete pročitati informacije o stanju Arduino nogu, ako rade kao ulaz.

Za rad sklopa koristit ćemo port B. Da bismo to učinili, sve pinove porta ćemo postaviti kao digitalne izlaze. Luka B ima samo 6 krakova. DDRB registarski bitovi moraju biti postavljeni na "1" , ako će se pin koristiti kao izlaz (OUTPUT), i u "0" , ako planiramo koristiti pin kao ulaz (INPUT). Bitovi porta su numerisani od 0 do 7, ali nemaju uvek svih 8 pinova

Recimo: DDRB = B00111110;// postavlja port B pinove 1 do 5 kao izlaz i 0 kao ulaz.

U našem krugu svjetla koristimo pet izlaza: DDRB = B00011111; // postavlja port B pinove 0 do 4 kao izlaze.

Da biste upisali podatke na port B, trebate koristiti registar PORTB. Prvu LED diodu možete upaliti pomoću kontrolne naredbe: PORTB = B00000001;, prva i četvrta LED dioda: PORTB = B00001001 i tako dalje

Postoje dva operatora binarnog pomaka: lijevo i desno. Operator lijevog pomaka uzrokuje da se svi bitovi podataka pomjeraju ulijevo, dok ih desni operator pomeranja pomera udesno.

primjer:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

Sada se vratimo na izvorni kod našeg programa. Moramo da unesemo dve varijable: gore dolje uključit će vrijednosti gdje se kretati - gore ili dolje, i drugo cylonće pokazati koje LED diode treba upaliti.

Strukturno, takav LED ima jedan zajednički terminal i tri terminala za svaku boju. Ispod je dijagram povezivanja RGB LED na Arduino ploču sa zajedničkom katodom. Svi otpornici koji se koriste u spojnom kolu moraju biti iste vrijednosti od 220-270 Ohma.


Za vezu sa zajedničkom katodom, dijagram povezivanja za trobojnu LED diodu bit će gotovo isti, osim što će zajednički pin biti spojen ne na masu (gnd na uređaju), već na pin +5 volti. Pinovi crveni, zeleni i plavi su u oba slučaja povezani na digitalne izlaze 9, 10 i 11 kontrolera.

Spojićemo eksterni LED na deveti pin Arduino UNO kroz otpor od 220 Ohma. Da biste glatko kontrolirali svjetlinu potonjeg, koristite funkciju analogWrite(). Obezbeđuje izlaz PWM signala na nogu kontrolera. Štaviše, tim pinMode() nema potrebe zvati. Jer analogWrite(pin,vrijednost) uključuje dva parametra: pin - broj pina za izlaz, vrijednost - vrijednost od 0 do 255.

kod:
/*
Primjer tutorijala za početnike Arduino programera koji otkriva mogućnosti naredbe analogWrite() za implementaciju Fade efekta LED-a
*/
int svjetlina = 0; // LED svjetlina
int fadeAmount = 5; // korak promjene svjetline
unsigned long currentTime;
unsigned long loopTime;

Void setup() (
pinMode(9, IZLAZ); // postavlja pin 9 kao izlaz
currentTime = millis();
loopTime = currentTime;
}

Void loop() (
currentTime = millis();
if(trenutnoVrijeme >= (Vrijeme petlje + 20))(
analogWrite(9, svjetlina); // postavite vrijednost na pin 9

Svjetlina = svjetlina + količina izblijeđivanja; // dodajemo korak za promjenu svjetline, koji će biti uspostavljen u sljedećem ciklusu

// ako je dostignut min. ili max. vrijednosti, onda idemo u suprotnom smjeru (obrnuto):
if (svjetlina == 0 || svjetlina == 255) (
fadeAmount = -fadeAmount;
}
loopTime = currentTime;
}
}

Rad Arduina sa enkoderom

Enkoder je dizajniran da pretvori ugao rotacije u električni signal. Od njega primamo dva signala (A i B), koji su suprotni po fazi. U ovom vodiču ćemo koristiti SparkFun COM-09117 enkoder, koji ima dvanaest pozicija po obrtaju (svaka pozicija je tačno 30°). Slika ispod jasno pokazuje kako izlaz A i B ovise jedan o drugom kada se enkoder kreće u smjeru kazaljke na satu ili suprotno od kazaljke na satu.

Ako signal A ide s pozitivnog nivoa na nulu, čitamo vrijednost izlaza B. Ako je izlaz B u ovom trenutku u pozitivnom stanju, tada se enkoder kreće u smjeru kazaljke na satu, ako B daje nulti nivo, tada enkoder se kreće u suprotnom smjeru. Čitanjem oba izlaza možemo izračunati smjer rotacije pomoću mikrokontrolera, a brojanjem impulsa sa A izlaza enkodera, kut rotacije.

Ako je potrebno, možete koristiti izračune frekvencije da odredite koliko brzo se enkoder rotira.

Koristeći enkoder u našem primjeru tutoriala, prilagodit ćemo svjetlinu LED-a pomoću PWM izlaza. Za čitanje podataka iz enkodera koristit ćemo metodu zasnovanu na softverskim tajmerima, koje smo već pokrili.

S obzirom na činjenicu da u brz slučaj, možemo rotirati dugme enkodera za 180° za 1/10 sekunde, tada će to biti 6 impulsa u 1/10 sekunde ili 60 impulsa u jednoj sekundi.

U stvarnosti, nije moguće rotirati brže. Pošto moramo pratiti sve polucikluse, frekvencija bi trebala biti oko 120 Herca. Da budemo potpuno sigurni, uzmimo 200 Hz.

Budući da u ovom slučaju koristimo mehanički enkoder, moguće je kontaktno odbijanje, a niska frekvencija savršeno filtrira takav odboj.


Na osnovu signala programskog tajmera potrebno je stalno upoređivati ​​trenutnu vrijednost izlaza enkodera A sa prethodnom vrijednošću. Ako se stanje promijeni iz pozitivnog u nulu, onda provjeravamo status izlaza B. Ovisno o rezultatu statusne ankete, povećavamo ili smanjujemo brojač vrijednosti svjetline LED diode. Programski kod sa vremenskim intervalom od oko 5 ms (200 Hz) je prikazan u nastavku:

Arduino početni kod:
/*
** Encoder
** Za kontrolu svjetline LED-a koristi se Sparkfun enkoder
*/

Int svjetlina = 120; // LED svjetlina, početak od pola
int fadeAmount = 10; // korak promjene svjetline
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 12; // pin 12
const int pin_B = 11; // pin 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
void setup() (
// proglasiti pin 9 kao izlaz:
pinMode(9, IZLAZ); // postavlja pin 9 kao izlaz
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = millis();
loopTime = currentTime;
}
void loop() (
currentTime = millis();
if(currentTime >= (loopTime + 5))( // provjera stanja svakih 5ms (frekvencija 200 Hz)
encoder_A = digitalRead(pin_A); // čitamo stanje izlaza A kodera
encoder_B = digitalRead(pin_B); // izlaz enkodera B
if((!encoder_A) && (encoder_A_prev))( // ako se stanje promijeni iz pozitivnog u nulu
if(koder_B) (
// izlaz B je u pozitivnom stanju, što znači da je rotacija u smjeru kazaljke na satu
// povećati svjetlinu sjaja, ne više od 255
if(svjetlina + fadeAmount )
drugo(
// izlaz B je u nultom stanju, što znači da je rotacija u smjeru suprotnom od kazaljke na satu
// smanjiti svjetlinu, ali ne ispod nule
if(brightness - fadeAmount >= 0) osvetljenost -= fadeAmount;
}

}
encoder_A_prev = encoder_A; // čuvamo vrijednost A za sljedeću petlju

AnalogWrite(9, svjetlina); // podesite svjetlinu na deveti pin

LoopTime = CurrentTime;
}
}

U ovom primjeru početnika, pogledat ćemo rad s piezo emiterom za generiranje zvukova. Da bismo to učinili, uzmimo piezoelektrični senzor koji nam omogućava generiranje zvučnih valova u frekvencijskom rasponu 20 Hz - 20 kHz.

Ovo je amaterski radio dizajn gdje su LED diode smještene po cijeloj zapremini. Koristeći ovu šemu, možete generirati različite svjetlosne i animacijske efekte. Složeni dijagrami mogu čak prikazati različite velike riječi. Drugim riječima, ovo je elementarni surround monitor

Servo pogon je glavni element u dizajnu različitih radio-upravljanih modela, a njegovo upravljanje pomoću kontrolera je jednostavno i praktično.


Kontrolni program je jednostavan i intuitivan. Počinje povezivanjem datoteke koja sadrži sve potrebne komande za kontrolu servo pogona. Zatim kreiramo servo objekat, na primjer servoMain. Sljedeća funkcija je setup(), u kojoj specificiramo da je servo spojen na deveti pin kontrolera.

kod:
/*
Arduino Servo
*/
#include
Servo servoMain; // Servo objekt

Void setup()
{
servoMain.attach(9); // Servo spojen na pin 9
}

void loop()
{
servoMain.write(45); // Rotirajte servo ulijevo za 45°
kašnjenje (2000); // Čekaj 2000 milisekundi (2 sekunde)
servoMain.write(0); // Rotirajte servo ulijevo za 0°
kašnjenje (1000); // Pauza 1 s.

kašnjenje (1500); // Pričekajte 1,5 s.
servoMain.write(135); // Rotirajte servo udesno za 135°
kašnjenje (3000); // Pauza 3 s.
servoMain.write(180); // Rotirajte servo udesno za 180°
kašnjenje (1000); // Pričekajte 1 s.
servoMain.write(90); // Rotirajte servo za 90°. Centralna pozicija
kašnjenje (5000); // Pauza 5 s.
}

U glavnoj funkciji petlja(), dajemo komande servomotoru, sa pauzama između njih.

Arduino brojač na 7-segmentnom indikatoru

Ovaj jednostavan Arduino projekat za početnike uključuje kreiranje brojača pomoću redovnog 7-segmentnog displeja sa zajedničkom katodom. Programski kod u nastavku vam omogućava da započnete brojanje od 0 do 9 kada pritisnete dugme.

Sedmosegmentni indikator - kombinacija je 8 LED dioda (posljednja je odgovorna za tačku) sa zajedničkom katodom, koja se može uključiti u željenom redoslijedu tako da stvaraju brojeve. Treba napomenuti da su u ovom krugu, pogledajte sliku ispod, pinovi 3 i 8 dodijeljeni katodi.


Desno je tabela korespondencije između Arduino pinova i pinova LED indikatora.

Kod za ovaj projekat:

brojevi bajtova = (
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
void setup() (
for(int i = 2; i pinMode(i, OUTPUT);
}
pinMode(9, INPUT);
}
int brojač = 0;
bool go_by_switch = istina;
int last_input_value = LOW;
void loop() (
if(go_by_switch) (
int switch_input_value = digitalRead(9);
if(last_input_value == LOW && switch_input_value == VIGH) (

}
last_input_value = switch_input_value;
) drugo (
kašnjenje (500);
brojač = (brojač + 1) % 10;
}
pisatiBroj(brojac);
}

Poništi broj pisanja(int broj) (
if(broj 9) (
povratak;
}
bajt maska ​​= brojevi;
bajt currentPinMask = B10000000;
for(int i = 2; i if(maska ​​& currentPinMask) digitalWrite(i,HIGH);
ostalo digitalWrite(i,LOW);
currentPinMask = currentPinMask >> 1;
}
}

Možete značajno proširiti potencijal Arduino ploča uz pomoć dodatnih modula koji se mogu povezati na PIN pinove gotovo svakog uređaja. Razmotrite najpopularnije i najzanimljivije module za proširenje, ili štitove kako ih još zovu.

Arduino je vrlo popularan među svim entuzijastima dizajna. Trebalo bi upoznati i one koji nikada nisu čuli za to.

Šta je Arduino?

Kako možete ukratko opisati Arduino? Najbolje riječi bi bile: Arduino je alat koji se može koristiti za kreiranje raznih elektroničkih uređaja. U suštini, ovo je prava hardverska računarska platforma opšte namene. Može se koristiti za izgradnju jednostavna kola, te za realizaciju prilično složenih projekata.

Dizajner se zasniva na svom hardveru, a to je ulazno-izlazna ploča. Za programiranje ploče koriste se jezici koji su bazirani na C/C++. Zovu se, respektivno, Processing/Wiring. Od grupe C su naslijedili izuzetnu jednostavnost, zahvaljujući kojoj ih svaka osoba može vrlo brzo savladati, a primjena znanja u praksi nije značajan problem. Da biste razumjeli lakoću rada, često se kaže da je Arduino za početnike dizajnere čarobnjaka. Čak i djeca mogu razumjeti Arduino ploče.

Šta možete prikupiti na njemu?

Primjene Arduina su prilično raznolike; može se koristiti kako za najjednostavnije primjere, koji će se preporučiti na kraju članka, tako i za prilično složene mehanizme, uključujući manipulatore, robote ili proizvodne strojeve. Neki majstori uspijevaju koristiti takve sisteme za izradu tableta, telefona, nadzornih i kućnih sigurnosnih sistema. smart House"ili samo kompjuteri. Arduino projekti za početnike, s kojima čak i oni bez iskustva mogu započeti, nalaze se na kraju članka. Mogu se čak koristiti za stvaranje primitivnih sistema virtuelne stvarnosti. Sve zahvaljujući prilično svestranom hardveru i mogućnostima koje Arduino programiranje pruža.

Gdje mogu kupiti komponente?

Komponente proizvedene u Italiji smatraju se originalnim. Ali cijena takvih kompleta nije niska. Stoga brojne kompanije ili čak pojedinci izrađuju zanatske metode Arduino kompatibilnih uređaja i komponenti, koje se u šali nazivaju proizvodnim klonovima. Prilikom kupovine takvih klonova ne može se sa sigurnošću reći da će uspjeti, ali želja za uštedom uzima svoj danak.

Komponente se mogu kupiti ili kao dio kompleta ili zasebno. Postoje čak i unaprijed pripremljeni kompleti za sklapanje automobila, helikoptera s različitim tipovima upravljanja ili brodova. Set poput onog na slici iznad, proizveden u Kini, košta 49 dolara.

Više o opremi

Arduino ploča je jednostavna AVR mikrokontroler, koji je flešovan sa bootloaderom i ima minimalno potreban USB-UART port. Postoje i druge važne komponente, ali u okviru ovog članka bilo bi bolje da se fokusiramo samo na ove dvije komponente.

Prvo, o mikrokontroleru, mehanizmu izgrađenom na jednom kolu u kojem se nalazi razvijeni program. Na program se može uticati pritiskom na dugmad, primanjem signala od komponenti kreacije (otpornici, tranzistori, senzori itd.) itd. Štaviše, senzori mogu biti veoma različiti po svojoj namjeni: osvjetljenje, ubrzanje, temperatura, udaljenost, pritisak, prepreke itd. Jednostavni dijelovi se mogu koristiti kao uređaji za prikaz, od LED dioda i visokotonaca do složenih uređaja, kao što su grafički displeji. Kvalitet koji se razmatra su motori, ventili, releji, servo, elektromagneti i mnogi drugi, za koje bi trebalo jako, jako dugo da se nabrajaju. MK radi direktno sa nekim od ovih lista, koristeći spojne žice. Neki mehanizmi zahtijevaju adaptere. Ali kada počnete da dizajnirate, biće vam teško da se otrgnete. Hajde sada da pričamo o Arduino programiranju.

Saznajte više o procesu programiranja ploče

Program koji je već spreman za rad na mikrokontroleru naziva se firmver. Može postojati ili jedan projekat ili Arduino projekti, pa bi bilo preporučljivo da svaki firmver pohranite u zasebnu mapu kako biste ubrzali proces pronalaženja potrebne datoteke. Ubacuje se na MK kristal pomoću specijalizovanih uređaja: programatora. I ovdje Arduino ima jednu prednost - ne treba mu programator. Sve je urađeno tako da programiranje Arduina za početnike nije teško. Napisani kod se može učitati u MK preko USB kabla. Ovu prednost ne postiže neki unapred izgrađen programator, već specijalni firmver - bootloader. Bootloader je poseban program koji se pokreće odmah nakon povezivanja i osluškuje da li postoje komande, da li treba flešovati kristal, da li postoje Arduino projekti ili ne. Postoji nekoliko vrlo atraktivnih prednosti korištenja bootloadera:

  1. Korištenje samo jednog komunikacijskog kanala, što ne zahtijeva dodatne vremenske troškove. Dakle, Arduino projekti ne zahtijevaju da povežete mnogo različitih žica i doći će do zabune kada ih koristite. Za uspješan rad dovoljan je jedan USB kabel.
  2. Zaštita od iskrivljenih ruku. Prilično je lako dovesti mikrokontroler u stanje cigle pomoću direktnog firmvera; ne morate naporno raditi. Kada radite sa bootloaderom, nećete moći pristupiti potencijalno opasnim postavkama (naravno uz pomoć razvojnog programa, inače se sve može pokvariti). Stoga je Arduino za početnike namijenjen ne samo s gledišta da je razumljiv i prikladan, već će vam omogućiti da izbjegnete neželjene financijske troškove povezane s neiskustvom osobe koja radi s njima.

Projekti za početak

Kada nabavite komplet, lemilicu, kolofonij i lem, ne biste trebali odmah oblikovati vrlo složene strukture. Naravno, možete ih napraviti, ali šanse za uspjeh u Arduinu za početnike su prilično niske sa složenim projektima. Da biste trenirali i poboljšali svoje vještine, možete pokušati implementirati nekoliko jednostavnijih ideja koje će vam pomoći da razumijete interakciju i rad Arduina. Kao takve prve korake u radu sa Arduinom za početnike, možemo vam savjetovati da razmotrite:

  1. Napravite jedan koji će raditi zahvaljujući Arduinu.
  2. Povezivanje posebnog dugmeta na Arduino. U ovom slučaju možete napraviti tako da dugme može podesiti sjaj LED diode od tačke br. 1.
  3. Povezivanje potenciometra.
  4. Kontrola servo pogona.
  5. Povezivanje i rad sa trobojnom LED diodom.
  6. Povezivanje piezoelektričnog elementa.
  7. Povezivanje fotootpornika.
  8. Povezivanje senzora pokreta i signala o njegovom radu.
  9. Povezivanje senzora vlažnosti ili temperature.

Projekti za budućnost

Malo je vjerovatno da ste zainteresirani za Arduino kako biste povezali pojedinačne LED diode. Najvjerovatnije vas privlači prilika da napravite vlastiti automobil ili leteći gramofon. Ovi projekti su teški za implementaciju i zahtijevat će puno vremena i upornosti, ali kada budu završeni, dobit ćete ono što želite: vrijedno Arduino dizajnersko iskustvo za početnike.

Većina inženjera elektronike radije gradi svoje projekte na bazi mikrokontrolera, o čemu smo već pisali nekoliko puta. U narednom članku ćemo se osvrnuti na jednostavne dizajne elektroničkih uređaja za početnike i najneobičnije projekte bazirane na spomenutom mikrokontroleru.

Prvo, vrijedi se upoznati s funkcionalnošću Arduino Uno mikroprocesora, na kojem je izgrađena većina projekata, a također razmotriti razloge za odabir ovog uređaja. Ispod su faktori zašto bi izumitelj početnik trebao odabrati Arduino uno:

  1. Prilično jednostavan za korištenje interfejs. Jasno je gdje je kontakt i gdje spojiti žice za povezivanje.
  2. Čip na ploči se povezuje direktno na USB port. Prednost ovog podešavanja je što je serijska komunikacija vrlo jednostavan protokol koji je izdržao test vremena, a USB čini povezivanje sa modernim računarima veoma praktičnim.
  3. Lako je pronaći središnji dio mikrokontrolera, a to je ATmega328 čip. Ima više hardverskih karakteristika kao što su tajmeri, eksterni i unutrašnji prekidi, PWM pinovi i višestruki režimi mirovanja.
  4. Uređaj je otvorenog koda, tako da veliki broj radio amatera može popraviti greške i probleme softver. Ovo olakšava otklanjanje grešaka u projektima.
  5. Brzina takta je 16 MHz, što je dovoljno brzo za većinu aplikacija i ne ubrzava mikrokontroler.
  6. Vrlo je zgodno kontrolirati snagu unutar njega i ima ugrađenu funkciju regulacije napona. Mikrokontroler se takođe može isključiti iz USB porta bez eksternog izvora napajanja. Možete spojiti vanjski izvor napajanja do 12 V. Štaviše, mikroprocesor će sam odrediti potrebni napon.
  7. Dostupnost 13 digitalnih kontakata i 6 analognih kontakata. Ovi pinovi vam omogućavaju da povežete opremu na Arduino uno ploču sa medija treće strane. Igle se koriste kao ključ za proširenje računarske snage Arduino uno u stvarnom svijetu. Jednostavno povežite svoje elektronske uređaje i senzore na konektore koji odgovaraju svakom od ovih pinova.
  8. ICSP zaglavlje je dostupno za zaobilaženje USB porta i sučelja direktno sa Arduinom kao serijskim uređajem. Ovaj port je potreban za resetovanje čipa ako je oštećen i više se ne može koristiti na vašem računaru.
  9. Dostupnost 32 KB fleš memorije za pohranjivanje programskog koda.
  10. LED na ploči se povezuje na digitalni pin 13 kako bi brzo otklonio greške koda i pojednostavio proces.
  11. Konačno, ima dugme za resetovanje programa na čipu.

Arduino su 2005. godine kreirala dva italijanska inženjera, David Cuartilles i Massimo Banzi, sa ciljem da se studentima omogući da nauče kako programirati Arduino uno mikrokontroler i poboljšati svoje elektronske vještine i koristiti ih u stvarnom svijetu.

Arduino uno može percipirati okruženje, prima ulaz od raznih senzora i može utjecati na okolinu i druge aktuatore. Mikrokontroler je programiran koristeći Arduino programski jezik (bazirano na ožičenju) i Arduino razvojno okruženje (bazirano na obradi).

Sada idemo direktno na projekte na Arduino uno.

Najlakši projekat za početnike

Pogledajmo nekoliko jednostavnih i zanimljivih Arduino uno projekata koje čak i početnici u ovom poslu mogu napraviti - alarmni sistem.

Već smo odradili lekciju o ovom projektu -. Ukratko o tome šta se i kako radi.

Ovaj projekat koristi senzor pokreta za detekciju pokreta i emisija visokog tona, te vizualni displej koji se sastoji od trepćućih LED svjetala. Sam projekat će vas upoznati sa nekoliko dodataka koji su uključeni u Arduino Beginner Kit, kao i sa nijansama korišćenja NewPinga.

To je Arduino biblioteka koja vam pomaže u kontroli i testiranju senzora udaljenosti sonara. Iako nije baš potpuna zaštita doma, nudi idealno rješenje za zaštitu malih prostora kao što su spavaće sobe i kupaonice.

Za ovaj projekat vi će biti potrebno:

  1. Ultrazvučni ping senzor – HC-SR04.
  2. Piezo zujalica.
  3. LED traka Light.
  4. Automobilsko osvjetljenje pomoću RGB trake. U ovom vodiču o projektu Arduino naučit ćete kako napraviti RGB unutrašnje osvjetljenje automobila koristeći Arduino uno ploču.

Mnogi entuzijasti automobila vole da dodaju dodatna svetla ili nadograde unutrašnje sijalice na LED, ali sa Arduino platformom možete uživati ​​u više kontrole i detalja vozeći moćne LED diode i svetlosne trake.

Možete promijeniti boju osvjetljenja koristeći Android uređaji(telefon ili tablet) pomoću aplikacije " Bluetooth RGB kontroler" (Dev Next Prototypes), koje možete besplatno preuzeti Android Play Store. Također možete pronaći EasyEDA elektroničko kolo ili naručiti vlastito kolo bazirano na Arduinu na PCB-u.

Nevjerovatni Arduino Uno projekti

Većina profesionalaca u području razvoja elektroničkih projekata na Arduino uno voli eksperimentirati. Kao rezultat, pojavljuju se zanimljivi i iznenađujući uređaji, o kojima se govori u nastavku:

  1. Dodavanje IR daljinskog upravljača vašem sistemu zvučnika. U potrošačkoj elektronici, daljinski upravljač daljinski upravljač je komponenta elektronski uređaj kao što je TV, DVD plejer ili drugi kućni aparat koji se koristi za bežično upravljanje uređajem sa male udaljenosti. Daljinski upravljač, prije svega, pogodan je za ljude i omogućava vam rad s uređajima koji nisu prikladni za direktan rad kontrola.
  2. Alarm. Sat realnog vremena se koristi za dobijanje tačnog vremena. Ovdje ovaj sistem prikazuje datum i vrijeme na LCD displeju i možemo podesiti alarm pomoću kontrolnih tipki. Čim dođe vrijeme alarma, sistem oglašava zvučni signal.
  3. Koračni motor. znači precizan motor koji se može okretati korak po korak. Takav uređaj se pravi pomoću robotike, 3D štampača i CNC mašina.

    Za ovaj projekat nabavite najjeftiniji koračni motor koji možete pronaći. Motori su dostupni online. Ovaj projekat koristi pedometar 28byj-48, koji je pogodan za većinu drugih sličnih projekata. Lako se spaja na Arduino ploču.
    - Trebaće vam 6 kablova sa ženskim i muškim konektorima. Samo trebate spojiti motor na ploču i to je to! Također možete dodati mali komad trake na rotirajuću glavu da vidite da proizvodi rotirajući pokret.

  4. Ultrazvučni senzor udaljenosti. Ovaj projekt koristi popularne , tako da uređaj može izbjegavati prepreke i kretati se u različitim smjerovima.

Kada završite svoj posao, rezultat vaših radnji će se pojaviti na ekranu. Kako bi stvari bile jednostavne i jasne, preporučuje se korištenje LCD-a sa I2C konvertorom, tako da su vam potrebna samo 4 kabla za povezivanje na Arduino ploču.

Braincourse mladi programerski borac Arduino ili gdje započeti upoznavanje sa ovom platformom.

„Odakle da počnem, Vaše Veličanstvo? - pitao. “Počni od početka”, važno je odgovorio Kralj...” (C) Lewis Carroll Alisa u zemlji čudesa

Korak 1: Počnimo od samog početka ili kako bi bilo lijepo da je Arduino besplatan

Pročitavši tone udžbenika Arduino, osmislivši gomilu korisnih aplikacija za ovu stvar u svakodnevnom životu, od automatizacije hranjenja riba u akvarijumu do robotskog sijača za lični travnjak, razumijemo da bez Arduino ne možemo proći!

Nakon što smo kupili kontroler, shvatili smo da imamo jednu ploču, ali mnogo ideja. sta da radim? Pametan vodi nas do prave odluke.

Treba klonirati Arduino vlastitim rukama!

Korak 2: Prikupite sve što vam treba

Da bismo ubrzali proces koristićemo razvojni odbor. Kao što je poznato iz tehničkih parametara kontrolera ATmega 328 IC, da bismo ga pokrenuli u minimalnoj konfiguraciji potrebno nam je:

− kontrolor Arduino Duemilanove(koristiće se kao programator);
− mikrokolo ATmega 328 IC ;
− kvarcni rezonator 16 MHz;
− otpornici 100 Ohm 3 kom.;
− kondenzatori 22pF 2 kom.;
− LED diode 3 kom sa crvenom, zelenom i žutom bojom sjaja;
− 5V stabilizator napona, na primjer 7805;
− bilo koja 9 baterija sa konektorom za povezivanje;
− USB kabl;
− računar ili laptop sa instaliranim softverskim paketom Arduino IDE;
− matična ploča i žice.

Korak 3: Pokrenite raspored



Postavljamo čip kontrolera na matičnu ploču.

Korak 4: Instalirajte stabilizator napona i strujna kola

Na ploču ugrađujemo L7805 stabilizator napona. Svrha pinova mikrokola je 1-ulaz (7-20V), 2-kućište, 3-izlaz (5V). Koristeći montažne žice, spajamo stabilizator na izvor napajanja i kontroler, kao što je prikazano na fotografijama.

Korak 5: Priključite napajanje na kontroler

U skladu s numeracijom pinova kontrolera, spajamo ga montažnim žicama na izlaz stabilizatora napona i zajedničku žicu.

Savjet: Instalacijske žice imaju različite boje izolacije, pokušajte koristiti žice iste boje za svaki krug.

Korak 6: Povežite kvarcni rezonator



Na ploču postavljamo rezonator i kondenzatore oscilatornog kruga.

Postupak instalacije je sljedeći:

− između uzemljenja i 9. kraka kontrolera postavljamo kondenzator od 22pF;
− postavljamo kondenzator od 22pF između uzemljenja i 10. kraka kontrolera;
− uključujemo rezonator između nogu 9 i 10 kontrolera;
− povezujemo otpornik od 10 kOm između 1 noge kontrolera i +5V (zaobilazimo signal “Reset”).

Korak 7: Dodajte indikatore statusa kontrolera

LED diode povezujemo serijski sa 100 Ohm otpornicima, između uzemljenja i našeg programatora.

Korak 7: Povežite matičnu ploču na ploču programatora


Povezivanje sklopljene matične ploče na ploču Arduino Duemilanove na sljedeći način:

− spojite izlaz žute LED diode na 9 izlaz na konektoru programatora, njegovo pulsiranje će nam pokazati da programator radi;
− spojite crveni LED izlaz na 8 izlaz na konektoru programatora, signalizira moguće greške;
− spojite izlaz zelene LED diode na 7 pin na konektoru programatora; njegov sjaj ukazuje na razmjenu podataka između programatora i mikrokontrolera.

Naše ploče povezujemo jednu s drugom s preostalim žicama kao što je prikazano na slici, ne zaboravljajući spojiti žice za napajanje + 5 V I okvir između njih.

Korak 8: Pretvaranje Arduino Duemilanove ploče u programator

Za učitavanje u mikrokontroler ATmega 328IC bootloader treba pretvoriti u naš Arduino Duemilanove u programator. Povezujemo naš sklop sa računarom pomoću USB kabl. Otvorite AndurinoIDE programsko okruženje, odaberite skicu (program) u njemu AndurinoISP i prenesite ga na Arduino Duemilanove. Treptanjem žute LED diode uvjeravamo se da je skica učitana u naš programator.

Korak 9: Učitajte bootloader

U AndurinoISP (stavka menija « Tools") odaberite tip kontrolera koji nam je potreban ( ATmega 328 IC). Dajemo naredbu za učitavanje bootloadera "Nareži bootloader". Pratimo AndurinoIDE poruke nakon što pokretač završi učitavanje " Gotovo Burning bootloader" naš mikrokontroler je spreman za snimanje skice projekta našeg novog domaći proizvodi.

Korak 10: Mogući problemi i rješenja






Moguće greške prilikom snimanja bootloadera i načini za njihovo uklanjanje prikazani su na gornjim snimkama ekrana za otklanjanje grešaka.

Ovaj članak ne tvrdi da je potpuni opis programiranja. "od nule" mikrokontroler, ali pokazuje kako, koristeći minimalan skup elemenata, možete početi praviti "svoju" Andurino.


Top