This shows you the differences between two versions of the page.
pm:prj2024:vstoica:costin.bosoaga [2024/05/09 16:41] costin.bosoaga |
pm:prj2024:vstoica:costin.bosoaga [2024/05/22 22:35] (current) costin.bosoaga [Software Design] |
||
---|---|---|---|
Line 14: | Line 14: | ||
Proiectul este realizat cu ajutorul unui Arduino UNO, un senzor ultrasonic, un buzzer care suna in momentul in care este detectat un obiect destul de aproape, cateva LED-uri care lumineaza in functie de distanta si o rezistenta de 1k ohm, un display LCD pe care este afisat nivelul pericolului. | Proiectul este realizat cu ajutorul unui Arduino UNO, un senzor ultrasonic, un buzzer care suna in momentul in care este detectat un obiect destul de aproape, cateva LED-uri care lumineaza in functie de distanta si o rezistenta de 1k ohm, un display LCD pe care este afisat nivelul pericolului. | ||
</note> | </note> | ||
+ | |||
+ | |||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 28: | Line 30: | ||
</note> | </note> | ||
+ | ===== Schema electrica ===== | ||
+ | {{ :pm:prj2024:vstoica:security_alarm_schematic.png?800 |}} | ||
+ | {{ :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> | ||