SlideShare a Scribd company logo
1 of 16
Download to read offline
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Textul si imaginile din acest document sunt licentiate
Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Codul sursa din acest document este licentiat
Public-Domain
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul
sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara
nici un fel de limitari.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Senzori de Apasare
Senzorii de apasare ofera o modalitate simpla de a sesiza forta care actioneaza asupra lui. Sunt
disponibili in mai multe dimensiuni. Din punct de vedere al functionarii, un astfel de senzor poate fi
vazut ca un potentiometru rezistiv care isi schimba valoarea proportional cu forta care este aplicata
asupra lui. Pentru a-l utiliza impreuna cu Arduino, cea mai simpla abordare este sa-l conectam in serie
cu un rezistor de 10K, si sa folosim principiul divizorului de tensiune pentru a citi caderea de tensiune
pe rezistorul de 10K. In acest mod, atunci cand senzorul de apasare isi modifica rezistenta, se va
modifica si curentul prin circuit, si implicit si caderea de tensiune pe rezistorul de 10 K (pe care o citim
noi pe un port analogic).
Codul sursa este extrem de simplu, nu face altceva decat sa citeasca valoarea de pe pinul analogic
A0 si sa o afiseze in Serial Monitor. Valorile afisate in Serial Monitor in aceasta situatie sunt valori de
ordin calitativ ("acum apas mai tare decat am apasat data trecuta"), fara a fi etalonate neaparat in
newtoni. Senzorul este capabil de o precizie de aproximativ 10 %, lucru pe care trebuie sa-l iei in
considerare daca vrei sa construiesti un cantar de farmacie.
Arduino 5V PIN1 senzor
Arduino GND PIN1 Rezistor 10K
PIN2 Rezistor 10K Pin2 Senzor
Arduino Analog0 PIN2 Rezistor 10K
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
void setup() {
Serial.begin(9600);
}
void loop() {
int nivelForta = analogRead(0);
Serial.print("Nivel Forta: ");
Serial.println(nivelForta,DEC);
}
Cand lipesti firele pe terminalele senzorului, fii foarte atent. Pastreaza cat mai putin timp
letconul in contact cu terminalele senzorului, altfel risti sa topesti plasticul din jur (ceea ce va duce la
distrugerea senzorului). Cea mai buna metoda este sa topesti mai intai un pic de fludor pe terminal,
apoi separat topesti un pic de fludor pe fir, apoi le pui in contact si finalizezi lipitura. Daca din diverse
motive fludorul nu adera rapid pe terminalul senzorului (1-2, maxim 3 secunde), atunci ridica letconul
si incearca din nou peste 30 de secunde cand s-a racit terminalul.
Senzor de Atingere HotPot
Senzorii de atingere determina punctul in care sunt apasati cu degetul. Practic, senzorul se
comporta ca un rezistor variabil care isi modifica rezistenta in functie de punct in care este apasat.
Limitele sunt intre 100 ohm si 10 KOhm.
Utilizarea cu Arduino este la fel de simpla ca mai sus, doar ca nu mai ai nevoie de rezistorul
extra. Schema de conectare este mai jos.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Arduino 5V PIN1 Senzor
Arduino GND PIN3 Senzor
Arduino Analog0 PIN2 Senzor
void setup() {
Serial.begin(9600);
}
void loop() {
int nivelForta = analogRead(0);
Serial.print("Nivel Forta: ");
Serial.println(nivelForta,DEC);
}
Senzor de Indoire
Senzorii de indoire ofera o modalitate simpla de a sesiza gradul de indoire al unui element din
mediu. Sunt disponibili in mai multe variate de dimensiuni.
Din punct de vedere al functionarii, un astfel de senzor poate fi vazut ca un potentiometru
rezistiv care isi schimba valoarea corespunzator cu gradul de indoire la care este supus. Pentru a-l utiliza
impreuna cu Arduino, cea mai simpla abordare este sa-l conectam in serie cu un rezistor de 10K, si sa
folosim principiul divizorului de tensiune pentru a citi caderea de tensiune pe rezistorul de 10K. In
acest mod, atunci cand senzorul de apasare isi modifica rezistenta, se va modifica si curentul prin circuit
si implicit si caderea de tensiune pe rezistorul de 10 K (pe care o citim noi pe un port analogic).
Codul sursa este extrem de simplu, nu face altceva decat sa citeasca valoarea de pe pinul analogic
A0 si sa o afiseze in Serial Monitor. Valorile afisate in Serial Monitor sunt proportionale cu gradul de
indoire al senzorului. Senzorul sesizeaza si directia de indoire (in sensul ca daca il indoi spre stanga,
valoarea rezistentei electrice creste, iar daca il indoi spre dreapta, valoarea scade). Astfel, poti determina
exact atat directia indoirii, cat si cat de mult este indoit senzorul.
Pentru etalonare, cel mai simplu este sa faci incercari repetate. Astfel, prima data vei lasa
senzorul liber si vei urmari ce valoare ai in Serial Monitor. Acea valoare este valoarea pe care o vei folosi
mai departe in codul tau ca sa detectezi cand senzorul este perfect drept.
Arduino 5V PIN1 senzor
Arduino GND PIN1 Rezistor 10K
PIN2 Rezistor 10K Pin2 Senzor
Arduino Analog0 PIN2 Rezistor 10K
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
void setup() {
Serial.begin(9600);
}
void loop() {
int nivelForta = analogRead(0);
Serial.print("Nivel Indoire: ");
Serial.println(nivelForta,DEC);
}
Senzor Piezo
Senzorul piezo ofera o modalitate foarte simpla de a sesiza vibratiile din mediul ambiat.
Functionarea lui este extrem de simpla, ori de cate ori senzorul este supus unei vibratii mecanice,
genereaza o diferenta de potential intre cele doua borne ale sale. Mai departe, daca vom conecta firul
negru (GND) la pinul GND Arduino si firul rosu (semnal) la unul dintre pinii analogici Arduino (sa
spunem ca alegem pinul A0), vom sesiza o citire pozitiva pe pinul A0 ori de cate ori senzorul vibreaza.
Daca ne-am opri doar aici (si poti incerca sa faci doar montajul descris mai sus si sa vezi cum se
comporta), vei sesiza ca odata ce senzorul a vibrat la un moment dat, valoarea citita pe portul analogic
va ramane la valoarea citita in momentul vibratiei (sau va scadea foarte incet spre 0). Ca sa fortam o
revenire la 0 dupa ce vibratia mecanica a disparut, se conecteaza un rezistor cu valoare mare (de
exemplu, 1 Mega Ohm) intre cele doua fire ale senzorului. Astfel, diferenta de potential produsa de
senzor este descarcata prin rezistor intr-un anumit interval de timp (care depinde de valoarea
rezistorului – cu cat rezistorul este mai mare, cu atat valoarea citita ajunge la 0 mai rapid si cu cat
rezistorul este mai mare, cu atat valoarea citita scade mai incet). Din teste, 1 Mega Ohm pare a fi o
valoare suficient de buna.
Codul sursa este extrem de simplu, nu face altceva decat sa citeasca valoarea de pe pinul analogic
A0 si sa o afiseze in Serial Monitor. O schema cu conectarea pentru sase senzori piezo vei gasi mai jos.
Firul negru al fiecarui senzor se conecteaza la pinul GND Arduino, firul rosu al fiecarui senzor se
conecteaza la cate un pin analogic, iar intre firul rosu si firul negru se conecteaza un rezistor de 1 Mega
Ohm.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
void setup() {
Serial.begin(9600);
}
void loop() {
int nivelVibratie = analogRead(0);
Serial.print("Nivel Vibratie: ");
Serial.println(nivelVibratie,DEC);
}
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Toba cu senzori piezo
Un senzor piezo este capabil sa detecteze vibratiile. Ori de cate ori este facut sa vibreze, la
bornele lui apare o tensiune electrica. Aceasta tensiune electrica este detectata folosind o placa Arduino,
care placa Arduino comanda catre Music Instrument Shield generarea unui sunet corespunzator unui
instrument de percutie, la alegerea ta. Obtii astfel o toba virtuala controlata de Arduino.
Schema de conectare este simpla. Senzorul piezo are doua fire, unul negru (masa) si unul rosu.
Intre cele doua fire se inregistreaza diferenta de tensiune generata in cazul vibratiilor. Vei conecta toate
firele negre impreuna la pinul GND al Arduino si fiecare fir rosu la cate un pin analogic. Daca faci doar
atat, tensiunea generata de senzorul piezo va scadea extrem de incet (dupa ce senzorul a vibrat la un
moment dat, vei avea aceeasi valoare pe portul analogic Arduino, chiar daca senzorul nu mai vibreaza).
Poti incerca acest lucru cu codul de mai jos.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
void setup() {
Serial.begin(9600);
}
void loop() {
int v = analogRead(0);
Serial.println(v);
}
Daca vei misca (sau vei atinge cu degetul) senzorul piezo conectat la portul analogic zero, vei
vedea ca valoarea afisata in interfata de debug se modifica, si apoi scade foarte foarte incet inapoi la zero.
Ca sa fortam valoarea sa scada spre zero mai rapid, vom cupla in paralel cu fiecare senzor un
rezistor de valoare mare (de exemplu, un megaOhm). Unul dintre pinii rezistorului se va conecta la firul
rosu, iar celalalt pin la firul negru al senzorului piezo. In acest fel, tensiunea generata de senzor se va
descarca incet prin rezistor, si dupa o secunda, vom avea iarasi o citire zero pe senzor. Cu cat alegi un
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
rezistor mai mare, cu atat valoarea citita de Arduino va persista mai mult. Cu cat rezistorul este mai mic,
cu atat raspunsul va fi mai rapid. Poti verifica acest lucru cu programul de mai jos.
#define PRAG 3
void setup() {
Serial.begin(9600);
}
void loop() {
int v = analogRead(0);
if (v > PRAG) {
Serial.println(v);
}
}
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Rolul instructiunii IF este de a-ti permite sa vezi valorile modificate. Daca eliminam if-ul, vei
vedea in debug foarte multe valori zero si doar pentru o perioada foarta scurta vor aparea valori mai
mari ca zero. Datorita faptului ca perioada este extrem de scurta, cel mai probabil nu vei reusi sa vezi
nimic. Cu instructiunea if, vei vedea practic doar valorile mai mari ca zero in interfata de debug.
Pentru montarea efectiva, iti recomand sa cumperi din Hornbach, BricoStore, Praktiker si alte
magazine de profil o bucata de burete gros (in jur de 7 - 10 cm grosime, se foloseste in mod normal
pentru saltele). Din acest burete taie discuri cu diametru mai mic si altele cu diametru mai mare. Pune
apoi discul pe masa, si foloseste un cutter ascutit si ingust pentru a taia un buzunar in interiorul
discului.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Realizeaza sase astfel de discuri, cate unul pentru fiecare senzor. In buzunarul taiat cu cutter,
baga un senzor piezo. Testeaza in interfata de debug ca atunci cand bati in discul din burete sa vezi
valori care se modifica corespunzator. Dupa ce te-ai convins ca senzorul functioneaza corect, poti sigila
buzunarul cu un lipici pentru plastic sau cu banda dublu adeziva.
Vei obtine in final sase astfel de discuri de burete, fiecare disc din burete avand inglobat un
senzor piezo in interior. Mai verifica inca o data ca atunci cand lovesti fiecare disc in parte, vezi
informatiile corespunzatoare in interfata de debug. Foloseste programul de mai jos pentru acest test.
#define PRAG 3
void setup() {
Serial.begin(9600);
}
void loop() {
for (int i = 0; i < 5; i++) {
int v = analogRead(i);
if (v > PRAG) {
Serial.print("DISC :");
Serial.print(i);
Serial.print(";");
Serial.print("VAL :");
Serial.println(v);
}
}
}
Fata de varianta anterioara, in care afisam doar senzorul conectat la portul analogic zero in
interfata de debug, acum verificam toti cei sase senzori pe rand, si daca vreunul dintre ei depaseste
valoarea de prag, atunci il afisam in interfata de debug.
Daca totul este OK pana in acest punct, este momentul sa montezi peste Arduino si Music
Instrument Shield. Codul sursa complet este mai jos.
#include <SoftwareSerial.h>
#define NOTE_DURATION 800
#define DELAY_PER_SOUND 100
#define SENSOR_COUNT 6
#define LED_PIN 13
#define MIDI_RESET_PIN 4
byte string[8] = {35, 38, 49, 45, 75, 76, 77, 85};
boolean inProgress[SENSOR_COUNT];
long sum[SENSOR_COUNT];
long count[SENSOR_COUNT];
int values[SENSOR_COUNT];
long timeStart[SENSOR_COUNT];
long playStartTime[SENSOR_COUNT];
SoftwareSerial mySerial(2, 3);
void setup() {
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Serial.begin(9600);
Serial.println("BEGIN");
for (int i=0; i<SENSOR_COUNT; i++){
inProgress[i] = false;
sum[i] = 0;
count[i] = 0;
playStartTime[i] = 0;
}
mySerial.begin(31250);
pinMode(MIDI_RESET_PIN, OUTPUT);
digitalWrite(MIDI_RESET_PIN, LOW);
delay(100);
digitalWrite(MIDI_RESET_PIN, HIGH);
delay(100);
talkMIDI(0xB0, 0, 0x78);
}
void loop() {
checkStop();
for (int i = 0; i < SENSOR_COUNT; i++){
values[i] = analogRead(i);
if (values[i] > 10) {
if (!inProgress[i]){
inProgress[i] = true;
sum[i] = 0;
count[i] = 0;
timeStart[i] = millis();
}
}
if (inProgress[i]) {
sum[i] = sum[i] + values[i];
count[i] = count[i] + 1;
if ((values[i] <= 10)&&((millis() - timeStart[i]) > DELAY_PER_SOUND))
{
inProgress[i] = false;
doPlay(i, sum[i]);
}
}
}
}
void checkStop() {
for (int i = 0; i < SENSOR_COUNT; i++){
if ((millis() - playStartTime[i]) > NOTE_DURATION) {
playStartTime[i] = 0;
noteOff(0, string[i] ,127);
}
}
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
}
void doPlay(int index, double strength) {
Serial.print(index);
Serial.print("-");
Serial.println(strength);
noteOn(0, string[index], 127);
playStartTime[index] = millis();
}
void noteOn(byte channel, byte note, byte attack_velocity) {
talkMIDI( (0x90 | channel), note, attack_velocity);
}
void noteOff(byte channel, byte note, byte release_velocity) {
talkMIDI( (0x80 | channel), note, release_velocity);
}
void talkMIDI(byte cmd, byte data1, byte data2) {
digitalWrite(LED_PIN, HIGH);
mySerial.write(cmd);
mySerial.write(data1);
if( (cmd & 0xF0) <= 0xB0) {
mySerial.write(data2);
}
digitalWrite(LED_PIN, LOW);
}
Codul de mai sus se bazeaza pe exemplul dat in sectiunea despre Musical Instrument Shield, asa
ca daca vrei sa-ti amintesti cum anumite se foloseste Musical Instrument Shield, iti recomand sa recitesti
aceasta sectiune.
Constanta NOTE_DURATION defineste cat de mult dureaza sunetul dupa ce unul dintre
discuri a fost lovit. Am ales o durata de 800 de milisecunde, dar poti experimenta cu valoarea aceasta
dupa cum iti place tie. Dupa ce a fost lovit un disc, vreme de NOTE_DURATION milisecunde se
genereaza sunetul. Functia checkStop, apelata imediat la inceputul functiei loop verifica pe rand fiecare
senzor daca nu cumva a trecut NOTE_DURATION milisecunde de cand a inceput sunetul asociat
acelui senzor. Daca a trecut, atunci opreste sunetul. Imediat dupa ce a fost apelata functia checkStop in
loop, urmeaza un ciclu for care verifica fiecare senzor pe rand. Daca valoarea citita pe unul dintre
senzori depaseste o valoare prestabilita, inseamna ca cercul de burete respectiv a fost lovit si atunci se
genereaza sunetul corespunzator.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Aceasta a fost lectia 6. In final, as vrea sa te rog sa ne oferi feedback asupra acestei
lectii, pentru a ne permite sa le facem mai bune pe urmatoarele.
Este vorba despre un sondaj cu 4 intrebari (oricare este optionala), pe care il poti
accesa dand click aici.
Sau ne poti contacta direct prin email la contact@robofun.ro .
Iti multumim,
Echipa Robofun.RO
http://www.robofun.ro/forum

More Related Content

What's hot

Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetCurs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetIulius Bors
 
Curs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriCurs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriIulius Bors
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul internIulius Bors
 
Curs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoCurs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoIulius Bors
 
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsCurs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsIulius Bors
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretIulius Bors
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12Iulius Bors
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaIulius Bors
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcIulius Bors
 
Arduino toraspberrypi firmata
Arduino toraspberrypi firmataArduino toraspberrypi firmata
Arduino toraspberrypi firmataIulius Bors
 
Arduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerArduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerIulius Bors
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilorIulius Bors
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2cIulius Bors
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2Iulius Bors
 
Arduino protocolul 1 wire
Arduino   protocolul 1 wireArduino   protocolul 1 wire
Arduino protocolul 1 wireIulius Bors
 
Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduinoIulius Bors
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelIulius Bors
 
Arduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aArduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aIulius Bors
 

What's hot (20)

Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetCurs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernet
 
Curs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriCurs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uri
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul intern
 
Aiesec University 2012-arduino
Aiesec University 2012-arduinoAiesec University 2012-arduino
Aiesec University 2012-arduino
 
Curs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoCurs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduino
 
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsCurs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocs
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecret
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastatura
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pc
 
Arduino toraspberrypi firmata
Arduino toraspberrypi firmataArduino toraspberrypi firmata
Arduino toraspberrypi firmata
 
Arduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerArduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfinger
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilor
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2c
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2
 
Arduino protocolul 1 wire
Arduino   protocolul 1 wireArduino   protocolul 1 wire
Arduino protocolul 1 wire
 
Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduino
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcel
 
Arduino sht11
Arduino sht11Arduino sht11
Arduino sht11
 
Arduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aArduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-a
 

Viewers also liked

Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxIulius Bors
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiIulius Bors
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaIulius Bors
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteoIulius Bors
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8Iulius Bors
 
Arduino shield wifi-monitorizarelocuinta
Arduino shield wifi-monitorizarelocuintaArduino shield wifi-monitorizarelocuinta
Arduino shield wifi-monitorizarelocuintaIulius Bors
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803Iulius Bors
 
Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspotIulius Bors
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduinoIulius Bors
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Iulius Bors
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Iulius Bors
 
Arduino gyro stabilizator
Arduino gyro stabilizatorArduino gyro stabilizator
Arduino gyro stabilizatorIulius Bors
 
Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapseIulius Bors
 

Viewers also liked (15)

Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linux
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypi
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificiala
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteo
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8
 
Arduino shield wifi-monitorizarelocuinta
Arduino shield wifi-monitorizarelocuintaArduino shield wifi-monitorizarelocuinta
Arduino shield wifi-monitorizarelocuinta
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803
 
Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspot
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduino
 
Arduino rtc
Arduino rtcArduino rtc
Arduino rtc
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
 
Arduino gyro stabilizator
Arduino gyro stabilizatorArduino gyro stabilizator
Arduino gyro stabilizator
 
Arduino mod-gps
Arduino mod-gpsArduino mod-gps
Arduino mod-gps
 
Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapse
 

Similar to Curs gratuitarduino lectia6-senzoriforta

Arduino capacitive sensor-robofun
Arduino capacitive sensor-robofunArduino capacitive sensor-robofun
Arduino capacitive sensor-robofunIulius Bors
 
Arduino - senzori
Arduino - senzoriArduino - senzori
Arduino - senzoriIoana Culic
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiramIulius Bors
 
Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetruIulius Bors
 
Arduino gsm gprs shield
Arduino   gsm gprs shieldArduino   gsm gprs shield
Arduino gsm gprs shieldIulius Bors
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry piIulius Bors
 
Eap 103 termometru_4.0
Eap 103 termometru_4.0Eap 103 termometru_4.0
Eap 103 termometru_4.0Daniel Rosner
 
190607_conti_bariera_mag
190607_conti_bariera_mag190607_conti_bariera_mag
190607_conti_bariera_magMihai Agape
 
Cursuri. Calculatoare de bord.pdf
Cursuri. Calculatoare de bord.pdfCursuri. Calculatoare de bord.pdf
Cursuri. Calculatoare de bord.pdfChristinaArgesanu
 
Revista Tehnium 74_02
Revista Tehnium 74_02Revista Tehnium 74_02
Revista Tehnium 74_02mircea7
 

Similar to Curs gratuitarduino lectia6-senzoriforta (10)

Arduino capacitive sensor-robofun
Arduino capacitive sensor-robofunArduino capacitive sensor-robofun
Arduino capacitive sensor-robofun
 
Arduino - senzori
Arduino - senzoriArduino - senzori
Arduino - senzori
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiram
 
Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetru
 
Arduino gsm gprs shield
Arduino   gsm gprs shieldArduino   gsm gprs shield
Arduino gsm gprs shield
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry pi
 
Eap 103 termometru_4.0
Eap 103 termometru_4.0Eap 103 termometru_4.0
Eap 103 termometru_4.0
 
190607_conti_bariera_mag
190607_conti_bariera_mag190607_conti_bariera_mag
190607_conti_bariera_mag
 
Cursuri. Calculatoare de bord.pdf
Cursuri. Calculatoare de bord.pdfCursuri. Calculatoare de bord.pdf
Cursuri. Calculatoare de bord.pdf
 
Revista Tehnium 74_02
Revista Tehnium 74_02Revista Tehnium 74_02
Revista Tehnium 74_02
 

Curs gratuitarduino lectia6-senzoriforta

  • 1.
  • 2. http://www.robofun.ro Curs Gratuit Arduino si Robotica Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari. http://www.robofun.ro/forum
  • 3. http://www.robofun.ro Curs Gratuit Arduino si Robotica Senzori de Apasare Senzorii de apasare ofera o modalitate simpla de a sesiza forta care actioneaza asupra lui. Sunt disponibili in mai multe dimensiuni. Din punct de vedere al functionarii, un astfel de senzor poate fi vazut ca un potentiometru rezistiv care isi schimba valoarea proportional cu forta care este aplicata asupra lui. Pentru a-l utiliza impreuna cu Arduino, cea mai simpla abordare este sa-l conectam in serie cu un rezistor de 10K, si sa folosim principiul divizorului de tensiune pentru a citi caderea de tensiune pe rezistorul de 10K. In acest mod, atunci cand senzorul de apasare isi modifica rezistenta, se va modifica si curentul prin circuit, si implicit si caderea de tensiune pe rezistorul de 10 K (pe care o citim noi pe un port analogic). Codul sursa este extrem de simplu, nu face altceva decat sa citeasca valoarea de pe pinul analogic A0 si sa o afiseze in Serial Monitor. Valorile afisate in Serial Monitor in aceasta situatie sunt valori de ordin calitativ ("acum apas mai tare decat am apasat data trecuta"), fara a fi etalonate neaparat in newtoni. Senzorul este capabil de o precizie de aproximativ 10 %, lucru pe care trebuie sa-l iei in considerare daca vrei sa construiesti un cantar de farmacie. Arduino 5V PIN1 senzor Arduino GND PIN1 Rezistor 10K PIN2 Rezistor 10K Pin2 Senzor Arduino Analog0 PIN2 Rezistor 10K http://www.robofun.ro/forum
  • 4. http://www.robofun.ro Curs Gratuit Arduino si Robotica void setup() { Serial.begin(9600); } void loop() { int nivelForta = analogRead(0); Serial.print("Nivel Forta: "); Serial.println(nivelForta,DEC); } Cand lipesti firele pe terminalele senzorului, fii foarte atent. Pastreaza cat mai putin timp letconul in contact cu terminalele senzorului, altfel risti sa topesti plasticul din jur (ceea ce va duce la distrugerea senzorului). Cea mai buna metoda este sa topesti mai intai un pic de fludor pe terminal, apoi separat topesti un pic de fludor pe fir, apoi le pui in contact si finalizezi lipitura. Daca din diverse motive fludorul nu adera rapid pe terminalul senzorului (1-2, maxim 3 secunde), atunci ridica letconul si incearca din nou peste 30 de secunde cand s-a racit terminalul. Senzor de Atingere HotPot Senzorii de atingere determina punctul in care sunt apasati cu degetul. Practic, senzorul se comporta ca un rezistor variabil care isi modifica rezistenta in functie de punct in care este apasat. Limitele sunt intre 100 ohm si 10 KOhm. Utilizarea cu Arduino este la fel de simpla ca mai sus, doar ca nu mai ai nevoie de rezistorul extra. Schema de conectare este mai jos. http://www.robofun.ro/forum
  • 5. http://www.robofun.ro Curs Gratuit Arduino si Robotica Arduino 5V PIN1 Senzor Arduino GND PIN3 Senzor Arduino Analog0 PIN2 Senzor void setup() { Serial.begin(9600); } void loop() { int nivelForta = analogRead(0); Serial.print("Nivel Forta: "); Serial.println(nivelForta,DEC); } Senzor de Indoire Senzorii de indoire ofera o modalitate simpla de a sesiza gradul de indoire al unui element din mediu. Sunt disponibili in mai multe variate de dimensiuni. Din punct de vedere al functionarii, un astfel de senzor poate fi vazut ca un potentiometru rezistiv care isi schimba valoarea corespunzator cu gradul de indoire la care este supus. Pentru a-l utiliza impreuna cu Arduino, cea mai simpla abordare este sa-l conectam in serie cu un rezistor de 10K, si sa folosim principiul divizorului de tensiune pentru a citi caderea de tensiune pe rezistorul de 10K. In acest mod, atunci cand senzorul de apasare isi modifica rezistenta, se va modifica si curentul prin circuit si implicit si caderea de tensiune pe rezistorul de 10 K (pe care o citim noi pe un port analogic). Codul sursa este extrem de simplu, nu face altceva decat sa citeasca valoarea de pe pinul analogic A0 si sa o afiseze in Serial Monitor. Valorile afisate in Serial Monitor sunt proportionale cu gradul de indoire al senzorului. Senzorul sesizeaza si directia de indoire (in sensul ca daca il indoi spre stanga, valoarea rezistentei electrice creste, iar daca il indoi spre dreapta, valoarea scade). Astfel, poti determina exact atat directia indoirii, cat si cat de mult este indoit senzorul. Pentru etalonare, cel mai simplu este sa faci incercari repetate. Astfel, prima data vei lasa senzorul liber si vei urmari ce valoare ai in Serial Monitor. Acea valoare este valoarea pe care o vei folosi mai departe in codul tau ca sa detectezi cand senzorul este perfect drept. Arduino 5V PIN1 senzor Arduino GND PIN1 Rezistor 10K PIN2 Rezistor 10K Pin2 Senzor Arduino Analog0 PIN2 Rezistor 10K http://www.robofun.ro/forum
  • 6. http://www.robofun.ro Curs Gratuit Arduino si Robotica void setup() { Serial.begin(9600); } void loop() { int nivelForta = analogRead(0); Serial.print("Nivel Indoire: "); Serial.println(nivelForta,DEC); } Senzor Piezo Senzorul piezo ofera o modalitate foarte simpla de a sesiza vibratiile din mediul ambiat. Functionarea lui este extrem de simpla, ori de cate ori senzorul este supus unei vibratii mecanice, genereaza o diferenta de potential intre cele doua borne ale sale. Mai departe, daca vom conecta firul negru (GND) la pinul GND Arduino si firul rosu (semnal) la unul dintre pinii analogici Arduino (sa spunem ca alegem pinul A0), vom sesiza o citire pozitiva pe pinul A0 ori de cate ori senzorul vibreaza. Daca ne-am opri doar aici (si poti incerca sa faci doar montajul descris mai sus si sa vezi cum se comporta), vei sesiza ca odata ce senzorul a vibrat la un moment dat, valoarea citita pe portul analogic va ramane la valoarea citita in momentul vibratiei (sau va scadea foarte incet spre 0). Ca sa fortam o revenire la 0 dupa ce vibratia mecanica a disparut, se conecteaza un rezistor cu valoare mare (de exemplu, 1 Mega Ohm) intre cele doua fire ale senzorului. Astfel, diferenta de potential produsa de senzor este descarcata prin rezistor intr-un anumit interval de timp (care depinde de valoarea rezistorului – cu cat rezistorul este mai mare, cu atat valoarea citita ajunge la 0 mai rapid si cu cat rezistorul este mai mare, cu atat valoarea citita scade mai incet). Din teste, 1 Mega Ohm pare a fi o valoare suficient de buna. Codul sursa este extrem de simplu, nu face altceva decat sa citeasca valoarea de pe pinul analogic A0 si sa o afiseze in Serial Monitor. O schema cu conectarea pentru sase senzori piezo vei gasi mai jos. Firul negru al fiecarui senzor se conecteaza la pinul GND Arduino, firul rosu al fiecarui senzor se conecteaza la cate un pin analogic, iar intre firul rosu si firul negru se conecteaza un rezistor de 1 Mega Ohm. http://www.robofun.ro/forum
  • 7. http://www.robofun.ro Curs Gratuit Arduino si Robotica void setup() { Serial.begin(9600); } void loop() { int nivelVibratie = analogRead(0); Serial.print("Nivel Vibratie: "); Serial.println(nivelVibratie,DEC); } http://www.robofun.ro/forum
  • 8. http://www.robofun.ro Curs Gratuit Arduino si Robotica Toba cu senzori piezo Un senzor piezo este capabil sa detecteze vibratiile. Ori de cate ori este facut sa vibreze, la bornele lui apare o tensiune electrica. Aceasta tensiune electrica este detectata folosind o placa Arduino, care placa Arduino comanda catre Music Instrument Shield generarea unui sunet corespunzator unui instrument de percutie, la alegerea ta. Obtii astfel o toba virtuala controlata de Arduino. Schema de conectare este simpla. Senzorul piezo are doua fire, unul negru (masa) si unul rosu. Intre cele doua fire se inregistreaza diferenta de tensiune generata in cazul vibratiilor. Vei conecta toate firele negre impreuna la pinul GND al Arduino si fiecare fir rosu la cate un pin analogic. Daca faci doar atat, tensiunea generata de senzorul piezo va scadea extrem de incet (dupa ce senzorul a vibrat la un moment dat, vei avea aceeasi valoare pe portul analogic Arduino, chiar daca senzorul nu mai vibreaza). Poti incerca acest lucru cu codul de mai jos. http://www.robofun.ro/forum
  • 9. http://www.robofun.ro Curs Gratuit Arduino si Robotica void setup() { Serial.begin(9600); } void loop() { int v = analogRead(0); Serial.println(v); } Daca vei misca (sau vei atinge cu degetul) senzorul piezo conectat la portul analogic zero, vei vedea ca valoarea afisata in interfata de debug se modifica, si apoi scade foarte foarte incet inapoi la zero. Ca sa fortam valoarea sa scada spre zero mai rapid, vom cupla in paralel cu fiecare senzor un rezistor de valoare mare (de exemplu, un megaOhm). Unul dintre pinii rezistorului se va conecta la firul rosu, iar celalalt pin la firul negru al senzorului piezo. In acest fel, tensiunea generata de senzor se va descarca incet prin rezistor, si dupa o secunda, vom avea iarasi o citire zero pe senzor. Cu cat alegi un http://www.robofun.ro/forum
  • 10. http://www.robofun.ro Curs Gratuit Arduino si Robotica rezistor mai mare, cu atat valoarea citita de Arduino va persista mai mult. Cu cat rezistorul este mai mic, cu atat raspunsul va fi mai rapid. Poti verifica acest lucru cu programul de mai jos. #define PRAG 3 void setup() { Serial.begin(9600); } void loop() { int v = analogRead(0); if (v > PRAG) { Serial.println(v); } } http://www.robofun.ro/forum
  • 11. http://www.robofun.ro Curs Gratuit Arduino si Robotica Rolul instructiunii IF este de a-ti permite sa vezi valorile modificate. Daca eliminam if-ul, vei vedea in debug foarte multe valori zero si doar pentru o perioada foarta scurta vor aparea valori mai mari ca zero. Datorita faptului ca perioada este extrem de scurta, cel mai probabil nu vei reusi sa vezi nimic. Cu instructiunea if, vei vedea practic doar valorile mai mari ca zero in interfata de debug. Pentru montarea efectiva, iti recomand sa cumperi din Hornbach, BricoStore, Praktiker si alte magazine de profil o bucata de burete gros (in jur de 7 - 10 cm grosime, se foloseste in mod normal pentru saltele). Din acest burete taie discuri cu diametru mai mic si altele cu diametru mai mare. Pune apoi discul pe masa, si foloseste un cutter ascutit si ingust pentru a taia un buzunar in interiorul discului. http://www.robofun.ro/forum
  • 12. http://www.robofun.ro Curs Gratuit Arduino si Robotica http://www.robofun.ro/forum
  • 13. http://www.robofun.ro Curs Gratuit Arduino si Robotica Realizeaza sase astfel de discuri, cate unul pentru fiecare senzor. In buzunarul taiat cu cutter, baga un senzor piezo. Testeaza in interfata de debug ca atunci cand bati in discul din burete sa vezi valori care se modifica corespunzator. Dupa ce te-ai convins ca senzorul functioneaza corect, poti sigila buzunarul cu un lipici pentru plastic sau cu banda dublu adeziva. Vei obtine in final sase astfel de discuri de burete, fiecare disc din burete avand inglobat un senzor piezo in interior. Mai verifica inca o data ca atunci cand lovesti fiecare disc in parte, vezi informatiile corespunzatoare in interfata de debug. Foloseste programul de mai jos pentru acest test. #define PRAG 3 void setup() { Serial.begin(9600); } void loop() { for (int i = 0; i < 5; i++) { int v = analogRead(i); if (v > PRAG) { Serial.print("DISC :"); Serial.print(i); Serial.print(";"); Serial.print("VAL :"); Serial.println(v); } } } Fata de varianta anterioara, in care afisam doar senzorul conectat la portul analogic zero in interfata de debug, acum verificam toti cei sase senzori pe rand, si daca vreunul dintre ei depaseste valoarea de prag, atunci il afisam in interfata de debug. Daca totul este OK pana in acest punct, este momentul sa montezi peste Arduino si Music Instrument Shield. Codul sursa complet este mai jos. #include <SoftwareSerial.h> #define NOTE_DURATION 800 #define DELAY_PER_SOUND 100 #define SENSOR_COUNT 6 #define LED_PIN 13 #define MIDI_RESET_PIN 4 byte string[8] = {35, 38, 49, 45, 75, 76, 77, 85}; boolean inProgress[SENSOR_COUNT]; long sum[SENSOR_COUNT]; long count[SENSOR_COUNT]; int values[SENSOR_COUNT]; long timeStart[SENSOR_COUNT]; long playStartTime[SENSOR_COUNT]; SoftwareSerial mySerial(2, 3); void setup() { http://www.robofun.ro/forum
  • 14. http://www.robofun.ro Curs Gratuit Arduino si Robotica Serial.begin(9600); Serial.println("BEGIN"); for (int i=0; i<SENSOR_COUNT; i++){ inProgress[i] = false; sum[i] = 0; count[i] = 0; playStartTime[i] = 0; } mySerial.begin(31250); pinMode(MIDI_RESET_PIN, OUTPUT); digitalWrite(MIDI_RESET_PIN, LOW); delay(100); digitalWrite(MIDI_RESET_PIN, HIGH); delay(100); talkMIDI(0xB0, 0, 0x78); } void loop() { checkStop(); for (int i = 0; i < SENSOR_COUNT; i++){ values[i] = analogRead(i); if (values[i] > 10) { if (!inProgress[i]){ inProgress[i] = true; sum[i] = 0; count[i] = 0; timeStart[i] = millis(); } } if (inProgress[i]) { sum[i] = sum[i] + values[i]; count[i] = count[i] + 1; if ((values[i] <= 10)&&((millis() - timeStart[i]) > DELAY_PER_SOUND)) { inProgress[i] = false; doPlay(i, sum[i]); } } } } void checkStop() { for (int i = 0; i < SENSOR_COUNT; i++){ if ((millis() - playStartTime[i]) > NOTE_DURATION) { playStartTime[i] = 0; noteOff(0, string[i] ,127); } } http://www.robofun.ro/forum
  • 15. http://www.robofun.ro Curs Gratuit Arduino si Robotica } void doPlay(int index, double strength) { Serial.print(index); Serial.print("-"); Serial.println(strength); noteOn(0, string[index], 127); playStartTime[index] = millis(); } void noteOn(byte channel, byte note, byte attack_velocity) { talkMIDI( (0x90 | channel), note, attack_velocity); } void noteOff(byte channel, byte note, byte release_velocity) { talkMIDI( (0x80 | channel), note, release_velocity); } void talkMIDI(byte cmd, byte data1, byte data2) { digitalWrite(LED_PIN, HIGH); mySerial.write(cmd); mySerial.write(data1); if( (cmd & 0xF0) <= 0xB0) { mySerial.write(data2); } digitalWrite(LED_PIN, LOW); } Codul de mai sus se bazeaza pe exemplul dat in sectiunea despre Musical Instrument Shield, asa ca daca vrei sa-ti amintesti cum anumite se foloseste Musical Instrument Shield, iti recomand sa recitesti aceasta sectiune. Constanta NOTE_DURATION defineste cat de mult dureaza sunetul dupa ce unul dintre discuri a fost lovit. Am ales o durata de 800 de milisecunde, dar poti experimenta cu valoarea aceasta dupa cum iti place tie. Dupa ce a fost lovit un disc, vreme de NOTE_DURATION milisecunde se genereaza sunetul. Functia checkStop, apelata imediat la inceputul functiei loop verifica pe rand fiecare senzor daca nu cumva a trecut NOTE_DURATION milisecunde de cand a inceput sunetul asociat acelui senzor. Daca a trecut, atunci opreste sunetul. Imediat dupa ce a fost apelata functia checkStop in loop, urmeaza un ciclu for care verifica fiecare senzor pe rand. Daca valoarea citita pe unul dintre senzori depaseste o valoare prestabilita, inseamna ca cercul de burete respectiv a fost lovit si atunci se genereaza sunetul corespunzator. http://www.robofun.ro/forum
  • 16. http://www.robofun.ro Curs Gratuit Arduino si Robotica Aceasta a fost lectia 6. In final, as vrea sa te rog sa ne oferi feedback asupra acestei lectii, pentru a ne permite sa le facem mai bune pe urmatoarele. Este vorba despre un sondaj cu 4 intrebari (oricare este optionala), pe care il poti accesa dand click aici. Sau ne poti contacta direct prin email la contact@robofun.ro . Iti multumim, Echipa Robofun.RO http://www.robofun.ro/forum