Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:fstancu:cosmin.tonita [2025/05/27 19:20]
cosmin.tonita [Bibliografie/Resurse]
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>​+
  
 +Demo sistem final:
 +[[https://​youtu.be/​E7gNnOIGIbs]]
  
  
pm/prj2025/fstancu/cosmin.tonita.1748362836.txt.gz · Last modified: 2025/05/27 19:20 by cosmin.tonita
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0