Documente Academic
Documente Profesional
Documente Cultură
Sketch-ul
Craiova
2019
Instructiuni utilizate:
- If, If...else
- For
- While, do.. while
- Pin mode
- Digital read
- Analog read
- Digital write
- Analog write
- Comenzi relative de timp (delay, milis)
- Comenzi pentru transmisia seriala
Instructiunea ”If”
if()" (daca) este cea mai simpla instructiune conditionala. Forma generala a
acestei instructiuni este urmatoarea :
if (conditie) {
// Codul care va fi executat daca este Adevarata conditia
}
Instructiunea ”For”
var i:int
for (i=nr_start; i<nr_end; i++) {
cod care va fi executat
}
Efect:
Observatii:
In esenta, cat timp valoarea expresiei logice este adevarata, se executa
instructiunea;
Efect:
Observatii:
Exemplu:
Sesizati ca orice numar are o ultima cifra, movtiv pentru care intai
prelucrez si tai,si apoi verifica daca mai sunt cifre de prelucrat.
Scheletul algoritmului ar fi :
cin>>n;
..............;
n=n/10;
} while (n!=0);
Descriere:
Sintaxa
pinMode(pin, mode)
Parametrii
pin: numarul de pini al caror mod doresti sa il setezi
moduri: INPUT, OUTPUT, sau INPUT_PULLUP.
Examplu
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
[Get Code]
Nota
Pinii de intrare analogici pot fi folosiți ca pini digitali, numiți A0, A1 etc.
Descriere
Citește valoarea dintr-un pin digital specificat, HIGH sau LOW.
Sintaxa
digitalRead(pin)
Parametrii
pin: numărul pinului Arduino pe care doriți să îl citiți
Examplu
void setup() {
pinMode(ledPin, OUTPUT); // stabilește pinul digital 13 ca ieșire
void loop() {
val = digitalRead(inPin); // citeste pinul de intrare
digitalWrite(ledPin, val); // setează LED-ul la valoarea butonului
Observatii:
Sintaxa
analogRead(pin)
Parametrii
pin: numele pinului de intrare analog de citit de la (A0 la A5 pe majoritatea
plăcilor, A0 la A6 pe placi MKR, A0 la A7 pe Mini și Nano, A0 în A15 pe
Mega).
Examplu de Cod
void setup() {
Serial.begin(9600); // serial de configurare
void loop() {
val = analogRead(analogPin); // citeste pinul de intrare
Serial.println(val); // verifica valoarea
Instructiunea ”Digital write”
Sintaxa
digitalWrite(pin, valoare)
Parameters
Examplu de Cod
Codul face ca pinul digital 13 să fie un OUTPUT și să-l comute alternând între
HIGH și LOW la un singur pas.
void setup() {
pinMode(13, OUTPUT); // seteaza pinul diigtal 13 ca intrare
}
void loop() {
digitalWrite(13, HIGH); // seteaza pinul digital 13 pornit
delay(1000); // asteapta pentru o secunda
digitalWrite(13, LOW); // seteaza pinul digital 13 oprit
delay(1000); // asteapta pentru o secunda
}
Observatii
Pinii de intrare analogice pot fi folosiţi ca pini digitali, numiţi A0, A1 etc.
Excepție fac pinii Arduino Nano, Pro Mini și Mini A6 și A7, care pot fi folosiți
doar ca intrări analogice.
Sintaxa
analogWrite(pin, valoare)
Parametrii
pin: pinul Arduino la care să scrie. Tipuri de date permise: int. valoare: ciclul de
serviciu: între 0 (mereu oprit) și 255 (mereu pornit). Tipuri de date permise: int.
Examplu de Cod
void setup() {
pinMode(ledPin, OUTPUT); // seteaza pinul ca iesire
}
void loop() {
val = analogRead(analogPin); // citeste pinul de intrare
analogWrite(ledPin, val / 4); // valorile analogRead pornesc de la 0 la 1023,
}
Observatii
Ieșirile PWM generate pe pinii 5 și 6 vor avea cicluri de serviciu mai mari
decât se aștepta Acest lucru se datorează interacțiunilor cu funcțiile millis () și
delay (), care împărtășesc același timer intern folosit pentru a genera acele ieșiri
PWM. Acest lucru va fi observat mai ales pe setările ciclului de serviciu scăzut
(de exemplu, 0 - 10) și poate duce la o valoare de 0 care nu oprește complet
ieșirea pe pinii 5 și 6.
Instructiunea ”Milis”
Funcția millis () este una dintre cele mai puternice funcții ale bibliotecii
Arduino. Această funcție returnează numărul de milisecunde pe care schița
curentă a fost executată de la ultima resetare. La început, s-ar putea să vă
gândiți, bine că nu este deloc util! Dar luați în considerare modul în care vă
spuneți timpul în timpul zilei. Efectiv, vă uitați la câte minute au trecut de la
miezul nopții. Aceasta este ideea din spatele millis ()!
În loc să „așteptați o anumită perioadă de timp”, așa cum faceți cu
întârziere (), puteți utiliza millis () pentru a întreba „cât timp a trecut”? Începem
prin a privi câteva moduri în care puteți utiliza întârziere () pentru a aprinde
intermitent LED-uri. Probabil că sunteți deja familiarizați cu acest prim
exemplu de cod Arduino IDE include acest exemplu ca „Blink”.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // seteaza LED-ul pornit
delay(1000); // asteapta pentru o secunda
digitalWrite(13, LOW); // seteaza LED-ul oprit
delay(1000); // asteapta pentru o secunda
}
Citind fiecare linie de buclă () în secvență schița:
1. Aprinde LED-ul de pe pinul 13,
2. Asteapta o secunda (sau 1000 milisecunde),
3. Opreste LED-ul de pe pinul 13,
4. Asteapta o secunda,
5. Apoi se repeta intreaga secventa.
Problema potențială este că, în timp ce stai întârziat (), codul tău nu mai
poate face altceva. Haideți să aruncăm o privire la un exemplu în care nu vă
„blocați” pentru cei 1000 de milisecunde.
Instructiunea ”Delay”
Descriere
Întrerupe programul pentru perioada de timp (în milisecunde) specificată
ca parametru. (Există 1000 de milisecunde într-o secundă.)
Sintaxa
delay(ms)
Parameterii
void setup() {
pinMode(ledPin, OUTPUT); // seteaza pinul digital ca iesire
}
void loop() {
digitalWrite(ledPin, HIGH); // porneste Led-ul
delay(1000); // asteapta timp de o secunda
digitalWrite(ledPin, LOW); // opreste LED-ul
delay(1000); // asteapta timp de o secunda
}
Observatii
buffer[0]='a'
buffer[1]='r'
buffer[2]='d'
Bibliografie:
- http://hobbyelectro.blogspot.com/2014/01/arduino-si-comenzi-prin-interfata.html
- https://www.arduino.cc/reference/en/language/functions/time/delay/
- https://www.baldengineer.com/millis-tutorial.html
- https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/
- https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/
- https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/
- https://www.arduino.cc/en/Reference.PinMode
- https://mchelariu.wordpress.com/2010/01/12/l10-instructiunea-do-while/
- https://mchelariu.wordpress.com/2010/11/12/l11-instructiunea-while/
- https://marplo.net/flash/instructiuni-repetitive-for_as
- https://infopascalfacts.wordpress.com/2016/11/09/%D0%B7%D0%B0%D0%B3%D0%BE
%D0%BB%D0%BE%D0%B2%D0%BE%D0%BA-%D0%B7%D0%B0%D0%BF
%D0%B8%D1%81%D0%B8-%D0%B2-%D0%B1%D0%BB%D0%BE%D0%B3%D0%B5-
2/