SlideShare a Scribd company logo
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.
Arduino UNO si senzorul de vibratii brick
Senzorul de vibratii brick este o componenta care sesizeaza vibratiile mecanice (este capabil sa
detecteze vibratiile de genul unei batai in usa). In acest tutorial, vei conecta senzorul de vibratii brick
direct la placa Arduino si vei utiliza 3 led-uri brick (portocaliu, rosu, verde) pentru a evidentia
comportamentul senzorului.
Al doilea exemplu pe care il vom discuta va fi cel al unei yale electronice care deschide usa
atunci cand bati in usa conform unui anumit cod. Mai exact, daca bati in usa conform cu un anumit
tipar, senzorul va detecta vibratiile iar Arduino le va compara cu un model deja existent in memoria lui.
Daca tiparele se potrivesc, se va aprinde led-ul portocaliu, echivalentul deblocarii usii.
Proiectul complet il vei gasi la adresa de mai jos:
http://www.instructables.com/id/Secret-Knock-Detecting-Door-Lock/?ALLSTEPS
http://www.robofun.ro/forum
Nu trebuie decat sa bati in usa dupa modelul explicat in link-ul de mai sus (in pagina, il vei gasi
cu numele: "Shave and a Hair Cut, two bits.") iar led-ul portocaliu se va aprinde.
In imagine este prezent si un buton. Este necesar doar atunci cand incarci sketch-ul de la adresa
anterioara. In cazul tau, poti conecta foarte usor un buton brick.
Vei avea nevoie de urmatoarele componente:
• Arduino UNO.
• Senzor de vibratii brick.
• 3 led-uri brick.
• Fire pentru conexiuni.
• Breadboard.
Tabelul de conexiuni este mai jos.
Senzor vibratii pin IN Arduino analog A0
Senzor vibratii pin Gnd Arduino Gnd
Led brick portocaliu pin IN Arduino digital 3
Led brick rosu pin IN Arduino digital 4
Led brick verde pin IN Arduino digital 5
Led brick portocaliu pin Gnd Arduino Gnd
Led brick rosu pin Gnd Arduino Gnd
Led brick verde pin Gnd Arduino Gnd
Ce incarc in Arduino ?
Mai jos este listat sketch-ul (varianta simplista). Il copiezi (copy/paste) direct in mediul de
programare Arduino si il incarci in placa Arduino UNO.
Incearca sa bati in apropierea senzorului ca si cum ai bate intr-o usa. Daca ai batut dupa
modelul "Shave and a Hair Cut, two bits." (explicat in link-ul de mai sus - Instructables), led-ul verde se
aprinde urmarind fiecare bataie. La sfarsit, daca modelul de batai este recunoscut cu cel din memoria
interna, se aprinde led-ul portocaliu. In caz contrar, se aprinde led-ul rosu intr-o scurta secventa.
Daca vrei sa te asiguri ca bataile sunt detectate corect, deschide monitorul serial si vei obtine
ceva ca in imaginea de mai jos.
http://www.robofun.ro/forum
Codul sursa.
Codul sursa de mai jos este o varianta mult simplificata a celui prezentat in Instructables (spre
exemplu, nu poti inregistra un nou tipar).
const int senzorVibratii = 0;
const int ledPortocaliu = 3;
const int ledRosu = 4;
const int ledVerde = 5;
const int pragDetectie = 3;
const int gradRespingere = 25;
const int gradMediuRespingere = 15;
const int perioadaOFF = 150;
const int perioadaON = 650;
const int bataiMax = 20;
const int perioadaTotala = 1200;
int modelBatai[bataiMax] = {50, 25, 25, 50, 100, 50, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0};
int bufferCitiri[bataiMax];
int nivelSenzor = 0;
http://www.robofun.ro/forum
void setup() {
pinMode(ledPortocaliu, OUTPUT);
pinMode(ledRosu, OUTPUT);
pinMode(ledVerde, OUTPUT);
Serial.begin(9600);
Serial.println("Start program.");
digitalWrite(ledVerde, HIGH);
}
void loop() {
nivelSenzor = analogRead(senzorVibratii);
if (nivelSenzor >=pragDetectie){
capturaTipar();
}
}
void capturaTipar(){
Serial.println("S-a detectat o bataie");
int i = 0;
for (i=0;i<bataiMax;i++){
bufferCitiri[i]=0;
}
int indexBatai=0;
int perioadaStart=millis();
int perioadaCurenta=millis();
digitalWrite(ledVerde, LOW);
delay(perioadaOFF);
digitalWrite(ledVerde, HIGH);
do {
nivelSenzor = analogRead(senzorVibratii);
if (nivelSenzor >=pragDetectie){
Serial.println("cioc.");
perioadaCurenta=millis();
bufferCitiri[indexBatai] = perioadaCurenta-perioadaStart;
indexBatai ++;
perioadaStart=perioadaCurenta;
digitalWrite(ledVerde, LOW);
delay(perioadaOFF);
digitalWrite(ledVerde, HIGH);
}
perioadaCurenta=millis();
http://www.robofun.ro/forum
} while ((perioadaCurenta-perioadaStart < perioadaTotala) &&
(indexBatai < bataiMax));
if (modelValid() == true){
activeazaLED();
} else {
Serial.println("Tipar de batai incorect.");
digitalWrite(ledVerde, LOW);
for (i=0;i<4;i++){
digitalWrite(ledRosu, HIGH);
delay(100);
digitalWrite(ledRosu, LOW);
delay(100);
}
digitalWrite(ledVerde, HIGH);
}
}
void activeazaLED(){
Serial.println("Tipar de batai corect. Usa deblocata.");
int i=0;
digitalWrite(ledPortocaliu, HIGH);
digitalWrite(ledVerde, HIGH);
delay (perioadaON);
digitalWrite(ledPortocaliu, LOW);
digitalWrite(ledVerde, LOW);
}
boolean modelValid(){
int i=0;
int indexBataieCurenta = 0;
int indexBataieModel = 0;
int intervalMaximBatai = 0;
for (i=0;i<bataiMax;i++){
if (bufferCitiri[i] > 0){
indexBataieCurenta++;
}
if (modelBatai[i] > 0){
indexBataieModel++;
}
if (bufferCitiri[i] > intervalMaximBatai){
intervalMaximBatai = bufferCitiri[i];
}
}
if (indexBataieCurenta != indexBataieModel){
http://www.robofun.ro/forum
return false;
}
int diferentaTotala=0;
int diferentaTimp=0;
for (i=0;i<bataiMax;i++){
bufferCitiri[i]= map(bufferCitiri[i],0, intervalMaximBatai, 0,
100);
diferentaTimp = abs(bufferCitiri[i]-modelBatai[i]);
if (diferentaTimp > gradRespingere){
return false;
}
diferentaTotala += diferentaTimp;
}
if (diferentaTotala/indexBataieModel>gradMediuRespingere){
return false;
}
return true;
}
http://www.robofun.ro/forum

More Related Content

What's hot

Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiIulius 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
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaIulius Bors
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverIulius Bors
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul internIulius Bors
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12Iulius Bors
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcIulius Bors
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaIulius Bors
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2cIulius Bors
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8Iulius Bors
 

What's hot (12)

Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosferici
 
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
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistanta
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriver
 
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
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pc
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastatura
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2c
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8
 

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
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2Iulius Bors
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduinoIulius Bors
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Iulius Bors
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelIulius Bors
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiIulius Bors
 
Arduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerArduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerIulius 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
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiramIulius Bors
 
Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduinoIulius Bors
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionIulius Bors
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteoIulius 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
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803Iulius Bors
 
Arduino toraspberrypi firmata
Arduino toraspberrypi firmataArduino toraspberrypi firmata
Arduino toraspberrypi firmataIulius Bors
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilorIulius Bors
 

Viewers also liked (17)

Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linux
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduino
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcel
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypi
 
Arduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerArduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfinger
 
Arduino pid
Arduino pidArduino pid
Arduino pid
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificiala
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiram
 
Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduino
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueedition
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteo
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803
 
Arduino toraspberrypi firmata
Arduino toraspberrypi firmataArduino toraspberrypi firmata
Arduino toraspberrypi firmata
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilor
 

Similar to Arduino yala electronicabazatapecodsecret

Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetruIulius Bors
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry piIulius Bors
 
Arduino gsm gprs shield
Arduino   gsm gprs shieldArduino   gsm gprs shield
Arduino gsm gprs shieldIulius 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
 
Arduino protocolul 1 wire
Arduino   protocolul 1 wireArduino   protocolul 1 wire
Arduino protocolul 1 wireIulius Bors
 

Similar to Arduino yala electronicabazatapecodsecret (9)

Arduino sht11
Arduino sht11Arduino sht11
Arduino sht11
 
Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetru
 
Arduino rtc
Arduino rtcArduino rtc
Arduino rtc
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry pi
 
Arduino gsm gprs shield
Arduino   gsm gprs shieldArduino   gsm gprs shield
Arduino gsm gprs shield
 
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
 
Arduino protocolul 1 wire
Arduino   protocolul 1 wireArduino   protocolul 1 wire
Arduino protocolul 1 wire
 
Arduino tv out
Arduino tv outArduino tv out
Arduino tv out
 
Arduino mod-gps
Arduino mod-gpsArduino mod-gps
Arduino mod-gps
 

Arduino yala electronicabazatapecodsecret

  • 1. 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.
  • 2. Arduino UNO si senzorul de vibratii brick Senzorul de vibratii brick este o componenta care sesizeaza vibratiile mecanice (este capabil sa detecteze vibratiile de genul unei batai in usa). In acest tutorial, vei conecta senzorul de vibratii brick direct la placa Arduino si vei utiliza 3 led-uri brick (portocaliu, rosu, verde) pentru a evidentia comportamentul senzorului. Al doilea exemplu pe care il vom discuta va fi cel al unei yale electronice care deschide usa atunci cand bati in usa conform unui anumit cod. Mai exact, daca bati in usa conform cu un anumit tipar, senzorul va detecta vibratiile iar Arduino le va compara cu un model deja existent in memoria lui. Daca tiparele se potrivesc, se va aprinde led-ul portocaliu, echivalentul deblocarii usii. Proiectul complet il vei gasi la adresa de mai jos: http://www.instructables.com/id/Secret-Knock-Detecting-Door-Lock/?ALLSTEPS http://www.robofun.ro/forum
  • 3. Nu trebuie decat sa bati in usa dupa modelul explicat in link-ul de mai sus (in pagina, il vei gasi cu numele: "Shave and a Hair Cut, two bits.") iar led-ul portocaliu se va aprinde. In imagine este prezent si un buton. Este necesar doar atunci cand incarci sketch-ul de la adresa anterioara. In cazul tau, poti conecta foarte usor un buton brick. Vei avea nevoie de urmatoarele componente: • Arduino UNO. • Senzor de vibratii brick. • 3 led-uri brick. • Fire pentru conexiuni. • Breadboard. Tabelul de conexiuni este mai jos. Senzor vibratii pin IN Arduino analog A0 Senzor vibratii pin Gnd Arduino Gnd Led brick portocaliu pin IN Arduino digital 3 Led brick rosu pin IN Arduino digital 4 Led brick verde pin IN Arduino digital 5 Led brick portocaliu pin Gnd Arduino Gnd Led brick rosu pin Gnd Arduino Gnd Led brick verde pin Gnd Arduino Gnd Ce incarc in Arduino ? Mai jos este listat sketch-ul (varianta simplista). Il copiezi (copy/paste) direct in mediul de programare Arduino si il incarci in placa Arduino UNO. Incearca sa bati in apropierea senzorului ca si cum ai bate intr-o usa. Daca ai batut dupa modelul "Shave and a Hair Cut, two bits." (explicat in link-ul de mai sus - Instructables), led-ul verde se aprinde urmarind fiecare bataie. La sfarsit, daca modelul de batai este recunoscut cu cel din memoria interna, se aprinde led-ul portocaliu. In caz contrar, se aprinde led-ul rosu intr-o scurta secventa. Daca vrei sa te asiguri ca bataile sunt detectate corect, deschide monitorul serial si vei obtine ceva ca in imaginea de mai jos. http://www.robofun.ro/forum
  • 4. Codul sursa. Codul sursa de mai jos este o varianta mult simplificata a celui prezentat in Instructables (spre exemplu, nu poti inregistra un nou tipar). const int senzorVibratii = 0; const int ledPortocaliu = 3; const int ledRosu = 4; const int ledVerde = 5; const int pragDetectie = 3; const int gradRespingere = 25; const int gradMediuRespingere = 15; const int perioadaOFF = 150; const int perioadaON = 650; const int bataiMax = 20; const int perioadaTotala = 1200; int modelBatai[bataiMax] = {50, 25, 25, 50, 100, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int bufferCitiri[bataiMax]; int nivelSenzor = 0; http://www.robofun.ro/forum
  • 5. void setup() { pinMode(ledPortocaliu, OUTPUT); pinMode(ledRosu, OUTPUT); pinMode(ledVerde, OUTPUT); Serial.begin(9600); Serial.println("Start program."); digitalWrite(ledVerde, HIGH); } void loop() { nivelSenzor = analogRead(senzorVibratii); if (nivelSenzor >=pragDetectie){ capturaTipar(); } } void capturaTipar(){ Serial.println("S-a detectat o bataie"); int i = 0; for (i=0;i<bataiMax;i++){ bufferCitiri[i]=0; } int indexBatai=0; int perioadaStart=millis(); int perioadaCurenta=millis(); digitalWrite(ledVerde, LOW); delay(perioadaOFF); digitalWrite(ledVerde, HIGH); do { nivelSenzor = analogRead(senzorVibratii); if (nivelSenzor >=pragDetectie){ Serial.println("cioc."); perioadaCurenta=millis(); bufferCitiri[indexBatai] = perioadaCurenta-perioadaStart; indexBatai ++; perioadaStart=perioadaCurenta; digitalWrite(ledVerde, LOW); delay(perioadaOFF); digitalWrite(ledVerde, HIGH); } perioadaCurenta=millis(); http://www.robofun.ro/forum
  • 6. } while ((perioadaCurenta-perioadaStart < perioadaTotala) && (indexBatai < bataiMax)); if (modelValid() == true){ activeazaLED(); } else { Serial.println("Tipar de batai incorect."); digitalWrite(ledVerde, LOW); for (i=0;i<4;i++){ digitalWrite(ledRosu, HIGH); delay(100); digitalWrite(ledRosu, LOW); delay(100); } digitalWrite(ledVerde, HIGH); } } void activeazaLED(){ Serial.println("Tipar de batai corect. Usa deblocata."); int i=0; digitalWrite(ledPortocaliu, HIGH); digitalWrite(ledVerde, HIGH); delay (perioadaON); digitalWrite(ledPortocaliu, LOW); digitalWrite(ledVerde, LOW); } boolean modelValid(){ int i=0; int indexBataieCurenta = 0; int indexBataieModel = 0; int intervalMaximBatai = 0; for (i=0;i<bataiMax;i++){ if (bufferCitiri[i] > 0){ indexBataieCurenta++; } if (modelBatai[i] > 0){ indexBataieModel++; } if (bufferCitiri[i] > intervalMaximBatai){ intervalMaximBatai = bufferCitiri[i]; } } if (indexBataieCurenta != indexBataieModel){ http://www.robofun.ro/forum
  • 7. return false; } int diferentaTotala=0; int diferentaTimp=0; for (i=0;i<bataiMax;i++){ bufferCitiri[i]= map(bufferCitiri[i],0, intervalMaximBatai, 0, 100); diferentaTimp = abs(bufferCitiri[i]-modelBatai[i]); if (diferentaTimp > gradRespingere){ return false; } diferentaTotala += diferentaTimp; } if (diferentaTotala/indexBataieModel>gradMediuRespingere){ return false; } return true; } http://www.robofun.ro/forum