Active Members dancezar Posted April 6, 2013 Active Members Report Posted April 6, 2013 (edited) Pentru a putea realiza acest proiect aveti nevoie de:-o placa arduino (depinde placa puteti gasi clone pe okazii la 80 de lei sau pe teguna la 50-60 lei)-6 leduri(2 verzi,2 galbene,2 rosii) (Se gasesc oriunde)-6 rezistente de 1kohm (in orice aparat electronic) -un zenzor de distanta (pe okazii la 28 de lei Modul / Senzor / Shield HC-SR04 Ultrasonic masurarea distantei pentru Arduino uno mega AVR ARM - Okazii (124962590) )-baterie 9v si un soclu(cam 5-6 lei)-intrerupatorCum functioneaza senzorul de distanta?Principiul este simplu este ca la un sonar.Atunci cand pinul trigger are 5 volti la capat ,modulul trimite o unda de suntet.Atunci cand unda intalneste un obiect in cale sunetul este trimis inapoi iar pinul echo analizeaza timpul de raspuns in care unda este trimisa inapoi.View image: tut01Conecsiunea componentelor arata astfel:View image: Arduino RGB Rainbow pqtrigger-pin 13echo -pin 12ledurile-de la pin 11 pana la pin 6Codul(am explicat aproape tot ce se putea):int trigPin=13;int echPin=12;int led1=11;//led verdeint led2=10;//led verdeint led3=9;//led galbenint led4=8;//led galbenint led5=7;//led rosuint led6=6;//led rosuint limita=30;//limita de distanta dintre masina este de 30 de cm//pini pentru led si triggerul de la sharp sunt de iesire iar echo pin este de intrarevoid setup(){//Initializam pinipinMode(trigPin,OUTPUT);pinMode(echPin,INPUT);pinMode(led1,OUTPUT);pinMode(led2,OUTPUT);pinMode(led3,OUTPUT);pinMode(led4,OUTPUT);pinMode(led5,OUTPUT);pinMode(led6,OUTPUT);}//functia pentru determinarea distantei in centimetriint distanta(){ long duration, distance; digitalWrite(trigPin, LOW);//inchidem senzorulul delayMicroseconds(2);//asteptam 2 microsecunde digitalWrite(trigPin, HIGH);//deschidem senzorul delayMicroseconds(10);//asteptam 10 micro secunde digitalWrite(trigPin, LOW);//inchidem senzorul duration = pulseIn(echoPin, HIGH);//analizam durata distance = (duration/2) / 29.1;//calcule return distance; //intoarcem distanta}//functia loop se repeta la infinitvoid loop(){int cm=distanta();if(cm==limita){//aprindem toate leduriledigitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);}else if(cm>=limita&&cm<=40){digitalWrite(led1,LOW);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);}else if(cm>=40&&cm<=50){digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);}else if(cm>=50&&cm<=80){digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);}else if(cm>=80&&cm<=130){digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);}else{digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,LOW);digitalWrite(led6,HIGH);}}Dupa ce ati incarcat codul pe placa.Puneti totul intr-o cutie frumos iar senzorul de dinstanta il camuflati undeva in bara din spate,iar panoul cu leduri si placa arduino in fata cu soferul.Sezorul nu masoara foarte bine dupa calculele mele la 10 cm el masoara 8 cm.Daca am greseli de gramtica va rog sa le treceti cu vederea si da desenele sunt jalnice. Edited April 6, 2013 by danyweb09 Quote