This shows you the differences between two versions of the page.
|
pm:prj2024:vstoica:victor.ionescu0812 [2024/05/27 00:28] victor.ionescu0812 |
pm:prj2024:vstoica:victor.ionescu0812 [2024/05/30 08:41] (current) victor.ionescu0812 |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| <note tip> | <note tip> | ||
| - | Prezentarea pe scurt a proiectului: | ||
| Un sistem ce masoara viteza de deplasare a vehiculului si o afiseaza pe un display cu indicatii sonore. | Un sistem ce masoara viteza de deplasare a vehiculului si o afiseaza pe un display cu indicatii sonore. | ||
| Acesta este util pentru depsitarea soferilor care conduc cu viteza si atentionarea acestora. | Acesta este util pentru depsitarea soferilor care conduc cu viteza si atentionarea acestora. | ||
| Line 10: | Line 9: | ||
| <note tip> | <note tip> | ||
| - | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | |
| + | Componentele principale: | ||
| + | * Arduino Uno: Reprezentat în centrul schemei, este unitatea centrală de control | ||
| + | * Un display LCD cu 16 pini conectat la Arduino | ||
| + | * Buzzer: Un buzzer conectat pentru a emite sunete | ||
| + | * 2 senzori IR: Detecteaza miscarea | ||
| {{:pm:prj2024:vstoica:schema123.png?200|}} | {{:pm:prj2024:vstoica:schema123.png?200|}} | ||
| + | |||
| + | </note> | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| + | <note tip> | ||
| * Display | * Display | ||
| * 2X senzor IR | * 2X senzor IR | ||
| Line 21: | Line 28: | ||
| * Buzzer activ | * Buzzer activ | ||
| * Arduino Uno R3 | * Arduino Uno R3 | ||
| + | De rezistente nu a fost nevoie. | ||
| + | </note> | ||
| + | |||
| ===== Software Design ===== | ===== Software Design ===== | ||
| - | <note tip> | + | <note tip> |
| - | Descrierea codului aplicaţiei (firmware): | + | |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Codul a fost scris in Arduino IDE. |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
| - | * (etapa 3) surse şi funcţii implementate | + | |
| + | while (1) { | ||
| + | if ((PINC & (1 << PINC0)) == 0 && flag1 == 0) { | ||
| + | timer1 = TCNT1; | ||
| + | flag1 = 1; | ||
| + | } | ||
| + | |||
| + | if ((PINC & (1 << PINC1)) == 0 && flag2 == 0) { | ||
| + | timer2 = TCNT1; | ||
| + | flag2 = 1; | ||
| + | } | ||
| + | |||
| + | if (flag1 == 1 && flag2 == 1) { | ||
| + | if (timer1 > timer2) { | ||
| + | Time = (timer1 - timer2) / (F_CPU / 1024.0); | ||
| + | } else if (timer2 > timer1) { | ||
| + | Time = (timer2 - timer1) / (F_CPU / 1024.0); | ||
| + | } | ||
| + | speed = (distance / Time) * 3600 / 1000; | ||
| + | flag1 = 0; | ||
| + | flag2 = 0; | ||
| + | } | ||
| + | |||
| + | if (speed == 0) { | ||
| + | lcd_set_cursor(0, 1); | ||
| + | if (flag1 == 0 && flag2 == 0) { | ||
| + | lcd_print("No car detected "); | ||
| + | } else { | ||
| + | lcd_print("Searching... "); | ||
| + | } | ||
| + | } else { | ||
| + | lcd_clear(); | ||
| + | lcd_set_cursor(0, 0); | ||
| + | lcd_print("Speed:"); | ||
| + | char buffer[10]; | ||
| + | dtostrf(speed, 4, 1, buffer); | ||
| + | lcd_print(buffer); | ||
| + | lcd_print(" Km/Hr "); | ||
| + | lcd_set_cursor(0, 1); | ||
| + | if (speed > 50) { | ||
| + | lcd_print(" Over Speeding "); | ||
| + | PORTB |= (1 << PORTB5); | ||
| + | } else { | ||
| + | lcd_print(" Normal Speed "); | ||
| + | } | ||
| + | _delay_ms(3000); | ||
| + | PORTB &= ~(1 << PORTB5); | ||
| + | speed = 0; | ||
| + | lcd_clear(); | ||
| + | } | ||
| + | } | ||
| + | | ||
| </note> | </note> | ||
| - | ===== Rezultate Obţinute ===== | + | ===== Cod complet ===== |
| <note tip> | <note tip> | ||
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| + | #include <Wire.h> | ||
| + | #include <LiquidCrystal_I2C.h> | ||
| + | |||
| + | LiquidCrystal_I2C lcd(0x27, 16, 2); | ||
| + | |||
| + | int timer1; | ||
| + | int timer2; | ||
| + | |||
| + | float Time; | ||
| + | |||
| + | int flag1 = 0; | ||
| + | int flag2 = 0; | ||
| + | |||
| + | float distance = 3.5; | ||
| + | float speed; | ||
| + | |||
| + | int ir_s1 = A0; | ||
| + | int ir_s2 = A1; | ||
| + | |||
| + | int buzzer = 13; | ||
| + | |||
| + | void setup() { | ||
| + | pinMode(ir_s1, INPUT); | ||
| + | pinMode(ir_s2, INPUT); | ||
| + | pinMode(buzzer, OUTPUT); | ||
| + | |||
| + | lcd.begin(16, 1); | ||
| + | lcd.init(); | ||
| + | lcd.backlight(); | ||
| + | lcd.clear(); | ||
| + | lcd.setCursor(0, 0); | ||
| + | lcd.print("VYCTOR MASHINA"); | ||
| + | delay(2000); | ||
| + | lcd.clear(); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | if (digitalRead(ir_s1) == LOW && flag1 == 0) { | ||
| + | timer1 = millis(); | ||
| + | flag1 = 1; | ||
| + | } | ||
| + | |||
| + | if (digitalRead(ir_s2) == LOW && flag2 == 0) { | ||
| + | timer2 = millis(); | ||
| + | flag2 = 1; | ||
| + | } | ||
| + | |||
| + | if (flag1 == 1 && flag2 == 1) { | ||
| + | if (timer1 > timer2) { | ||
| + | Time = timer1 - timer2; | ||
| + | } else if (timer2 > timer1) { | ||
| + | Time = timer2 - timer1; | ||
| + | } | ||
| + | Time = Time / 1000; | ||
| + | speed = (distance / Time); | ||
| + | speed = speed * 3600; | ||
| + | speed = speed / 1000; | ||
| + | } | ||
| + | |||
| + | if (speed == 0) { | ||
| + | lcd.setCursor(0, 1); | ||
| + | if (flag1 == 0 && flag2 == 0) { | ||
| + | lcd.print("No car detected"); | ||
| + | } else { | ||
| + | lcd.print("Searching... "); | ||
| + | } | ||
| + | } else { | ||
| + | lcd.clear(); | ||
| + | lcd.setCursor(0, 0); | ||
| + | lcd.print("Speed:"); | ||
| + | lcd.print(speed, 1); | ||
| + | lcd.print("Km/Hr "); | ||
| + | lcd.setCursor(0, 1); | ||
| + | if (speed > 50) { | ||
| + | lcd.print(" Over Speeding "); | ||
| + | digitalWrite(buzzer, HIGH); | ||
| + | } else { | ||
| + | lcd.print(" Normal Speed "); | ||
| + | } | ||
| + | delay(3000); | ||
| + | digitalWrite(buzzer, LOW); | ||
| + | speed = 0; | ||
| + | flag1 = 0; | ||
| + | flag2 = 0; | ||
| + | } | ||
| + | } | ||
| </note> | </note> | ||