Differences

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

Link to this comparison view

pm:prj2023:avaduva:basketball_score_counter [2023/05/30 03:02]
vlad.paraschiv1511 [Rezultate Obţinute]
pm:prj2023:avaduva:basketball_score_counter [2023/05/30 04:00] (current)
vlad.paraschiv1511 [Download]
Line 17: Line 17:
  
 ==Schema:== ==Schema:==
-{{ :​pm:​prj2023:​avaduva:​pvschema.png}}+{{ :​pm:​prj2023:​avaduva:​pvschema2.png}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 30: Line 30:
   *LCD display   *LCD display
  
-===== Hardware Scheme ​=====+1. Hardware Scheme ​ 
 + 
 +{{ :​pm:​prj2023:​avaduva:​schemapv2.png?​700}} 
 + 
 +2. Hardware 
 + 
 +{{ :​pm:​prj2023:​avaduva:​fire.jpeg?​700}} 
 + 
 + 
  
-{{ :​pm:​prj2023:​avaduva:​schemapv2.png}} 
  
 ===== Software Design ===== ===== Software Design =====
Line 42: Line 50:
 În codul folosit există și o funcție care modifică culoarea benzii LED în funcție de timpul rămas. După ce timpul expiră, banda LED se va opri. În codul folosit există și o funcție care modifică culoarea benzii LED în funcție de timpul rămas. După ce timpul expiră, banda LED se va opri.
  
 +Algoritmi folosiți:
 +
 +1.Countdown
 <​code>​ <​code>​
-#include <​LiquidCrystal_I2C.h> +long minute = 0, second = 59; 
-#include <Wire.h> +long countdown_time = minute * 60 + second; 
-#include <​Adafruit_NeoPixel.h>+
 +
 +. 
 +void loop() { 
 +long countdowntime_seconds = countdown_time - (millis() / 1000); 
 +  if (countdowntime_seconds ​>= 0) { 
 +    long countdown_minute = ((countdowntime_seconds / 60) % 60); 
 +    long countdown_sec = countdowntime_seconds % 60; 
 +    lcd.setCursor(4,​ 1);
  
 +    if (countdown_minute < 10) {
 +      lcd.print("​0"​);​
 +    }
 +    lcd.print(countdown_minute);​
 +    lcd.print(":"​);​
 +    if (countdown_sec < 10) {
 +      lcd.print("​0"​);​
 +    }
 +.
 +.
 +.
 +.
 +}
 +</​code>​
 +
 +2.Control LED + LCD
 +<​code>​
 #define LED_PIN 2 #define LED_PIN 2
 #define LED_COUNT 6 #define LED_COUNT 6
- 
-const int triggerPin = 7; 
-const int echoPin = 6; 
-const int buzzerPin = 9; 
- 
 LiquidCrystal_I2C lcd(0x27, 16, 2); LiquidCrystal_I2C lcd(0x27, 16, 2);
 Adafruit_NeoPixel strip(LED_COUNT,​ LED_PIN, NEO_GRB + NEO_KHZ800);​ Adafruit_NeoPixel strip(LED_COUNT,​ LED_PIN, NEO_GRB + NEO_KHZ800);​
- 
-int score = 0; 
-long minute = 0, second = 59; 
-long countdown_time = minute * 60 + second; 
  
 void setup() { void setup() {
-  pinMode(triggerPin,​ OUTPUT); 
-  pinMode(echoPin,​ INPUT); 
-  pinMode(buzzerPin,​ OUTPUT); 
   lcd.init();   lcd.init();
   lcd.backlight();​   lcd.backlight();​
Line 73: Line 97:
  
   strip.begin();​   strip.begin();​
-  strip.show(); ​ // Initialize all pixels to off+  strip.show();​
 } }
  
 void loop() { void loop() {
- +
-  long duration; +
-  int distance; +.
- +
-  digitalWrite(triggerPin,​ LOW); +
-  delayMicroseconds(2);​ +
- +
-  digitalWrite(triggerPin,​ HIGH); +
-  delayMicroseconds(10);​ +
- +
-  digitalWrite(triggerPin,​ LOW); +
-  duration = pulseIn(echoPin,​ HIGH); +
-  distance = duration * 0.034 / 2; +
- +
-  if (distance < 10) { +
-    score++; +
-    lcd.setCursor(11,​0);​ +
-    lcd.print(score);​ +
-  } +
-  +
-  long countdowntime_seconds = countdown_time - (millis() / 1000); +
-  if (countdowntime_seconds >= 0) { +
-    long countdown_minute = ((countdowntime_seconds / 60) % 60); +
-    long countdown_sec = countdowntime_seconds % 60; +
-    lcd.setCursor(4,​ 1); +
- +
-    if (countdown_minute < 10) { +
-      lcd.print("​0"​);​ +
-    } +
-    lcd.print(countdown_minute);​ +
-    lcd.print(":"​);​ +
-    if (countdown_sec < 10) { +
-      lcd.print("​0"​);​ +
-    } +
-    lcd.print(countdown_sec);​ +
- +
-    // Control LED strip based on timer value+
     if (countdowntime_seconds <= 60 && countdowntime_seconds > 40) {     if (countdowntime_seconds <= 60 && countdowntime_seconds > 40) {
       setColor(strip.Color(0,​ 255, 0));  // Green       setColor(strip.Color(0,​ 255, 0));  // Green
Line 140: Line 130:
   }   }
   strip.show();​   strip.show();​
 +}
 +</​code>​
 +3. Setup Senzor Ultrasonic
 +
 +<​code>​
 +const int triggerPin = 7;
 +const int echoPin = 6;
 +int score = 0;
 +.
 +.
 +.
 +void setup() {
 +  pinMode(triggerPin,​ OUTPUT);
 +  pinMode(echoPin,​ INPUT);
 +  .
 +  .
 +  .
 +}
 +
 +void loop() {
 +
 +  long duration;
 +  int distance;
 +
 +  digitalWrite(triggerPin,​ LOW);
 +  delayMicroseconds(2);​
 +
 +  digitalWrite(triggerPin,​ HIGH);
 +  delayMicroseconds(10);​
 +
 +  digitalWrite(triggerPin,​ LOW);
 +  duration = pulseIn(echoPin,​ HIGH);
 +  distance = duration * 0.032 / 2;
 +
 +  if (distance < 10) {
 +    score++;
 +    lcd.setCursor(11,​0);​
 +    lcd.print(score);​
 +  }
 +}
 +</​code>​
 +
 +4.Setup Buzzer
 +
 +<​code>​
 +const int buzzerPin = 9;
 +.
 +.
 +.
 +void setup() {
 +  pinMode(buzzerPin,​ OUTPUT);
 +}
 +.
 +.
 +.
 +void loop {
 +  if (distance < 10) {
 +    score++;
 +    lcd.setCursor(11,​0);​
 +    lcd.print(score);​
 +    playSound();​
 +  }
 +  .
 +  .
 +  .
 } }
  
Line 170: Line 225:
 {{:​pm:​prj2023:​avaduva:​cosr.jpeg?​200|}} {{:​pm:​prj2023:​avaduva:​cosr.jpeg?​200|}}
  
-6. Coșul de baschet ​după oprire.+6. Afișajul după oprire ​+ LED-urile oprite.
  
 {{:​pm:​prj2023:​avaduva:​stop.jpeg?​200|}} {{:​pm:​prj2023:​avaduva:​stop.jpeg?​200|}}
  
 +7. Afișajul cu puncte.
  
 +{{:​pm:​prj2023:​avaduva:​pct.jpeg?​200|}}
  
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Tot procesul de facere a proiectului a fost o experiență interesantă și oarecum distractivă,​ dar care nu a fost întocmai ușoară. ​
  
-<note warning>​ +Construirea proiectului a fost cu siguranță o activitate plăcută, deși pe parcurs am întâmpinat mai multe probleme cu hardware-ul folosit.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ sursescheme, etc. Un fişier README, un ChangeLog, un script ​de compilare şcopiere automată ​pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă ​pe wiki folosind facilitatea **Add Images or other files**Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin331CC -> **:pm:prj2009:cc:dumitru_alin**. +Dezvoltarea codului a fost puțin mai provocatoare decât m-aș fi așteptat, din cauza problemelor ​pe care le-am avut cu senzorul ultrasonic.(probleme ​care au o șansă să mai apară din când în când) 
-</​note>​+ 
 +Una peste altaacest proiect m-a ajutat sa învăț destul de multe și a fost probabil partea mea preferată a acestui semestru. 
 +===== Download ===== 
 + 
 +{{:pm:prj2023:avaduva:ma.rar|}}\\
  
 ===== Jurnal ===== ===== Jurnal =====
Line 195: Line 255:
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +[[https://​lastminuteengineers.com/​i2c-lcd-arduino-tutorial/​ | Utilizare LCD]]\\ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+[[https://​howtomechatronics.com/​tutorials/​arduino/​ultrasonic-sensor-hc-sr04/​ | Utilizare HC-SR04]]\\ 
-</note>+Laboratorul 6
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2023/avaduva/basketball_score_counter.1685404942.txt.gz · Last modified: 2023/05/30 03:02 by vlad.paraschiv1511
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