Sie sind auf Seite 1von 7

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 !i cel al unei "ale electronice care desc#ide usa atunci cand bati in usa con!orm unui anumit cod. $ai exact, daca bati in usa con!orm cu un anumit tipar, senzorul va detecta vibratiile iar Arduino le va compara cu un model de%a existent in memoria lui. &aca tiparele se potrivesc, se va aprinde led ul portocaliu, ec#ivalentul deblocarii usii.

'roiectul complet il vei gasi la adresa de mai %os( #ttp())***.instructables.com)id)Secret +nock &etecting &oor ,ock)-A,,ST.'S

http://www.robofun.ro/forum

/u trebuie decat sa bati in usa dupa modelul explicat in link ul de mai sus (in pagina, il vei gasi cu numele( 0S#ave and a 1air Cut, t*o bits.0) iar led ul portocaliu se va aprinde. In imagine este prezent si un buton. .ste necesar doar atunci cand incarci sketc# ul de la adresa anterioara. In cazul tau, poti conecta !oarte usor un buton brick. 2ei avea nevoie de urmatoarele componente( Arduino 3/4. Senzor de vibratii brick. 3 led uri brick. 5ire pentru conexiuni. 6readboard. Tabelul de conexiuni este mai %os.
Senzor vibratii pin IN Senzor vibratii pin Gnd Led brick portocaliu pin IN Led brick rosu pin IN Led brick verde pin IN Led brick portocaliu pin Gnd Led brick rosu pin Gnd Led brick verde pin Gnd Arduino analog A0 Arduino Gnd Arduino digital 3 Arduino digital 4 Arduino digital 5 Arduino Gnd Arduino Gnd Arduino Gnd

Ce incarc in Arduino ?
$ai %os este listat sketc# ul (varianta simplista). Il copiezi (cop")paste) direct in mediul de programare Arduino si il incarci in placa Arduino 3/4. Incearca sa bati in apropierea senzorului ca si cum ai bate intr o usa. &aca ai batut dupa modelul 0S#ave and a 1air Cut, t*o bits.0 (explicat in link ul de mai sus Instructables), led ul verde se aprinde urmarind !iecare bataie. ,a s!arsit, 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. &aca vrei sa te asiguri ca bataile sunt detectate corect, desc#ide monitorul serial si vei obtine ceva ca in imaginea de mai %os.

http://www.robofun.ro/forum

Codul sursa.
Codul sursa de mai %os este o varianta mult simpli!icata a celui prezentat in Instructables (spre exemplu, nu poti inregistra un nou tipar).
const const const const const const const const const const const int int int int int int int int int int int senzorVibratii = 0 led!ortocaliu = 3 led"osu = 4 ledVerde = 5 prag#etectie = 3 grad"espingere = $5 grad%ediu"espingere = &5 perioada'(( = &50 perioada'N = )50 batai%a* = $0 perioada+otala = &$00

int ,odel-atai.batai%a*/ = 0501 $51 $51 501 &001 501 01 01 01 01 01 01 01 01 01 01 01 01 01 02 int bu33er4itiri.batai%a*/ int nivelSenzor = 0

http://www.robofun.ro/forum

void setup56 0 pin%ode5led!ortocaliu1 '7+!7+6 pin%ode5led"osu1 '7+!7+6 pin%ode5ledVerde1 '7+!7+6 Serial8begin59)006 Serial8println5:Start progra,8:6 digital;rite5ledVerde1 <IG<6 2 void loop56 0 nivelSenzor = analog"ead5senzorVibratii6 i3 5nivelSenzor ==prag#etectie60 captura+ipar56 2 2 void captura+ipar560 Serial8println5:S>a detectat o bataie:6 int i = 0 3or 5i=0 i?batai%a* i@@60 bu33er4itiri.i/=0 2 int inde*-atai=0 int perioadaStart=,illis56 int perioada4urenta=,illis56 digital;rite5ledVerde1 L';6 delaA5perioada'((6 digital;rite5ledVerde1 <IG<6 do 0 nivelSenzor = analog"ead5senzorVibratii6 i3 5nivelSenzor ==prag#etectie60 Serial8println5:cioc8:6 perioada4urenta=,illis56 bu33er4itiri.inde*-atai/ = perioada4urenta>perioadaStart inde*-atai @@ perioadaStart=perioada4urenta digital;rite5ledVerde1 L';6 delaA5perioada'((6 digital;rite5ledVerde1 <IG<6 2 perioada4urenta=,illis56

http://www.robofun.ro/forum

2 BCile 55perioada4urenta>perioadaStart ? perioada+otala6 DD 5inde*-atai ? batai%a*66 i3 5,odelValid56 == true60 activeazaLE#56 2 else 0 Serial8println5:+ipar de batai incorect8:6 digital;rite5ledVerde1 L';6 3or 5i=0 i?4 i@@60 digital;rite5led"osu1 <IG<6 delaA5&006 digital;rite5led"osu1 L';6 delaA5&006 2 digital;rite5ledVerde1 <IG<6 2 2 void activeazaLE#560 Serial8println5:+ipar de batai corect8 7sa deblocata8:6 int i=0 digital;rite5led!ortocaliu1 <IG<6 digital;rite5ledVerde1 <IG<6 delaA 5perioada'N6 digital;rite5led!ortocaliu1 L';6 digital;rite5ledVerde1 L';6 2 boolean ,odelValid560 int i=0 int inde*-ataie4urenta = 0 int inde*-ataie%odel = 0 int interval%a*i,-atai = 0 3or 5i=0 i?batai%a* i@@60 i3 5bu33er4itiri.i/ = 060 inde*-ataie4urenta@@ 2 i3 5,odel-atai.i/ = 060 inde*-ataie%odel@@ 2 i3 5bu33er4itiri.i/ = interval%a*i,-atai60 interval%a*i,-atai = bu33er4itiri.i/ 2 2 i3 5inde*-ataie4urenta F= inde*-ataie%odel60

http://www.robofun.ro/forum

return 3alse 2 int di3erenta+otala=0 int di3erenta+i,p=0 3or 5i=0 i?batai%a* i@@60 bu33er4itiri.i/= ,ap5bu33er4itiri.i/101 interval%a*i,-atai1 01 &006 di3erenta+i,p = abs5bu33er4itiri.i/>,odel-atai.i/6 i3 5di3erenta+i,p = grad"espingere60 return 3alse 2 di3erenta+otala @= di3erenta+i,p 2 i3 5di3erenta+otalaGinde*-ataie%odel=grad%ediu"espingere60 return 3alse 2 return true 2

http://www.robofun.ro/forum

Das könnte Ihnen auch gefallen