This shows you the differences between two versions of the page.
|
pm:prj2021:alazar:ruleta_digitala [2021/04/25 21:59] petru.temelie created |
pm:prj2021:alazar:ruleta_digitala [2021/06/03 19:15] (current) petru.temelie |
||
|---|---|---|---|
| Line 7: | Line 7: | ||
| ===Descriere generala=== | ===Descriere generala=== | ||
| Proiectul va folosi un Arduino UNO si am ales sa folosesc senzori ultrasonici un buton care sa\\ | Proiectul va folosi un Arduino UNO si am ales sa folosesc senzori ultrasonici un buton care sa\\ | ||
| - | faca conversia din inch in centimetri si un buton de on/off. De asemenea, cand se apropie de\\ | + | faca conversia din inch in centimetri. De asemenea, cu cat se apropie mai mult de\\ |
| - | limita de distanta a senzorilor voi folosi un led pentru a notifica utilizatorul ca nu poate\\ masura mai mult de atat.\\ | + | senzori aprind in functie de intervalul de distanta led-ul corespunzator,\\ |
| - | {{:pm:prj2021:alazar:untitled_diagram_6_.png|}} \\ | + | iar daca se aprinde becul rosu, setat la distanta cea mai mica, buzzer-ul emite un sunet puternic.\\ |
| + | |||
| + | {{:pm:prj2021:alazar:schema_drawio.jpg?700|}} \\ | ||
| ===Hardware Design=== | ===Hardware Design=== | ||
| Line 16: | Line 18: | ||
| * Breadboard | * Breadboard | ||
| * Fire | * Fire | ||
| - | * Doua butoane | + | * Un buton |
| * Senzori ultrasonici | * Senzori ultrasonici | ||
| - | * Un LED | + | * 3 LED-uri |
| * Un ecran LCD | * Un ecran LCD | ||
| * Rezistente | * Rezistente | ||
| + | {{:pm:prj2021:alazar:eagle_schema.jpg?800|}}\\ | ||
| ===Software Design=== | ===Software Design=== | ||
| + | <spoiler Codul proiectului> | ||
| + | <code> | ||
| + | #include <LiquidCrystal_I2C.h> | ||
| + | |||
| + | #include <Wire.h> | ||
| + | |||
| + | LiquidCrystal_I2C lcd(0x23, 16, 2); | ||
| + | |||
| + | int trigger=12; | ||
| + | int echo=11; | ||
| + | int timp; | ||
| + | int distanta; | ||
| + | |||
| + | int red=2; | ||
| + | int yellow=3; | ||
| + | int green=4; | ||
| + | |||
| + | int butonPin=6; | ||
| + | int butonNew=0; | ||
| + | int butonOld=0; | ||
| + | int state=0; | ||
| + | int valbuton; | ||
| + | |||
| + | int dist3=20; | ||
| + | int dist2=10; | ||
| + | int dist1=3; | ||
| + | |||
| + | int buzzer=8; | ||
| + | int buzzeralim=A0; | ||
| + | void setup() { | ||
| + | pinMode(trigger,OUTPUT); | ||
| + | pinMode(echo,INPUT); | ||
| + | pinMode(red,OUTPUT); | ||
| + | pinMode(yellow,OUTPUT); | ||
| + | pinMode(green,OUTPUT); | ||
| + | |||
| + | pinMode(butonPin,INPUT); | ||
| + | pinMode(buzzer, OUTPUT); | ||
| + | Serial.begin(9600); | ||
| + | |||
| + | lcd.begin(); | ||
| + | |||
| + | lcd.backlight(); | ||
| + | lcd.print("Initializare"); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | butonstate(); | ||
| + | Serial.println(distanta); | ||
| + | leduri(distanta, dist3, dist2, dist1); | ||
| + | afisare(); | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | void afisare(){ | ||
| + | lcd.clear(); | ||
| + | lcd.print("Distanta:"); | ||
| + | lcd.setCursor(9,0); | ||
| + | lcd.print(distanta); | ||
| + | lcd.setCursor(13,0); | ||
| + | if (state==0){ | ||
| + | lcd.print("cm"); | ||
| + | } | ||
| + | else{ | ||
| + | lcd.print("in"); | ||
| + | } | ||
| + | delay(300); | ||
| + | } | ||
| + | |||
| + | int senzor(){ | ||
| + | digitalWrite(trigger,LOW); | ||
| + | delayMicroseconds(10); | ||
| + | digitalWrite(trigger,HIGH); | ||
| + | delayMicroseconds(10); | ||
| + | digitalWrite(trigger,LOW); | ||
| + | timp=pulseIn(echo,HIGH); | ||
| + | delay(25); | ||
| + | if (state == 0) { | ||
| + | return 0.0173*timp; | ||
| + | } else { | ||
| + | return 0.0173 * timp /2.54; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void leduri(int distanta, int dist3, int dist2, int dist1){ | ||
| + | if(distanta>dist3){ | ||
| + | digitalWrite(green,HIGH); | ||
| + | delay(300); | ||
| + | digitalWrite(green,LOW); | ||
| + | delay(300); | ||
| + | } | ||
| + | else if(distanta>dist2){ | ||
| + | //digitalWrite(buzzer,HIGH); | ||
| + | digitalWrite(yellow,HIGH); | ||
| + | delay(300); | ||
| + | digitalWrite(yellow,LOW); | ||
| + | delay(300); | ||
| + | } | ||
| + | else if(distanta>dist1){ | ||
| + | digitalWrite(red,HIGH); | ||
| + | delay(300); | ||
| + | digitalWrite(red,LOW); | ||
| + | delay(300); | ||
| + | analogWrite(buzzeralim,150); | ||
| + | digitalWrite(buzzer, LOW); | ||
| + | tone(buzzer, 450); | ||
| + | delay(100); | ||
| + | noTone(buzzer); | ||
| + | digitalWrite(buzzer,HIGH); | ||
| + | } | ||
| + | else{ | ||
| + | digitalWrite(buzzer,HIGH); | ||
| + | digitalWrite(green,LOW); | ||
| + | digitalWrite(yellow,LOW); | ||
| + | digitalWrite(red,LOW); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void butonstate(){ | ||
| + | butonNew=digitalRead(butonPin); | ||
| + | distanta = senzor(); | ||
| + | if (butonOld==0 && butonNew==1){ | ||
| + | if(state==0){ | ||
| + | state=1; | ||
| + | dist3=20/ 2.54; | ||
| + | dist2=10/ 2.54; | ||
| + | dist1=3/ 2.54; | ||
| + | } | ||
| + | else{ | ||
| + | state=0; | ||
| + | dist3=20; | ||
| + | dist2=10; | ||
| + | dist1=3; | ||
| + | } | ||
| + | } | ||
| + | butonOld=butonNew; | ||
| + | | ||
| + | } | ||
| + | </code> | ||
| + | </spoiler> | ||
| + | Am realizat partea de coding in Arduino IDE. In functia senzor() calculez distanta de la senzor\\ | ||
| + | la obiect, pe care o transform in functie de modul setat din buton in centimetri sau in inch.\\ | ||
| + | Pentru a da o nota mai rezonabila buzzer-ului am folosit functia tone(), iar pentru a-l face sa\\ | ||
| + | bipaie am folosit un delay mic si apoi functia notone().\\ | ||
| + | |||
| ===Rezultate obtinute=== | ===Rezultate obtinute=== | ||
| + | https://www.youtube.com/watch?v=ywaQIWpIWfc\\ | ||
| + | |||
| ===Concluzii=== | ===Concluzii=== | ||
| - | ===Download=== | + | Am implementat ce mi-am propus si functioneaza totul cum am sperat. Sunt multumit si a fost\\ |
| + | la fel de simplu pe cat ma asteptam.\\ | ||
| ===Jurnal=== | ===Jurnal=== | ||
| + | * 25.04 : Creare pagina ocw\\ | ||
| + | * 20.05 : Realizare proiect\\ | ||
| + | * 02.06 : Filmat poriectul si finalizat pagina ocw\\ | ||
| + | |||
| ===Bibliografie/Resurse=== | ===Bibliografie/Resurse=== | ||
| + | https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library\\ | ||
| + | https://www.youtube.com/watch?v=tuRAvlVBEl0\\ | ||
| + | https://www.youtube.com/watch?v=M-UKXCUI0rE\\ | ||
| + | |||
| + | |||
| + | {{:pm:prj2021:alazar:ruleta_digitala_5_.pdf|}} | ||