Differences

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

Link to this comparison view

pm:prj2025:fstancu:cosmin.tonita [2025/05/28 10:09]
cosmin.tonita [Hardware Design]
pm:prj2025:fstancu:cosmin.tonita [2025/05/28 10:38] (current)
cosmin.tonita [Software Design]
Line 92: 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 107: 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 118: 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);
pm/prj2025/fstancu/cosmin.tonita.1748416193.txt.gz · Last modified: 2025/05/28 10:09 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