This shows you the differences between two versions of the page.
|
pm:prj2024:vstoica:costin.bosoaga [2024/05/22 21:57] costin.bosoaga [Schema electrica] |
pm:prj2024:vstoica:costin.bosoaga [2024/05/22 22:35] (current) costin.bosoaga [Software Design] |
||
|---|---|---|---|
| Line 31: | Line 31: | ||
| ===== Schema electrica ===== | ===== Schema electrica ===== | ||
| - | {{ :pm:prj2024:vstoica:security_alarm_schematic.png?1000 |}} | + | {{ :pm:prj2024:vstoica:security_alarm_schematic.png?800 |}} |
| - | {{ :pm:prj2024:vstoica:alarm_system.png?1000 |}} | + | {{ :pm:prj2024:vstoica:alarm_system.png?800 |}} |
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | Mediul de dezvoltare: | ||
| + | * codul a fost scris in Arduino IDE. | ||
| + | * schema electrica a fost realizata in Tinkercad | ||
| - | <note tip> | + | Am folosit biblioteca "LiquidCrystal" pentru afisarea pe Display-ul LCD. |
| - | Descrierea codului aplicaţiei (firmware): | + | |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | **Functia setup** - initializeaza hardware-ul si afiseaza un mesaj de inceput pe LCD. |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | <note> |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | lcd.begin(16, 2); |
| - | * (etapa 3) surse şi funcţii implementate | + | Serial.begin (9600); |
| + | pinMode(trigPin, OUTPUT); | ||
| + | pinMode(echoPin, INPUT); | ||
| + | pinMode(buzzer,OUTPUT); | ||
| + | pinMode(PIN_RED, OUTPUT); | ||
| + | pinMode(PIN_GREEN, OUTPUT); | ||
| + | pinMode(PIN_BLUE, OUTPUT); | ||
| + | lcd.print("Starting System"); | ||
| + | delay(1500); | ||
| + | lcd.clear(); | ||
| + | lcd.print("System On"); | ||
| + | delay(4000); | ||
| + | </note> | ||
| + | |||
| + | **Functia loop**: | ||
| + | * Calculeaza distanta si delay-ul pentru buzzer: | ||
| + | <note> | ||
| + | duration = pulseIn(echoPin, HIGH); | ||
| + | distance = (duration / 2) / 29.1; | ||
| + | new_delay = (distance * 3) + 30; | ||
| + | </note> | ||
| + | |||
| + | * In functie de distanta schimba culoarea LED-ului si scrie starea curenta pe LCD: | ||
| + | <note> | ||
| + | if (distance < 50) | ||
| + | { | ||
| + | digitalWrite(buzzer, HIGH); | ||
| + | delay(new_delay); | ||
| + | if (distance < 10){ | ||
| + | setColor(255, 0, 0); | ||
| + | lcd.setCursor(0, 0); | ||
| + | lcd.print("High Risk "); | ||
| + | lcd.setCursor(0, 11); | ||
| + | lcd.print("Glowing RED "); | ||
| + | } | ||
| + | else if (distance < 25){ | ||
| + | setColor(255, 32, 0); | ||
| + | lcd.setCursor(0, 0); | ||
| + | lcd.print("Medium Risk "); | ||
| + | lcd.setCursor(0, 11); | ||
| + | lcd.print("Glowing Orange "); | ||
| + | } | ||
| + | else { | ||
| + | setColor(255, 255, 0); | ||
| + | lcd.setCursor(0, 0); | ||
| + | lcd.print("Low Risk "); | ||
| + | lcd.setCursor(0, 11); | ||
| + | lcd.print("Glowing Yellow "); | ||
| + | } | ||
| + | digitalWrite(buzzer,LOW); | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | digitalWrite(buzzer,LOW); | ||
| + | setColor(0, 255, 0); | ||
| + | lcd.setCursor(0, 0); | ||
| + | lcd.print("No Risk "); | ||
| + | lcd.setCursor(0, 11); | ||
| + | lcd.print("Glowing Green "); | ||
| + | } | ||
| + | delay(200); | ||
| + | } | ||
| </note> | </note> | ||