Lecții de antrenament Arduino. Aplicație. Directorul mobil. Tema pentru acasă - termometru digital

Studierea microcontrolerelor pare complicată și de neînțeles? Înainte să apară Arudino, nu a fost chiar ușor și a necesitat un anumit set de programatori și alte echipamente.

Acesta este un fel de designer electronic. Scopul inițial al proiectului este de a permite oamenilor să învețe cu ușurință cum să programeze dispozitivele electronice, alocând în același timp un timp minim părții electronice.

Asamblarea circuitelor complexe și conectarea plăcilor se poate realiza fără fier de lipit, dar cu ajutorul unor jumperi cu conexiuni masculine și feminine detașabile. În acest fel, pot fi conectate atât elementele montate, cât și plăcile de expansiune, care în lexiconul Arduino sunt numite pur și simplu „Shields”.

Care este prima placă Arduino pe care o cumpără pentru un începător?

Este considerată placa de bază și cea mai populară. Această placă este dimensionată ca Card de credit. Destul de mare. Majoritatea scuturilor care sunt la vânzare se potrivesc perfect cu el. Placa are prize pentru conectarea dispozitivelor externe.

În magazinele autohtone în 2017, prețul său este de aproximativ 4-5 dolari. Pe modele moderne inima sa este Atmega328.

Imaginea plăcii Arduino și explicația funcțiilor fiecărui pin, pinout Arduino UNO

Microcontrolerul de pe această placă este un cip lung într-un pachet DIP28, ceea ce înseamnă că are 28 de picioare.

Următoarea placă cea mai populară costă aproape de două ori mai mult decât cea anterioară - 2-3 dolari. Aceasta este o taxă. Plăcile actuale sunt construite pe același Atmega328, sunt similare funcțional cu UNO, diferențele sunt în dimensiune și soluție pentru coordonarea cu USB, mai multe despre asta mai târziu. O altă diferență este că mufele în formă de pin sunt prevăzute pentru conectarea dispozitivelor la placă.

Numărul de pini (picioare) acestei plăci este același, dar puteți vedea că microcontrolerul este realizat într-un pachet mai compact TQFP32, ADC6 și ADC7 sunt adăugate la carcasă, celelalte două picioare „extra” dublează magistrala de alimentare. . Dimensiunea sa este destul de compactă - cam de dimensiunea degetului mare.

A treia placă cea mai populară este că nu are un port USB pentru conectarea la un computer vă voi spune cum se face conexiunea puțin mai târziu.

Aceasta este cea mai mică placă dintre toate revizuite, altfel este similară cu cele două precedente, iar inima sa este încă Atmega328. Nu vom lua în considerare alte plăci, deoarece acesta este un articol pentru începători, iar compararea plăcilor este un subiect pentru un articol separat.

În partea de sus există o diagramă de conectare USB-UART, pinul „GRN” este conectat la circuitul de resetare al microcontrolerului, poate fi apelat de altceva, veți afla de ce este necesar mai târziu.

Dacă UNO este convenabil pentru prototipare, atunci Nano și Pro Mini convenabil pentru versiuni finale proiectul tău pentru că ocupă puțin spațiu.

Cum se conectează Arduino la computer?

Arduino Uno și Nano se conectează la computer prin USB. Cu toate acestea, nu există suport hardware pentru portul USB o soluție de circuit de conversie de nivel, numită de obicei USB-to-Serial sau USB-UART (rs-232). În același timp, un bootloader special Arduino este introdus în microcontroler, ceea ce permite intermiterea prin aceste magistrale.

Arduino Uno implementează această conexiune pe un microcontroler cu Suport USB- ATmega16U2 (AT16U2). Situația se dovedește a fi așa microcontroler suplimentar de pe placă este necesar pentru a flash-ul firmware-ului principal al microcontrolerului.

ÎN Arduino Nano acest lucru este implementat de cipul FT232R sau de CH340 analog. Acesta nu este un microcontroler - este un convertor de nivel, acest fapt facilitează asamblarea Arduino Nano de la zero cu propriile mâini.

De obicei, driverele sunt instalate automat atunci când conectați placa Arduino. Totuși, când am cumpărat o copie chineză a Arduino Nano, dispozitivul a fost identificat, dar nu a funcționat, pe convertor era un autocolant rotund cu informații despre data lansării, nu știu dacă acest lucru a fost făcut intenționat , dar când l-am dezlipit, am văzut marcajul CH340.

Nu am mai întâlnit asta până acum și am crezut că toate convertoarele USB-UART au fost asamblate pe FT232, a trebuit să descarc driverele, sunt foarte ușor de găsit căutând „drivere Arduino ch340”. După o instalare simplă, totul a funcționat!

Microcontrolerul poate fi alimentat și prin același port USB, de exemplu. daca il conectezi la un adaptor de la telefon mobil- sistemul dumneavoastră va funcționa.

Ce ar trebui să fac dacă placa mea nu are USB?

Placa Arduino Pro Mini are dimensiuni mai mici. Acest lucru a fost realizat prin eliminare conector USB pentru firmware și același convertor USB-UART. Prin urmare, trebuie achiziționat separat. Cel mai simplu convertor bazat pe CH340 (cel mai ieftin), CPL2102 și FT232R, costă de la 1 dolar.

Când cumpărați, acordați atenție la ce tensiune este proiectat acest adaptor. Pro mini vine în versiuni de 3,3 și 5 V, convertoarele au adesea un jumper pentru comutarea tensiunii de alimentare.

La firmware Pro Mini, chiar înainte de a începe, trebuie să apăsați RESET, cu toate acestea, în convertoarele cu DTR acest lucru nu este necesar, diagrama de conectare este în figura de mai jos.

Acestea sunt conectate cu terminale speciale „Mama-Mama” (femeie-femeie).

De fapt, toate conexiunile se pot face folosind astfel de terminale (Dupont), acestea vin pe ambele părți cu prize și cu mufe, iar pe o parte există o priză și pe cealaltă există o mufă.

Cum se scriu programe pentru Arduino?

Pentru a lucra cu schițe (numele firmware-ului în limba inginerilor Arduino), există un mediu de dezvoltare integrat special pentru Arduino IDE, îl puteți descărca gratuit de pe site-ul oficial sau din orice resursă tematică, de obicei, nu există probleme cu instalare.

Așa arată interfața programului. Puteți scrie programe într-un limbaj C AVR simplificat dezvoltat special pentru Arduino, în esență un set de biblioteci numite Wiring, precum și în C AVR pur. A cărui utilizare simplifică codul și accelerează funcționarea acestuia.

În partea de sus a ferestrei există un meniu familiar unde puteți deschide un fișier, setări, selectați placa cu care lucrați (Uno, Nano și multe, multe altele) și, de asemenea, puteți deschide proiecte cu exemple gata făcute cod. Mai jos este un set de butoane pentru lucrul cu firmware-ul, veți vedea alocarea tastelor în figura de mai jos.

În partea de jos a ferestrei există o zonă pentru afișarea informațiilor despre proiect, starea codului, firmware-ul și prezența erorilor.

Bazele programării Arduino IDE

La începutul codului trebuie să declarați variabile și să vă conectați biblioteci suplimentare, dacă există, acest lucru se face după cum urmează:

#include biblioteka.h; // conectați biblioteca numită „Biblioteka.h”

#define changenaya 1234; // Declarați o variabilă cu valoarea 1234

Comanda Define permite compilatorului să aleagă tipul de variabilă în sine, dar o puteți seta manual, de exemplu, un întreg int sau un floating-point float.

int led = 13; // a creat variabila „led” și i-a atribuit valoarea „13”

Programul poate determina starea pinului ca 1 sau 0. 1 este o unitate logică, dacă pinul 13 este 1, atunci tensiunea de pe pinul său fizic va fi egală cu tensiunea de alimentare a microcontrolerului (pentru Arduino UNO și Nano - 5 V)

Record semnal digital efectuat de comanda digitalWrite (pin, valoare), de exemplu:

digitalWrite(led, high); //scrieți unul la pinul 13 (am declarat-o mai sus) jurnal. Unități.

După cum puteți înțelege, porturile sunt accesate în funcție de numerotarea de pe placă, corespunzătoare numărului. Iată un exemplu similar cu codul anterior:

digitalWrite(13, mare); // setați pinul 13 la unu

O funcție de întârziere utilizată frecvent este apelată de comanda delay(), a cărei valoare este specificată în milisecunde, microsecundele sunt obținute folosind

delayMicroseconds() Delay(1000); //microcontrolerul va aștepta 1000 ms (1 secundă)

Setările portului de intrare și ieșire sunt specificate în funcția void setup() cu comanda:

pinMode(NOMERPORTA, OUTPUT/INPUT); // argumente - numele variabilei sau numărul portului, intrare sau ieșire din care să alegeți

Înțelegerea primului program Blink

Ca un fel de „Bună, lume” pentru microcontrolere, există un program pentru a clipi un LED, să ne uităm la codul acestuia:

La început, cu comanda pinMode, am spus microcontrolerului să atribuie portul cu LED-ul la ieșire. Ați observat deja că în cod nu există nicio declarație a variabilei „LED_BUILTIN”, adevărul este că în Uno, Nano și alte plăci, un LED încorporat este conectat la pinul 13 din fabrică și este lipit pe bord. Poate fi folosit de dvs. pentru afișare în proiectele dvs. sau pentru cea mai simpla verificare programele dvs. intermitente.

Apoi, setăm pinul la care LED-ul este lipit la o unitate (5 V), rândul următor face ca MK să aștepte 1 secundă, apoi setează pinul LED_BUILTIN la zero, așteaptă o secundă și programul se repetă într-un cerc, așa că atunci când LED_BUILTIN este egal cu 1, LED-ul (și orice altă sarcină conectată la port) este aprins , când la 0, este oprit.

Citim valoarea de la portul analogic și folosim datele citite

Microcontrolerul AVR Atmega328 are un analog de 10 biți încorporat convertor digital. ADC-ul de 10 biți vă permite să citiți valorile tensiunii de la 0 la 5 volți, în pași de 1/1024 din întreaga variație a amplitudinii semnalului (5 V).

Pentru a fi mai clar, să luăm în considerare situația, să presupunem că valoarea tensiunii la intrarea analogică este de 2,5 V, ceea ce înseamnă că microcontrolerul va citi valoarea de la pinul „512”, dacă tensiunea este 0 - „0” și dacă 5 V - (1023). 1023 - deoarece numărarea începe de la 0, adică. 0, 1, 2, 3 etc. până la 1023 - 1024 de valori în total.

Așa arată în cod, folosind schița standard „analogInput” ca exemplu

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

pinMode(ledPin, OUTPUT);

sensorValue = analogRead(sensorPin);

digitalWrite(ledPin, HIGH);

întârziere (sensorValue);

digitalWrite(ledPin, LOW);

întârziere (sensorValue);

Declaram variabile:

    Ledpin - atribuim independent un pin cu un LED încorporat la ieșire și îi dăm un nume individual;

    sensorPin - intrare analogică, setată în funcție de marcajele de pe placă: A0, A1, A2 etc.;

    sensorValue - o variabilă pentru a stoca valoarea întreagă citită și munca in continuare cu el.

Codul funcționează astfel: sensorValue salvează valoarea analogică citită de sensorPin (comanda analogRead). - aici lucrează cu semnal analog se termină, atunci totul este ca în exemplul anterior.

Scriem unul pe ledPin, LED-ul se aprinde și așteptăm un timp egal cu valoarea sensorValue, adică. de la 0 la 1023 milisecunde. Oprim LED-ul și așteptăm din nou această perioadă de timp, după care codul se repetă.

Astfel, prin poziționarea potențiometrului setăm frecvența de clipire a LED-ului.

Funcția de hartă pentru Arudino

Nu toate funcțiile pentru actuatoare (nu știu de niciuna) acceptă „1023” ca argument, de exemplu, servo-ul este limitat de unghiul de rotație, adică pe jumătate de tură (180 de grade) (jumătate de tură) a servomotorului argumentul maxim al funcției este „180”

Acum despre sintaxă: hartă (valoarea pe care o traducem, valoarea minimă de intrare, valoarea maximă de intrare, valoarea minimă de ieșire, valoarea maximă de ieșire).

În cod arată așa:

(hartă(analogRead(pot), 0, 1023, 0, 180));

Citim valoarea de la potențiometru (analogRead(pot)) de la 0 la 1023, iar la ieșire obținem numere de la 0 la 180

Valori hărți valori:

În practică, aplicăm acest lucru la funcționarea codului aceluiași servo drive, aruncați o privire la codul din Arduino IDE, dacă citiți cu atenție secțiunile anterioare, atunci nu necesită nicio explicație.

Și schema de conectare.

Concluziile Arduino - foarte instrument convenabil pentru instruire în lucrul cu microcontrolere. Și dacă utilizați pur C AVR, sau așa cum se numește uneori „Pure C”, veți reduce semnificativ greutatea codului și mai mult se va încadra în memoria microcontrolerului, ca urmare veți obține o fabrică excelentă - a făcut o placă de depanare cu capacitatea de a flash firmware prin USB.

Îmi place Arduino. Este păcat că mulți programatori experimentați de microcontrolere îl critică fără temei pentru că este prea simplificat. În principiu, doar limbajul este simplificat, dar nimeni nu te obligă să îl folosești, plus că poți să flashi microcontrolerul prin conectorul ICSP și să încarci acolo codul dorit, fără bootloadere inutile.

Pentru cei care vor să se joace cu electronica, ca un designer avansat, acesta este perfect, iar pentru programatorii experimentați, ca o placă care nu necesită asamblare, va fi și utilă!

Mai mult mai multe informatii despre Arduino și caracteristicile utilizării sale în diferite circuite, vezi e-carte - .

Probabil, mulți au auzit despre o astfel de platformă minunată, dar din cauza cunoștințelor slabe de electronică sau programare, mulți vor decide să ocolească arduino. Da, platforma este destul de complexă, dar vă puteți da seama, principalul lucru este dorința. Multă vreme eu însumi nu am îndrăznit să studiez această platformă, dar într-o bună zi mi-am dat seama că îmi poate face viața mai ușoară...
Există o mulțime de informații despre arduino pe Internet, dar fără practică, nicio teorie nu va ajuta, așa că m-am hotărât să cumpăr acest kit, dar permiteți-mi să mă înțeleg că este încă mai ieftin să cumpărați singur toate componentele, nu cu un kit, dar cu arhive cu instructiuni si programe (schite postate mai jos).
De ce am luat acest set, pentru că există multă alegere în China? Anterior, Arduino era ca ceva transcendental și de neînțeles pentru mine și l-am ales doar din cauza numărului de lecții, motiv pentru care am ales acest set, apropo, am trecut deja în revistă unul similar.

L-am cumpărat direct de la Tao:

Setul a venit într-o cutie de plastic sigilată cu bandă adezivă, aparent pentru ca nimic să nu poată fi scos din cutie (eu ruptesem deja banda):


Ce e in cutie?

Echipament:



- 1x placa arduino uno, eventual chiar originala
- 1x display LCD 16 caractere pe 2 linii cu placa i2c


- 15x LED-uri: 5 buc. roșu, 5 buc. de culoare albastră si 5 buc. culoare portocalie


- 3x fotorezistor
- 1x receptor IR
- 1x senzor de flacără
- 2 senzori de vibratii
- 1x senzor de temperatura
- 4 butoane
- 2 piezoelemente


- display digital LED cu 1 cifra
- display digital LED cu 4 cifre
- matrice LED 8x8


- 8x rezistor constant la 220 Ohm
- 5x rezistență constantă la 1 kOhm
- 5x rezistență constantă la 10 kOhm


- 1x rezistenta variabila (potentiometru) 50 kOhm


- 1x zonă mare de amenajare


- 1x cablu DuPont mamă-mascul 30 fire multicolore


- 30 de fire de conectare pentru placa de breadboard mascul-mascul


- 1x cablu USB


- 1x placă RFID
- 1x card RFID
- 1x RFID pentru chei


- 1x telecomanda IR
- 1x modul microfon
- 1x buton tampon model 4x4
- 1x releu
- 1x modul ceas
- 1x modul driver pentru motor
- 1x modul senzor de temperatură și umiditate
- 1x modul joystick
- 1x modul LED RGB
- 1x modul senzor de umiditate
- 1x cablu de alimentare pentru coroana


- 1x servo
- 1x motor cu cutie de viteze


- 1x registru de deplasare 74НС595N
Iată cum arată totul asamblat:



Când am primit setul, am început imediat să caut instrucțiuni, dar nu am găsit nimic în interiorul cutiei, am crezut că chinezii m-au înșelat și era cât pe ce să se certe cu el, dar am citit descrierea lotului și acolo a fost un link cu toate instrucțiunile și programele: (parola:22cd)
Dar programe chineze Este mai bine să nu îl utilizați, deci este mai bine să descărcați programul de programare arduino de pe site-ul oficial:
Dar am adunat instrucțiuni, programe, schițe găsite pe Internet și schițele mele, care au fost utile în stăpânirea arduino.

start

Recomand să o citești mai întâi carte pdfîn rusă: Ghid pentru stăpânirea Arduino- 2012, care este pe al meu. Există o mulțime de informații utile scrise acolo și într-un limbaj clar, doar câteva lecții.
În arhivă Modkit_Desktop_WIN32_Kickstarter_v2.zip există un program de programare vizuală.
În arhivă Arduino - chinezesc.rar Există instrucțiuni chinezești, schițe chinezești, biblioteci, dar există multe erori acolo.
În arhivă Arduino - program.rar Există un program arduino cu biblioteci care mi-au fost utile în stăpânirea arduino.
În arhivă arduino-master - multe lecții.zip sunt destul de multe lecții, diagrame, biblioteci cu buna descriereîn limba engleză. Mai mult, cea mai mare parte din această arhivă a fost „trasă” de chinezi.
În arhivă Schițele mele.rar Sunt proiectele mele, deși sunt 34, nu am terminat toate lecțiile de chineză, am corectat unele și chiar ultimul proiect l-am făcut pe cont propriu. Numerele schițelor mele nu se potrivesc cu numerele lecțiilor revizuite, dar toate schițele mele sunt semnate în transliterație și cred că toată lumea va înțelege.
ÎNCEPE!
Lecția #1 - LED intermitent
Pentru acest tutorial vom avea nevoie de aceste piese:


- 2 fire (nu voi indica în continuare numărul de fire),
- Dioda electro luminiscenta,
- rezistență de 220 ohmi,
- placa de breadboard si placa arduino uno
Conectați:


Și obținem:
Lecția #2 - conectarea a 8 LED-uri - lumini de mers
Pentru această lecție veți avea nevoie de:
- 8 LED-uri,
- 8 rezistențe la 220 Ohm,

L-am conectat puțin greșit, am pus 1 rezistență la masă și l-am conectat la toate LED-urile:




Rezultat:
Lecția #3 - schimbarea luminozității LED-ului folosind un rezistor variabil
Avem nevoie:
- Dioda electro luminiscenta,
- rezistor variabil,
- rezistență de 220 ohmi,
- fire, breadboard și arduino


De data aceasta am decis să nu conectez un rezistor la LED, dar dacă îl conectați „permanent”, atunci trebuie să puneți un rezistor pe LED, altfel LED-ul se va arde rapid.




Rezultat:
Lecția nr. 4 - lumini de rulare formate din 6 LED-uri
Necesar:
- 6 LED-uri,
- Rezistor de 220 Ohm
- fire, breadboard și arduino


A ieșit așa:




Rezultat:
Lecția nr. 5 - conectarea unui LED RGB
Vei avea nevoie:
- Modul RGB
- fire, breadboard și arduino


A ieșit așa:




Rezultat:
Lecția nr. 6 - conectarea elementului piezoelectric
Detalii:
- element piezoelectric
- fire, breadboard și arduino


A ieșit așa:


Rezultat:

Cu muzica:

Lecția nr. 8 - aprinderea LED-ului de la buton
Detalii:
- buton
- Dioda electro luminiscenta
- rezistențe 220 Ohm și 10 kOhm
- fire, breadboard și arduino


A ieșit așa:


Rezultat:
Lecția nr. 8.1 - on/off. LED de la buton
Detalii:
- Dioda electro luminiscenta
- 2 nasturi
- Rezistor de 220 Ohm
- 2 rezistențe la 10 kOhm
- fire, breadboard și arduino


A ieșit așa




Rezultat:
Lecția nr. 8.2 - schimbarea luminozității LED-ului de la buton
Schema de conectare este identică cu lecția 8.1, doar schița este diferită și rezultatul este:
Lecția #9 - servomotor
Detalii:
- servomotor
- fire, breadboard și arduino


A ieșit așa:


Rezultat:
Lecția #10 - conectarea registrului de deplasare 74HC595
Detalii:
- 8 LED-uri
- registru de deplasare 74HC595
- 8 rezistențe la 220 Ohm
- fire, breadboard și arduino


A ieșit așa:

Lecția nr. 11 - schimbarea luminozității unui LED folosind un fotorezistor
Detalii:
- fotorezistor
- Dioda electro luminiscenta
- Rezistor de 220 Ohm și 10 kOhm
- fire, breadboard și arduino


A ieșit așa:


Rezultat:
Lecția #12 - voltmetru
Detalii:
- baterie
- Rezistor de 10 kOhm
- fire, breadboard și arduino
A ieșit așa:




Lecția #13 - măsurarea temperaturii
Detalii:
- senzor de temperatura
- fire, breadboard și arduino
A ieșit așa:


Rezultatul este afișat în „monitorul protra”:


Dacă încălziți senzorul cu o brichetă, temperatura se schimbă:

Lecția nr. 13.1 - schimbarea temperaturii - afișaj vizual
Detalii:
- senzor de temperatura
- 3 LED-uri
- Rezistor de 220 Ohm
- fire, breadboard și arduino
A ieșit așa:


Rezultat:
Lecția #14 - conectarea unui afișaj digital LED
Detalii:
- 6 rezistente 220 Ohm
- afisaj digital LED
- fire, breadboard și arduino
A ieșit așa:


Rezultatul schiței chinezești:

Rezultatul schiței mele modificate:

Lecția nr. 14 - conectarea unui afișaj digital LED cu 4 cifre
Detalii:
- Panou LED cu 4 cifre
- fire, breadboard și arduino
A ieșit așa:


Rezultatul este un cronometru:
Lecția nr. 15 - conectarea unei matrice LED 8x8
Detalii:
- matrice LED 8x8
- fire si arduino
A ieșit așa:




Rezultatul schiței mele:
Lecția nr. 16 - conectarea unui senzor de umiditate
Detalii:
- senzor de umiditate
- LED (am conectat modulul RGB la 1 LED)
- fire si arduino
A ieșit așa:


Rezultat:
Lecția #17 - măsurarea temperaturii și umidității
Detalii:
- senzor de umiditate si temperatura
- fire si arduino
A ieșit așa:


Rezultatul este afișat în „monitorul protra”:
Lecția nr. 18 - conectarea modulului releu
Detalii:
- modul releu
- Dioda electro luminiscenta
- Rezistor de 220 Ohm
- fire, breadboard și arduino
A ieșit așa:


Rezultat:
Lecția #19 - Conexiune LCD display 16x2
Detalii:
- display LCD1602
- fire si arduino
A ieșit așa:


Rezultat:

Lecția #20 - conectarea motorului
Detalii:
- modul driver pentru motor
- motor cu cutie de viteze
- fire si arduino
A ieșit așa:


Rezultat:
Lecția nr. 21 - Pornirea/oprirea LED-urilor cu ajutorul telecomenzii
Detalii:
- Telecomanda IR
- receptor IR
- 6 LED-uri
- 6 rezistențe 220 Ohm
- fire, breadboard și arduino


A ieșit așa:


Rezultat:
Lecția #22 - Conectarea unui joystick
Detalii:
- joystick
- fire si arduino
Rezultatul este afișat în „monitorul protra”:
Lecția #23 - Conectarea unei tastaturi 4x4
Detalii:
- tastatură
- fire si arduino
Rezultatul este afișat în „monitorul protra”:
Lecția #24 - Conexiune RFID
Detalii:
- Modul RFID
- fire si arduino
A ieșit așa:


Rezultatul este afișat în „monitorul protra” - citind descărcarea cardului:


Rezultatul este afișat în „monitorul protra” - citind cheia:


Rezultatul este afișat în „monitorul protra” - am încercat să citesc UEC, un card bancar cu payWave și un card de transport:

Am primit doar 24 de lecții; nu am acoperit restul în recenzie, deși le-am colectat și verificat eu însumi mi s-a părut că nu sunt interesante de revizuit.

Pentru a consolida rezultatul, am decis să colectez termometru digitalși scriu un program, deși la început am vrut să asamblam un contor de umiditate și temperatură, dar din cauza unei conexiuni incorecte am „omorât” acest modul, așa că a trebuit să fac doar o măsurătoare de temperatură.

Tema pentru acasă - termometru digital
Detalii:
- senzor de temperatura
- Ecran LCD
- fire, breadboard și arduino
A ieșit așa:


Cel mai dificil lucru rămas este să combinați 2 schițe și pentru a face totul să funcționeze, obținem această schiță:

Termometru digital

#include #include LiquidCrystal_I2C lcd(0x27,16,2); int potPin = 0; // pin unde este conectat senzorul float dat = 0; // variabilă pentru temperatura void setup() ( lcd.init(); lcd.backlight(); lcd.begin(16, 2); lcd.print("S"); delay(300); lcd.print(" p"); delay(300); lcd.print("e"); delay(300); lcd.print("c"); delay(300); lcd.print("i"); delay(300) ; lcd.print("a"); lcd.print("l"); 0.5 secunde lcd.print("f"); // așteptați 1 secundă lcd.print("o"); print("t" ; delay(300); lcd.print("p"); ; lcd.print("y"); lcd.print("k"); ; lcd.print("u"); //șterge întârzierea ecranului (1000); lcd.setCursor(0, 0); lcd.print("Special pentru"); lcd.setCursor(0, 1); lcd..clear(); //șterge întârzierea ecranului (300); lcd.setCursor(0, 0); lcd.print("Special pentru"); lcd.setCursor(0, 1); lcd..clear(); //șterge întârzierea ecranului (300); lcd.setCursor(0, 0); lcd.print("Special pentru"); lcd.setCursor(0, 1); lcd..clear(); ) void loop() ( lcd.init(); // inițializează lcd lcd.clear(); // șterge ecranul // citește și calculează temperatura dat = (5.0 * analogRead(potPin) * 100.0) / 1024.0; lcd.setCursor(0, 0) (începe de la 0) lcd.print(" "); print(dat); // afișează temperatura curentă lcd.print(""C"); delay(5*500); // întârziere înainte de repetarea măsurătorilor)


Ușor aruncat cu privirea
Rezultat:

Acum trebuie să verificăm eroarea:


După cum puteți vedea, eroarea este foarte mică, deși este posibil ca stația meteo și designul meu ambele termometre să mintă.

De ce am început toate astea?
Vreau să automatizez fabricarea berii, în timp ce acesta este încă un proiect îndepărtat.

+

Sunt multe dintre ele, cu ajutorul arduino puteți crea multe proiecte pentru aproape orice scop.
Există o mulțime de instrucțiuni pe internet.
Prin utilizarea acest set puteți învăța cu ușurință arduino - instrucțiuni pentru a vă ajuta.

-

Pretul mi se pare prea mare
ÎN Instrucțiuni chineze există o mulțime de erori, de exemplu, o lecție dintr-un proiect, o schiță dintr-unul complet diferit și o diagramă dintr-un al treilea proiect

Concluzie:

Mi-a plăcut Arduino, voi încerca să inventez ceva mai interesant și mai complex și recomand tuturor începătorilor să cumpere Arduino nu ca set, ci ca module separate.

Atât, sper că recenzia mea nu mi s-a părut prea plictisitoare.

Vă mulțumim pentru atenție!

Plănuiesc să cumpăr +307 Adauga la favorite Mi-a placut recenzia +199 +551

În acest articol am decis să colectez un complet ghid pas cu pas Pentru Arduino incepatori. Ne vom uita la ce este Arduino, ce aveți nevoie pentru a începe să învățați, de unde să descărcați și cum să instalați și să configurați mediul de programare, cum funcționează și cum să utilizați limbajul de programare și multe altele care sunt necesare pentru a crea cu drepturi depline. dispozitive complexe bazate pe familia acestor microcontrolere.

Aici voi încerca să dau un minim condensat, astfel încât să înțelegeți principiile lucrului cu Arduino. Pentru o imersiune mai completă în lumea microcontrolerelor programabile, acordați atenție altor secțiuni și articole ale acestui site. Voi lăsa link-uri către alte materiale pe acest site pentru un studiu mai detaliat al unor aspecte.

Ce este Arduino și pentru ce este?

Arduino este un kit de construcție electronică care permite oricui să creeze o varietate de dispozitive electro-mecanice. Arduino este format din software și hardware. Partea software include un mediu de dezvoltare (un program pentru scrierea și depanarea firmware-ului), multe biblioteci gata făcute și convenabile și un limbaj de programare simplificat. Hardware-ul include o linie mare de microcontrolere și module gata făcute pentru ei. Datorită acestui lucru, lucrul cu Arduino este foarte ușor!

Cu ajutorul Arduino puteți învăța programare, inginerie electrică și mecanică. Dar acesta nu este doar un constructor educațional. Pe baza ei, chiar poți face dispozitive utile.
Pornind de la simple lumini intermitente, stații meteo, sisteme de automatizare și terminând cu casă inteligentă, mașini CNC și vehicule aeriene fără pilot. Posibilitățile nu sunt limitate nici măcar de imaginația ta, pentru că există o cantitate mare instructiuni si idei de implementare.

Kit de pornire Arduino

Pentru a începe să învățați Arduino, trebuie să achiziționați placa microcontrolerului în sine și părți suplimentare. Cel mai bine să cumperi trusa de pornire Arduino, dar poți alege singur tot ce ai nevoie. Recomand să alegeți un set pentru că este mai ușor și adesea mai ieftin. Iată link-uri către cele mai bune seturi și piese individuale pe care cu siguranță va trebui să le studiați:

Kit de bază Arduino pentru începători:Cumpără
Set mare pentru antrenament și primele proiecte:Cumpără
Set de senzori și module suplimentari:Cumpără
Arduino Uno este cel mai simplu și mai convenabil model din linie:Cumpără
Placă fără lipire pentru învățare și prototipare ușoară:Cumpără
Set de fire cu conectori comozi:Cumpără
Set LED:Cumpără
Set rezistoare:Cumpără
Butoane:Cumpără
Potențiometre:Cumpără

Mediul de dezvoltare Arduino IDE

Pentru a scrie, depana și descărca firmware, trebuie să descărcați și să instalați IDE-ul Arduino. Este foarte simplu și program convenabil. Pe site-ul meu am descris deja procesul de descărcare, instalare și configurare a mediului de dezvoltare. Deci aici voi lăsa doar link-uri către ultima versiune programe și

Versiune Windows Mac OS X Linux
1.8.2

Limbajul de programare Arduino

Când aveți o placă de microcontroler în mâini și un mediu de dezvoltare instalat pe computer, puteți începe să scrieți primele schițe (firmware). Pentru a face acest lucru, trebuie să vă familiarizați cu limbajul de programare.

Programarea Arduino folosește o versiune simplificată a limbajului C++ cu funcții predefinite. Ca și în alte limbaje de programare asemănătoare C, există o serie de reguli pentru scrierea codului. Iată cele mai de bază:

  • Fiecare instrucțiune trebuie să fie urmată de un punct și virgulă (;)
  • Înainte de a declara o funcție, trebuie să specificați tipul de date returnat de funcție sau nul dacă funcția nu returnează o valoare.
  • De asemenea, este necesar să se indice tipul de date înainte de a declara o variabilă.
  • Comentariile sunt desemnate: // Inline și /* bloc */

Puteți afla mai multe despre tipurile de date, funcții, variabile, operatori și constructe de limbaj pe pagina de la Nu este necesar să memorați și să vă amintiți toate aceste informații. Puteți oricând să mergeți la cartea de referință și să vă uitați la sintaxa unei anumite funcții.

Tot firmware-ul Arduino trebuie să conțină cel puțin 2 funcții. Acestea sunt setup() și loop().

funcția de configurare

Pentru ca totul să funcționeze, trebuie să scriem o schiță. Să facem LED-ul să se aprindă după apăsarea butonului și să ne stingem după următoarea apăsare. Iată prima noastră schiță:

// variabile cu pinii dispozitivelor conectate int switchPin = 8; int ledPin = 11; // variabile pentru a stoca starea butonului și LED-ul boolean lastButton = LOW; curent booleanButton = LOW; boolean ledOn = fals; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // funcție pentru debouncing boolean debounse(boolean last) ( boolean current = digitalRead(switchPin); if (last != current) ( întârziere ( 5); curent = digitalRead (switchPin ) return current ) void loop() ( currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ; (ledPin, ledOn);

// variabile cu pinii dispozitivelor conectate

int switchPin = 8 ;

int ledPin = 11 ;

// variabile pentru a stoca starea butonului și a LED-ului

boolean lastButton = LOW ;

curent booleanButton = LOW ;

boolean ledOn = false ;

void setup() (

pinMode(switchPin, INPUT);

pinMode(ledPin, OUTPUT);

// funcție pentru debouncing

boolean debounse (boolean last ) (

curent boolean = digitalRead(switchPin);

dacă (ultimul != curent ) (

întârziere(5);

curent = digitalRead(switchPin);

curent de retur;

void loop() (

currentButton = debounse(lastButton);

dacă (lastButton == LOW && currentButton == HIGH ) (

ledOn = ! A condus la;

lastButton = curentButton ;

digitalWrite(ledPin, ledOn);

În această schiță, am creat o funcție suplimentară de debounse pentru a suprima respingerea contactului. Există informații despre respingerea contactelor pe site-ul meu. Asigurați-vă că verificați acest material.

PWM Arduino

Modularea lățimii impulsului (PWM) este procesul de control al tensiunii folosind ciclul de lucru al unui semnal. Adică, folosind PWM putem controla fără probleme sarcina. De exemplu, puteți modifica fără probleme luminozitatea unui LED, dar această modificare a luminozității se obține nu prin scăderea tensiunii, ci prin creșterea intervalelor semnalului scăzut. Principiul de funcționare al PWM este prezentat în această diagramă:

Când aplicăm PWM unui LED, acesta începe să se aprindă rapid și să se stingă. Ochiul uman nu este capabil să vadă acest lucru deoarece frecvența este prea mare. Dar când înregistrați videoclipuri, cel mai probabil veți vedea momente în care LED-ul nu este aprins. Acest lucru se va întâmpla cu condiția ca rata de cadre a camerei să nu fie un multiplu al frecvenței PWM.

Arduino are un modulator de lățime a impulsului încorporat. Puteți utiliza PWM numai pe acei pini care sunt acceptați de microcontroler. De exemplu, Arduino Uno și Nano au 6 pini PWM: aceștia sunt pinii D3, D5, D6, D9, D10 și D11. Știfturile pot diferi pe alte plăci. Puteți găsi o descriere a tablei care vă interesează

Pentru a utiliza PWM în Arduino există o funcție. Acesta ia ca argumente numărul pin și valoarea PWM de la 0 la 255. 0 este 0% umple cu un semnal ridicat, iar 255 este 100%. Să scriem o schiță simplă ca exemplu. Să facem ca LED-ul să se aprindă lin, să așteptăm o secundă și să se stingă la fel de ușor și așa mai departe la infinit. Iată un exemplu de utilizare a acestei funcții:

// LED-ul este conectat la pinul 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); delay(5); ) )

// LED-ul conectat la pinul 11

int ledPin = 11 ;

void setup() (

pinMode(ledPin, OUTPUT);

void loop() (

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

analogWrite(ledPin, i);

întârziere(5);

întârziere (1000);

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

" prezintă cursul de formare „Arduino pentru începători”. Seria este reprezentată de 10 lecții, precum și material suplimentar. Lecțiile includ instrucțiuni text, fotografii și videoclipuri de antrenament. În fiecare lecție veți găsi o listă de componente necesare, o listă de programe și o diagramă de conectare. După ce ai studiat aceste 10 lecții de bază, poți începe să faci mai multe modele interesanteși asamblarea roboților bazați pe Arduino. Cursul este destinat începătorilor; nu aveți nevoie de cunoștințe pentru a începe. Informații suplimentare din inginerie electrică sau robotică.

Scurte informații despre Arduino

Ce este Arduino?

Arduino (Arduino) este o platformă hardware de calcul, ale cărei componente principale sunt o placă de intrare-ieșire și un mediu de dezvoltare. Arduino poate fi folosit pentru a crea obiecte interactive de sine stătătoare sau pentru a se conecta la software care rulează pe un computer. Arduino este un computer cu o singură placă.

Cum sunt conectați Arduino și roboții?

Răspunsul este foarte simplu - Arduino este adesea folosit ca creierul robotului.

Avantajul plăcilor Arduino față de platforme similare este relativ preț scăzutși distribuție aproape în masă printre amatorii și profesioniștii roboticii și ingineriei electrice. Odată ce ați început să utilizați Arduino, veți găsi asistență în orice limbă și oameni care vă vor răspunde la întrebări și vor discuta despre evoluțiile dvs.

Lecția 1. LED intermitent pe Arduino

În prima lecție veți învăța cum să conectați un LED la un Arduino și să îl controlați să clipească. Acesta este cel mai simplu și de bază model.

Dioda electro luminiscenta- un dispozitiv semiconductor care produce radiații optice atunci când este trecut prin el curent electricîn direcția înainte.

Lecția 2. Conectarea unui buton pe Arduino

În acest tutorial veți învăța cum să conectați un buton și un LED la un Arduino.

Când butonul este apăsat, LED-ul se va aprinde, în timp ce când butonul este apăsat, nu se va aprinde. Acesta este și modelul de bază.

Lecția 3. Conectarea unui potențiometru la Arduino

În acest tutorial veți învăța cum să conectați un potențiometru la Arduino.

Potențiometru- Acest rezistență cu rezistență reglabilă.Potențiometrele sunt folosite ca regulatoare diverși parametri– volumul sunetului, puterea, tensiunea etc.Aceasta este, de asemenea, una dintre schemele de bază. În modelul nostru de la rotirea butonului potențiometruluiLuminozitatea LED-ului va depinde.

Lecția 4. Controlul servo pe Arduino

În acest tutorial veți învăța cum să conectați un servo la un Arduino.

Servoeste un motor a cărui poziție a arborelui poate fi controlată prin setarea unghiului de rotație.

Servo-urile sunt folosite pentru a simula diverse mișcări mecanice ale roboților.

Lecția 5. LED-uri în trei culori pe Arduino

În acest tutorial veți învăța cum să conectați un LED tricolor la un Arduino.

LED tricolor(led rgb) - acestea sunt trei LED-uri de culori diferite într-o singură carcasă. Ele vin în mici placă de circuit imprimat, pe care sunt amplasate rezistențe și fără rezistențe încorporate. Lecția acoperă ambele opțiuni.

Lecția 6. Element piezoelectric pe Arduino

În această lecție veți învăța cum să conectați un element piezo la un Arduino.

Element piezo- un convertor electromecanic care se traduce tensiune electrică în vibrația membranei. Aceste vibrații creează sunet.

În modelul nostru, frecvența sunetului poate fi reglată prin setarea parametrilor corespunzători în program.

Lecția 7. Fotorezistor pe Arduino

În această lecție a cursului nostru veți învăța cum să conectați un fotorezistor la Arduino.

Fotorezistor- un rezistor a cărui rezistență depinde de luminozitatea luminii care cade pe el.

În modelul nostru, LED-ul se aprinde numai dacă luminozitatea luminii de deasupra fotorezistorului este mai mică decât o anumită luminozitate poate fi reglată în program;

Lecția 8. Senzor de mișcare (PIR) pe Arduino. Trimiterea automată de e-mail

În această lecție a cursului nostru, veți învăța cum să conectați un senzor de mișcare (PIR) la Arduino, precum și cum să organizați trimitere automată e-mail.

Senzor de mișcare (PIR)- senzor infrarosu pentru a detecta miscarea sau prezenta oamenilor sau animalelor.

În modelul nostru, atunci când primește un semnal despre mișcarea omului de la un senzor PIR, Arduino trimite o comandă către computer pentru a trimite un e-mail și scrisoarea este trimisă automat.

Lecția 9. Conectarea unui senzor de temperatură și umiditate DHT11 sau DHT22

În această lecție a noastră, veți învăța cum să conectați un senzor de temperatură și umiditate DHT11 sau DHT22 la un Arduino și, de asemenea, vă veți familiariza cu diferențele dintre caracteristicile acestora.

Senzor de temperatura si umiditate este un senzor digital compozit format dintr-un senzor capacitiv de umiditate și un termistor pentru măsurarea temperaturii.

În modelul nostru, Arduino citește citirile senzorului și afișează citirile pe ecranul computerului.

Lecția 10. Conectarea unei tastaturi matrice

În această lecție a cursului nostru veți învăța cum să conectați o tastatură matrice la Placa Arduino, și, de asemenea, familiarizați-vă cu diverse scheme interesante.

Tastatura Matrix conceput pentru a simplifica conexiunea un numar mare butoane Astfel de dispozitive se găsesc peste tot - în tastaturile computerelor, calculatoare și așa mai departe.

Lecția 11. Conectarea modulului de ceas în timp real DS3231

În ultima lecție a cursului nostru, veți învăța cum să conectați un modul de ceas în timp real din familie
DS la placa Arduino și, de asemenea, familiarizați-vă cu diverse circuite interesante.

Modul de ceas în timp real- Acest circuit electronic, conceput pentru înregistrarea datelor cronometrice ( ora curentă, data, ziua săptămânii etc.), este un sistem de sursă autonomă sursa de alimentare si dispozitiv de contorizare.

Aplicație. Cadre gata făcute și roboți Arduino


Puteți începe să învățați Arduino nu numai de pe placa în sine, ci și prin achiziționarea unui robot gata făcut, cu drepturi depline, bazat pe această placă - un robot păianjen, o mașină robot, un robot țestoasă etc. Astfel de cale potrivit pentru cei care circuite electrice nu deosebit de atractiv.

Prin achiziționarea unui model de robot funcțional, de ex. de fapt, o jucărie high-tech gata făcută poate trezi interesul pentru design independent și robotică. Deschiderea platformei Arduino permite de la aceeași componente fă-ți jucării noi.

O altă opțiune este să achiziționați un cadru sau un corp de robot: o platformă pe roți sau o pistă, un umanoid, un păianjen etc. În acest caz, va trebui să faceți singur umplutura robotului.

Aplicație. Directorul mobil


– un asistent pentru dezvoltatorii de algoritmi pentru platforma Arduino, al cărui scop este acela de a oferi utilizatorului final posibilitatea de a avea un set mobil de comenzi (carte de referință).

Aplicația constă din 3 secțiuni principale:

  • Operatori;
  • Date;
  • Funcții.

De unde să cumpărați Arduino


truse Arduino

Cursul va fi actualizat cu lecții suplimentare. Urmați-ne

Acest simulator funcționează cel mai bine pe browserul Chrome
Să aruncăm o privire mai atentă la Arduino.

Arduino nu este calculator mare, la care se pot conecta circuite externe. Arduino Uno folosește Atmega 328P
Acesta este cel mai mare cip de pe placă. Acest cip execută programe care sunt stocate în memoria sa. Puteți descărca programul prin usb de pe folosind Arduino IDE. port USB oferă, de asemenea, energie pentru arduino.

Există un conector de alimentare separat. Placa are doi pini etichetați 5v și 3.3v, care sunt necesari pentru alimentare diverse dispozitive. Veți găsi, de asemenea, pini marcați GND, aceștia sunt pinii de masă (pământul este 0V). Platforma Arduino are, de asemenea, 14 pini digitali, etichetați de la 0 la 13, care se conectează la noduri externe și au două stări, ridicată sau scăzută (pornit sau oprit). Aceste contacte pot funcționa ca ieșiri sau ca intrări, de ex. pot fie să transmită unele date și să controleze dispozitivele externe, fie să primească date de la dispozitive. Următorii pini de pe placă sunt etichetați A0-A5. Acestea sunt intrări analogice care pot accepta date de la diverși senzori. Acest lucru este convenabil mai ales atunci când trebuie să măsurați un anumit interval, cum ar fi temperatura. Intrările analogice au funcții suplimentare, care poate fi folosit separat.

Cum se utilizează panou.

Placa este necesară pentru a conecta temporar piesele, pentru a verifica cum funcționează dispozitivul, înainte de a lipi totul împreună.
Toate exemplele de mai jos sunt asamblate pe o placă, astfel încât să puteți face rapid modificări la circuit și să reutilizați piesele fără să vă deranjați cu lipirea.

Placa are șiruri de găuri în care puteți introduce piese și fire. Unele dintre aceste găuri sunt conectate electric între ele.

Cele două rânduri de sus și de jos sunt conectate în rânduri de-a lungul întregii plăci. Aceste rânduri sunt folosite pentru a furniza energie circuitului. Ar putea fi de 5V sau 3,3V, dar în orice caz, primul lucru pe care trebuie să-l faceți este să conectați 5V și GND la placa, așa cum se arată în imagine. Uneori, aceste conexiuni de rând pot fi rupte în mijlocul plăcii, apoi, dacă este necesar, le puteți conecta așa cum se arată în imagine.








Găurile rămase, situate în mijlocul plăcii, sunt grupate în grupuri de cinci găuri. Sunt folosite pentru a conecta părțile circuitului.


Primul lucru pe care îl vom conecta la microcontrolerul nostru este un LED. Sistem legăturile electrice prezentată în imagine.

De ce este nevoie de o rezistență într-un circuit? În acest caz, limitează curentul care trece prin LED. Fiecare LED este proiectat pentru un anumit curent, iar dacă acest curent este mai mare, LED-ul se va defecta. Puteți afla ce valoare ar trebui să aibă rezistorul folosind legea lui Ohm. Pentru cei care nu știu sau au uitat, legea lui Ohm spune că există dependență liniară curent de la tensiune. Adică, cu cât aplicăm mai multă tensiune rezistorului, cu atât mai mult curent va curge prin el.
V=I*R
Unde V- tensiunea pe rezistor
eu- curent prin rezistor
R- rezistenta care trebuie gasita.
În primul rând, trebuie să aflăm tensiunea pe rezistor. Majoritatea LED-urilor de 3 mm sau 5 mm pe care le veți folosi au tensiune de operare 3c. Aceasta înseamnă că trebuie să stingem 5-3 = 2V la rezistor.

Vom calcula apoi curentul care trece prin rezistor.
Majoritatea LED-urilor de 3 mm și 5 mm luminează la luminozitate maximă la 20 mA. Un curent mai mare decât acesta le poate dezactiva, în timp ce un curent de intensitate mai mică le va reduce luminozitatea fără a provoca niciun rău.

Deci, vrem să conectăm LED-ul la circuitul de 5V, astfel încât să poată transporta un curent de 20mA. Deoarece toate piesele sunt incluse într-un singur circuit, rezistența va avea și un curent de 20mA.
Primim
2V = 20 mA * R
2V = 0,02A * R
R = 100 Ohm

100 Ohmi este rezistența minimă, este mai bine să folosiți puțin mai mult, deoarece LED-urile au anumite variații în caracteristici.
În acest exemplu, este folosit un rezistor de 220 ohmi. Doar pentru că autorul are o mulțime de ele: cu ochiul: .

Introduceți LED-ul în găurile din mijlocul plăcii, astfel încât cablul său lung să fie conectat la unul dintre cablurile rezistenței. Conectați al doilea capăt al rezistenței la 5V și conectați cel de-al doilea cablu al LED-ului la GND. LED-ul ar trebui să se aprindă.

Vă rugăm să rețineți că există o diferență în modul în care conectați LED-ul. Curentul curge de la terminalul mai lung spre cel mai scurt. În diagramă vă puteți imagina că curentul curge în direcția în care este îndreptat triunghiul. Încercați să întoarceți LED-ul cu susul în jos și veți vedea că nu se va aprinde.

Dar modul în care conectați rezistorul nu face nicio diferență. Îl puteți întoarce sau încercați să îl conectați la un alt pin al LED-ului, acest lucru nu va afecta funcționarea circuitului. Acesta va limita în continuare curentul prin LED.

Anatomia schiței Arduino.

Programele pentru Arduino se numesc sketch. Ele constau din două funcții principale. Funcţie înființatși funcția buclă
În această funcție veți seta toate setările de bază. Ce pini vor funcționa ca intrare sau ieșire, ce biblioteci să se conecteze, inițializează variabilele. Funcţie Înființat() rulează o singură dată în timpul schiței, când începe execuția programului.
aceasta este funcția principală care se execută după înființat(). De fapt, este programul în sine. Această funcție va funcționa pe termen nelimitat până când opriți alimentarea.

LED intermitent Arduino



În acest exemplu vom conecta circuitul LED la unul dintre cele digitale Pini Arduinoși îl vom porni și opri folosind programul și veți învăța, de asemenea, câteva funcții utile.

Această funcție este utilizată în înființat() parte a programului și servește la inițializarea pinii pe care îi veți folosi ca intrare (INTRARE) sau ieșire (IESIREA). Nu veți putea să citiți sau să scrieți date din pin până când nu îl setați respectiv pinMode. Această funcție are două argumente: Numarul pin este numărul PIN pe care îl veți folosi.

Modul-setează cum va funcționa pinul. La intrare (INTRARE) sau ieșire (IESIREA). Pentru a aprinde LED-ul trebuie să dăm un semnal DIN Arduino. Pentru a face acest lucru, configurăm pinul de ieșire.
- această funcție este folosită pentru a seta starea (stat) pina (Numarul pin). Există două stări principale (de fapt 3 dintre ele), una este ÎNALT, vor fi 5V pe pin, asta e altceva Scăzut iar pinul va fi 0v. Aceasta înseamnă că, pentru a aprinde LED-ul, trebuie să setăm pinul conectat la LED nivel inalt ÎNALT.

Întârziere. Servește pentru a întârzia funcționarea programului pentru o perioadă specificată în msec.
Mai jos este codul care face ca LED-ul să clipească.
//LED Blink int ledPin = 7;//Pinul Arduino la care este conectat LED-ul void setup() ( pinMode(ledPin, OUTPUT);// setarea pinului ca OUTPUT) void loop() ( digitalWrite(ledPin, HIGH) ;// porniți întârzierea LED-ului (1000);// întârziere 1000 ms (1 sec) digitalWrite (ledPin, LOW);//Opriți întârzierea LED-ului (1000);// așteptați 1 secundă)

Mici explicații despre cod.
Liniile care încep cu „//” sunt comentarii și sunt ignorate de Arduino.
Toate comenzile se termină cu punct și virgulă dacă le uitați, veți primi un mesaj de eroare.

ledPin este o variabilă. Variabilele sunt folosite în programe pentru a stoca valori. În acest exemplu, variabila ledPin valoarea este atribuită la 7, acesta este numărul de pin Arduino. Când programul Arduino întâlnește o linie cu o variabilă ledPin, va folosi valoarea specificată mai devreme.
Deci inregistreaza pinMode(ledPin, OUTPUT) similar cu înregistrarea pinMode(7, IEȘIRE).
Dar în primul caz, trebuie doar să schimbați variabila și aceasta se va schimba în fiecare linie în care este folosită, iar în al doilea caz, pentru a schimba variabila, va trebui să faceți modificări manual în fiecare comandă.

Prima linie indică tipul variabilei. La Programare Arduino Este important să declarați întotdeauna tipul de variabile. Deocamdată este suficient să știi asta INT anunta numere negative si pozitive.
Mai jos este o simulare a schiței. Faceți clic pe Start pentru a vedea circuitul în acțiune.

După cum era de așteptat, LED-ul se stinge și se aprinde din nou după o secundă. Încercați să modificați întârzierea pentru a vedea cum funcționează.

Controlul mai multor LED-uri.

În acest exemplu, veți învăța cum să controlați mai multe LED-uri. Pentru a face acest lucru, instalați încă 3 LED-uri pe placă și conectați-le la rezistențe și pinii Arduino, așa cum se arată mai jos.

Pentru a porni și stinge LED-urile unul câte unul, trebuie să scrieți un program similar cu acesta:
//Multi LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() ( //setează pinii ca OUTPUT pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) void loop() ( digitalWrite(led1Pin, HIGH) );//porniți întârzierea LED-ului(1000);//întârziere 1 sec digitalWrite(led1Pin, LOW);//opriți întârzierea LED-ului (1000);//întârziere 1 sec //faceți același lucru pentru celelalte 3 LED-uri digitalWrite(led2Pin, HIGH);//aprinde LED-ul întârziere(1000);//întârziere 1 sec digitalWrite(led2Pin, LOW);//stinge LED-ul întârziere (1000);//întârziere 1 sec digitalWrite(led3Pin, HIGH); );//aprinde LED-ul întârziere (1000);// întârziere 1 sec digitalWrite (led3Pin, LOW);//stinge LED-ul întârziere (1000);//întârziere 1 sec digitalWrite (led4Pin, HIGH);//pornire întârzierea LED-ului (1000);// întârziere 1 sec digitalWrite (led4Pin, LOW);//stinge întârzierea LED-ului (1000);//întârziere 1 secundă)

Acest program va funcționa excelent, dar nu este soluția cea mai rațională. Codul trebuie schimbat. Pentru ca programul să funcționeze din nou și din nou, vom folosi o construcție numită .
Buclele sunt utile atunci când trebuie să repetați aceeași acțiune de mai multe ori. În codul de mai sus repetăm ​​rândurile

DigitalWrite(led4Pin, HIGH); întârziere (1000); digitalWrite(led4Pin, LOW); întârziere (1000);
codul de schiță complet în atașament (descărcări: 1187)

Reglarea luminozității LED-ului

Uneori va trebui să modificați luminozitatea LED-urilor din program. Acest lucru se poate face folosind comanda analogWrite() . Această comandă aprinde și stinge LED-ul atât de repede încât ochiul nu poate vedea pâlpâirea. Dacă LED-ul este aprins jumătate din timp și stins jumătate din timp, va apărea vizual că strălucește la jumătate din luminozitate. Se numeste modularea lățimii impulsului(PWM sau PWM în engleză). Calea este folosită destul de des, deoarece poate fi folosită pentru a controla o componentă „analogică”. cod digital. Nu toți pinii Arduino sunt potriviți pentru aceste scopuri. Doar acele concluzii în apropierea cărora se trage o astfel de desemnare " ~ ". Îl vei vedea lângă pinii 3,5,6,9,10,11.
Conectați unul dintre LED-urile dvs. la unul dintre pinii PWM (pentru autor acesta este pinul 9). Acum rulați schița intermitentă a LED-ului, dar mai întâi schimbați comanda digitalWrite() pe analogWrite(). analogWrite() are două argumente: primul este numărul de pin, iar al doilea este valoarea PWM (0-255), în raport cu LED-urile aceasta va fi luminozitatea acestora, iar pentru motoarele electrice viteza de rotație. Mai jos este un exemplu de cod pentru diferite luminozități LED.
//Schimbați luminozitatea LED-ului int ledPin = 9;//un LED este conectat la acest pin void setup() ( pinMode(ledPin, OUTPUT);// inițializarea pinului la ieșire ) void loop() ( analogWrite( ledPin, 255);// luminozitate completă (255/255 = 1) întârziere (1000);//pauză 1 sec digitalWrite (ledPin, LOW);//stinge LED întârziere (1000);//pauză 1 sec analog Write ( ledPin, 191);//luminozitate cu 3/4 (191/255 ~= 0,75) întârziere (1000);//pauză 1 secundă digitalWrite (ledPin, LOW);//oprire întârziere LED (1000);// pauză 1 sec analogWrite(ledPin, 127); //întârziere de jumătate de luminozitate (127/255 ~= 0,5) (1000);//pauză 1 secundă digitalWrite (ledPin, LOW);//întârziere LED-ul de oprire (1000);/ /pauză 1 sec analogWrite(ledPin, 63); //sferturi de luminozitate (63/255 ~= 0,25) delay(1000);//pauză 1 sec digitalWrite(ledPin, LOW);//stinge LED-ul delay(1000) ;//pauză 1 secundă)

Încercați să modificați valoarea PWM din comandă analogWrite() pentru a vedea cum afectează acest lucru luminozitatea.
În continuare, veți învăța cum să reglați ușor luminozitatea de la maxim la zero. Desigur, puteți copia o bucată de cod de 255 de ori
analogWrite(ledPin, luminozitate); delay(5);//scurt delay luminozitate = luminozitate + 1;
Dar, înțelegi, acest lucru nu va fi practic. Cel mai bun mod de a face acest lucru este utilizarea bucla FOR care a fost folosit anterior.
Următorul exemplu utilizează două bucle, una pentru a reduce luminozitatea de la 255 la 0
pentru (luminozitate int=0;luminozitate=0;luminozitate--)( analogWrite(ledPin,luminozitate); delay(5); )
întârziere (5) folosit pentru a încetini viteza de atenuare a luminozității 5*256=1280ms=1.28s)
Prima linie folosește „ luminozitate-" pentru a face ca valoarea luminozității să scadă cu 1 de fiecare dată când bucla este repetată. Rețineți că bucla va rula până când luminozitate >=0.Înlocuirea semnului > pe semn >= am inclus 0 în intervalul de luminozitate. Această schiță este modelată mai jos. //schimbați ușor luminozitatea int ledPin = 9;//un LED este conectat la acest pin void setup() ( pinMode(ledPin, OUTPUT);// inițializarea pinului de ieșire) void loop() ( //creșteți ușor luminozitate (de la 0 la 255) pentru (luminozitate int=0;luminozitate=0;luminozitate--)( analogWrite(ledPin,luminozitate); delay(5); ) delay(1000);//așteptați 1 secundă //reduceți ușor luminozitatea (255 la 0) pentru (luminozitate int=255; luminozitate>=0; luminozitate--)( analogWrite(ledPin,luminozitate); delay(5); ) delay(1000);//așteptați 1 secundă) )
Nu este foarte vizibil, dar ideea este clară.

LED RGB și Arduino

Un LED RGB este de fapt trei LED-uri de culori diferite într-un singur pachet.

Inclusiv LED-uri diferite Cu o luminozitate diferită, puteți combina și obține culori diferite. Pentru Arduino, unde numărul de niveluri de luminozitate este 256, veți obține 256^3=16581375 culori posibile. În realitate, desigur, vor fi mai puțini.
LED-ul pe care îl vom folosi este catodul comun. Acestea. toate cele trei LED-uri sunt conectate structural prin catozi la un terminal. Vom conecta acest pin la pinul GND. Pinii rămași, prin rezistențe de limitare, trebuie conectați la pinii PWM. Autorul a folosit pinii 9-11. În acest fel, va fi posibil să controlați fiecare LED separat. Prima schiță arată cum să porniți fiecare LED individual.



//LED RGB - test //pin conexiuni int red = 9; int verde = 10; int albastru = 11; void setup())( pinMode(rosu, OUTPUT); pinMode(albastru, OUTPUT); pinMode(verde, OUTPUT); ) void loop())( //porneste/opri LED-ul rosu digitalWrite(rosu, HIGH); delay(500); HIGH); digitalWrite (albastru, LOW);

Următorul exemplu utilizează comenzile analogWrite()și pentru a obține diferite valori aleatorii de luminozitate pentru LED-uri. Veți vedea diferite culori schimbându-se aleatoriu.
//LED RGB - culori aleatorii //conexiuni pin int red = 9; int verde = 10; int albastru = 11; void setup())( pinMode(red, OUTPUT); pinMode(albastru, OUTPUT); pinMode(verde, OUTPUT); ) void loop())( //alege o culoare aleatorie analogWrite(rosu, random(256)); analogWrite( albastru, random(256)); analogWrite(verde, random(256));

Aleatoriu(256)- returnează un număr aleatoriu în intervalul de la 0 la 255.
În fișierul atașat este o schiță care va demonstra tranzițiile netede ale culorilor de la roșu la verde, apoi la albastru, roșu, verde etc. (descărcări: 326)
Exemplul de schiță funcționează, dar există o mulțime de coduri duplicate. Puteți simplifica codul scriind propria funcție de ajutor care se va schimba ușor de la o culoare la alta.
Iată cum va arăta: (descărcări: 365)
Să ne uităm la definirea funcției bucată cu bucată. Funcția este numită faderși are două argumente. Fiecare argument este separat prin virgulă și are un tip declarat pe prima linie a definiției funcției: void fader (int color1, int color2). Vedeți că ambele argumente sunt declarate ca intși li se dau nume culoare1Și culoare2 ca variabile de condiție pentru a defini o funcție. Vidulînseamnă că funcția nu returnează nicio valoare, pur și simplu execută comenzi. Dacă ar trebui să scrieți o funcție care a returnat rezultatul înmulțirii, ar arăta astfel:
int multiplicator(int număr1, int număr2)( int produs = număr1*număr2; returnează produsul; )
Observați cum am declarat Type intîn schimb ca tip de returnare
vid.
În interiorul funcției există comenzi pe care le-ați folosit deja în schița anterioară, doar numerele de pin au fost înlocuite cu culoare1Și culoare2. Funcția este numită fader, argumentele sale sunt calculate ca culoare1 = roșuȘi culoare2 = verde. Arhiva conține o schiță completă folosind funcții (descărcări: 272)

Buton

Următoarea schiță va folosi un buton cu contacte normal deschise, fără blocare.


Aceasta înseamnă că, în timp ce butonul nu este apăsat, nu trece curent prin el, iar după ce a fost eliberat, butonul revine la poziția inițială.
Pe lângă buton, circuitul folosește un rezistor. În acest caz, nu limitează curentul, ci „trage” butonul la 0V (GND). Acestea. până când butonul este apăsat pe pinul Arduino la care este conectat, se va întâmpla nivel scăzut. Rezistorul folosit în circuit este de 10 kOhm.


//determină când butonul este apăsat int buttonPin = 7; void setup())( pinMode(buttonPin, INPUT);//inițializați pinul la intrarea Serial.begin(9600);//inițializați port serial) void loop())( if (digitalRead(buttonPin)==HIGH)(//dacă butonul este apăsat Serial.println(„apăsat”); // imprimă „apăsat” ) else ( Serial.println(„neapăsat” ); // altfel "nepresat" ) )
Există mai multe comenzi noi în această schiță.
-Această comandă preia valorile High și Low ale ieșirii pe care o testăm. Această ieșire trebuie mai întâi configurată ca intrare în setup().
; //unde butonulPin este numărul PIN la care este conectat butonul.
Portul serial permite Arduino să trimită mesaje către computer în timp ce controlerul însuși execută programul. Acest lucru este util pentru depanarea unui program, trimiterea de mesaje către alte dispozitive sau aplicații. Pentru a activa transferul de date printr-un port serial (numit și UART sau USART), trebuie să-l inițializați în setup()

Serial.begin() are un singur argument - aceasta este viteza de transfer de date între Arduino și computer.
Schița folosește o comandă pentru a afișa un mesaj pe ecran în Arduino IDE (Tools >> Serial Monitor).
- designul vă permite să controlați progresul execuției programului prin combinarea mai multor verificări într-un singur loc.
Dacă digitalRead revine HIGH, atunci cuvântul „apăsat” este afișat pe monitor. În caz contrar, cuvântul „eliberat” este afișat pe monitor. Acum puteți încerca să porniți și să opriți LED-ul apăsând un buton.
//detecție apăsare buton cu ieșire LED int buttonPin = 7; int ledPin = 8; void setup())( pinMode(buttonPin, INPUT);//De data aceasta vom seta pinul butonului ca INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin) )= =HIGH)( digitalWrite(ledPin,HIGH); Serial.println(„apăsat”); ) else ( digitalWrite(ledPin,LOW); Serial.println(„ne apăsat”); ) )

Intrare analogică.

analogRead vă permite să citiți date de la unul dintre pinii analogici Arduino și afișează o valoare în intervalul de la 0 (0V) la 1023 (5V). Dacă tensiunea la intrarea analogică este de 2,5 V, atunci va fi imprimat 2,5 / 5 * 1023 = 512
analogRead are un singur argument - Acesta este numărul intrării analogice (A0-A5). Următoarea schiță arată codul pentru citirea tensiunii de la potențiometru. Pentru a face acest lucru, conectați un rezistor variabil, bornele exterioare la pinii de 5V și GND și terminalul din mijloc la intrarea A0.

Rulați următorul cod și vedeți în monitorul serial cum se schimbă valorile în funcție de rotația butonului rezistenței.
//intrare analogică int potPin = A0;//pinul central al potențiometrului este conectat la acest pin void setup())( //pinul analogic este inclus ca intrare implicit, deci nu este necesară inițializarea Serial.begin(9600) ) void loop())( int potVal = analogRead(potPin);//potVal este un număr între 0 și 1023 Serial.println(potVal)
Următoarea schiță combină schița de clic pe buton și schița de control al luminozității LED. LED-ul se va aprinde de la buton, iar luminozitatea va fi controlată de un potențiometru.
//detecție apăsare buton cu ieșire LED și intensitate variabilă int buttonPin = 7; int ledPin = 9; int potPin = A0; void setup())( pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin)==HIGH)(//dacă butonul este apăsat int analogVal = analogRead(potPin); int scaledVal = map(analogVal, 0, 1023, 0, 255); analogWrite(ledPin, scaledVal);//porniți led-ul cu intensitatea setată de pot Serial.println("pressed"); ( digitalWrite(ledPin, LOW);//oprire dacă butonul nu este apăsat Serial.println("ne apăsat"); ) )