This shows you the differences between two versions of the page.
|
pm:prj2025:fstancu:cosmin.tonita [2025/05/25 23:13] cosmin.tonita [Software Design] |
pm:prj2025:fstancu:cosmin.tonita [2025/05/28 10:38] (current) cosmin.tonita [Software Design] |
||
|---|---|---|---|
| Line 56: | Line 56: | ||
| **Cablaj (Breadboard)** | **Cablaj (Breadboard)** | ||
| - | {{:pm:prj2025:fstancu:breadboard_tonita_cosmin.jpeg?500 |}} | + | {{:pm:prj2025:fstancu:breadboard_tonita_cosmin.jpeg?400 |}} |
| + | |||
| + | |||
| + | |||
| + | **Cablaj (Protoboard)** | ||
| + | |||
| + | |||
| + | |||
| + | {{:pm:prj2025:fstancu:proto-tonita-cosmin.jpeg?400|}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 84: | Line 92: | ||
| lcd.setCursor(0, 1); | lcd.setCursor(0, 1); | ||
| lcd.print("System Ready "); | lcd.print("System Ready "); | ||
| + | </code> | ||
| + | |||
| + | - Operatii GPIO cu registri | ||
| + | |||
| + | <code> | ||
| + | #define FLOAT_SENSOR_MASK (1ULL << floatSensorPin) | ||
| + | #define PUMP_PIN_MASK (1ULL << PumpPin) | ||
| + | #define VALVE_PIN_MASK (1ULL << ValvePin) | ||
| + | |||
| + | gpio_config_t io_conf = {}; | ||
| + | io_conf.intr_type = GPIO_INTR_DISABLE; | ||
| + | io_conf.mode = GPIO_MODE_INPUT; | ||
| + | io_conf.pin_bit_mask = FLOAT_SENSOR_MASK; | ||
| + | io_conf.pull_up_en = GPIO_PULLUP_ENABLE; | ||
| + | gpio_config(&io_conf); | ||
| + | |||
| + | bool readFloatSensorRegister() { | ||
| + | uint32_t gpio_input = REG_READ(GPIO_IN_REG); | ||
| + | return (gpio_input & FLOAT_SENSOR_MASK) != 0; | ||
| + | } | ||
| + | |||
| + | void setPumpRegister(bool state) { | ||
| + | if (state) { | ||
| + | REG_WRITE(GPIO_OUT_W1TS_REG, PUMP_PIN_MASK); // Set bit | ||
| + | } else { | ||
| + | REG_WRITE(GPIO_OUT_W1TC_REG, PUMP_PIN_MASK); // Clear bit | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void setValveRegister(bool state) { | ||
| + | if (state) { | ||
| + | REG_WRITE(GPIO_OUT_W1TS_REG, VALVE_PIN_MASK); | ||
| + | } else { | ||
| + | REG_WRITE(GPIO_OUT_W1TC_REG, VALVE_PIN_MASK); | ||
| + | } | ||
| + | } | ||
| </code> | </code> | ||
| Line 99: | Line 143: | ||
| } | } | ||
| - | digitalWrite(valveRelayPin, HIGH); // închide electrovalvă | + | setPumpRegister(true); // porneste pompa |
| - | digitalWrite(pumpRelayPin, HIGH); // pornește pompă | + | setValveRegister(false); // inchide electrovalva |
| - | digitalWrite(valveRelayPin, LOW); // deschide electrovalvă | + | setPumpRegister(false); // opreste pompa |
| - | digitalWrite(pumpRelayPin, LOW); // oprește pompă | + | setValveRegister(true); // deschide electrovalva |
| </code> | </code> | ||
| Line 110: | Line 154: | ||
| pinMode(capSensorPin, INPUT); | pinMode(capSensorPin, INPUT); | ||
| - | int floatState = digitalRead(floatSensorPin); | + | bool floatState = readFloatSensorRegister(); |
| - | int capacitiveValue = analogRead(capSensorPin); | + | uint32_t capacitiveValue = readCapacitiveSensorRegister(); |
| bool flood = (floatState == HIGH) || (capacitiveValue > 400); | bool flood = (floatState == HIGH) || (capacitiveValue > 400); | ||
| Line 166: | Line 210: | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| - | <note tip> | + | {{:pm:prj2025:fstancu:final-tonita-cosmin.jpeg?400|}} |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| - | </note> | + | |
| - | + | ||
| - | ===== Concluzii ===== | + | |
| - | + | ||
| - | ===== Download ===== | + | |
| - | + | ||
| - | <note warning> | + | |
| - | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi 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 Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | |
| - | </note> | + | |
| - | + | ||
| - | ===== Jurnal ===== | + | |
| - | <note tip> | + | Demo sistem final: |
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | [[https://youtu.be/E7gNnOIGIbs]] |
| - | </note> | + | |
| - | ===== Bibliografie/Resurse ===== | ||
| - | <note> | ||
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
| - | </note> | ||
| <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> | ||