Iarina-Ioana Popa, 332CA
Video Funcționalitate Completă https://www.youtube.com/shorts/vK7qDZlOeQ
Module hardware:
Module software - Arduino UNO:
Interacțiune între module:
Schema bloc:
Schema electrică pentru ușa
BOM:
Nr. | Componenta | Datasheet | Link Magazin |
---|---|---|---|
1 | Arduino UNO | Datasheet | Optimusdigital |
2 | Servo Motor | Datasheet | Optimusdigital |
3 | Senzor de apă | Datasheet | Optimusdigital |
4 | Senzor HC-SR04 | Datasheet | Optimusdigital |
5 | LED-uri | Datasheet | Optimusdigital |
6 | Buzzer activ | Datasheet | Optimusdigital |
7 | Buton | Datasheet | Optimusdigital |
8 | Fire de conexiune | - | Optimusdigital |
Librării și alte funcții:
Algoritmi și structuri de date:
digitalWrite(TRIGGER_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIGGER_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER_PIN, LOW); long duration = pulseIn(ECHO_PIN, HIGH); float distance = (duration * 0.034) / 2; return distance;
float distance = masoaraDistanta(); if (alarmActive) { if (!doorOpen) { doorServo.write(90); doorOpen = true; } return; } if (distance < 4.0 && !doorOpen) { doorServo.write(90); doorOpen = true; doorOpenTime = millis(); digitalWrite(BUZZER_PIN, HIGH); delay(100); digitalWrite(BUZZER_PIN, LOW); } if (doorOpen && !alarmActive && (millis() - doorOpenTime > 5000)) { doorServo.write(0); doorOpen = false; }
if (alarmActive) { alarmActive = false; // Opreste buzzer digitalWrite(BUZZER_PIN, LOW); // Stinge LED-urile analogWrite(LED1_PIN, 0); analogWrite(LED2_PIN, 0); analogWrite(LED3_PIN, 0); }
if (!alarmActive) { // Nu porni fade dacă e alarma fadeActive = true; fadeStep = 0; lastFadeUpdate = millis(); }
Pentru că unele acțiuni pot să le oprească pe altele, am setat și niște priorități. De exemplu, activarea alarmei de apă și activarea modului de urgență oprește toate celelalte funcționalități până când senzorul nu mai detectează umiditate.
if ((millis() - lastDebounceTime) > debounceDelay) {
// Daca starea s-a stabilizat if (reading != buttonCurrentState) { buttonCurrentState = reading; // Detecteaza tranzitia de la LOW la HIGH if (buttonCurrentState == HIGH) { // Butonul a fost apasat - porneste efectul fade startFade(); } }
Funcții implementate: Am organziat codul în funcții pentru înțelegrea mai ușoară. Acestea sunt câteva dintre ele
Cod sursă: https://github.com/iarinapopa13/Smart_Stairway_Access
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 Alin, 331CC → :pm:prj2009:cc:dumitru_alin.