Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:alazar:ruleta_digitala [2021/04/25 23:03]
petru.temelie
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.jpg|}} \\+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  ​+  * 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|}}
pm/prj2021/alazar/ruleta_digitala.1619381034.txt.gz · Last modified: 2021/04/25 23:03 by petru.temelie
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0