Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Agustín Senen Gonzalez
- #define PIN_BOMBA 14
- #define CONFIG_BOMBA pinMode(PIN_BOMBA, OUTPUT)
- #define EncenderBomba digitalWrite(PIN_BOMBA, HIGH)
- #define ApagarBomba digitalWrite(PIN_BOMBA, LOW)
- #define PIN_TQ_VACIO 9
- #define CONFIG_TQ_VACIO pinMode(PIN_TQ_VACIO, INPUT)
- #define TanqueVacio digitalRead(PIN_TQ_VACIO)
- #define PIN_TQ_LLENO 8
- #define CONFIG_TQ_LLENO pinMode(PIN_TQ_LLENO, INPUT)
- #define TanqueLleno digitalRead(PIN_TQ_LLENO)
- #define PIN_CISTERNA_VACIA 10
- #define CONFIG_CISTERNA_VACIA pinMode(PIN_CISTERNA_VACIA, INPUT)
- #define CisternaVacia digitalRead(PIN_CISTERNA_VACIA)
- #define PIN_FORZAR_LLENADO 11
- #define CONFIG_FORZAR_LLENADO pinMode(PIN_FORZAR_LLENADO, INPUT)
- #define ForzarLlenado digitalRead(PIN_FORZAR_LLENADO)
- #define PIN_LED_TEST 13
- #define CONFIG_LED_TEST pinMode(PIN_LED_TEST, OUTPUT)
- #define EncenderLed digitalWrite(PIN_LED_TEST, HIGH)
- #define ApagarLed digitalWrite(PIN_LED_TEST, LOW)
- #define TApagado 5000
- #define TEncendido 50
- #define TLlenado 5000
- bool modoAutomatico = true;
- bool bombaEncendida = false;
- unsigned long tiempoInicioBomba = 0;
- void setup() {
- CONFIG_BOMBA;
- CONFIG_TQ_LLENO;
- CONFIG_TQ_VACIO;
- CONFIG_CISTERNA_VACIA;
- CONFIG_FORZAR_LLENADO;
- CONFIG_LED_TEST;
- Serial.begin(9600);
- Serial.println("Nombre: Agustin");
- Serial.println("Apellido: Senen Gonzalez");
- }
- void loop()
- {
- LedTest();
- CtrlEncendido();
- CtrlApagado();
- rxSerie();
- }
- void CtrlEncendido() {
- bool tanqueVacio = TanqueVacio;
- bool cisternaVacia = CisternaVacia;
- bool forzarLlenado = ForzarLlenado;
- if ((modoAutomatico && tanqueVacio && !cisternaVacia) || forzarLlenado) {
- bombaEncendida = true;
- tiempoInicioBomba = millis();
- txSerie("Inició el Llenado");
- }
- if (bombaEncendida) {
- EncenderBomba;
- } else {
- ApagarBomba;
- }
- }
- void CtrlApagado() {
- if (TanqueLleno || CisternaVacia || (millis() - tiempoInicioBomba > TLlenado)) {
- if (bombaEncendida) {
- bombaEncendida = false;
- ApagarBomba;
- unsigned long tiempoLlenado = (millis() - tiempoInicioBomba) / 1000;
- txSerie("Finalizó el llenado. Tardó " + String(tiempoLlenado) + " segundos en llenarlo.");
- }
- if (millis() - tiempoInicioBomba > TLlenado) {
- modoAutomatico = false;
- txSerie("Tiempo de seguridad alcanzado. Pasando a modo MANUAL.");
- }
- }
- }
- void rxSerie() {
- if (Serial.available()) {
- char comando = Serial.read();
- if (comando == 'A' || comando == 'a') {
- modoAutomatico = true;
- txSerie("Modo AUTOMÁTICO activado.");
- } else if (comando == 'M' || comando == 'm') {
- modoAutomatico = false;
- txSerie("Modo MANUAL activado.");
- } else if (comando == 'X' || comando == 'x') {
- bombaEncendida = true;
- tiempoInicioBomba = millis();
- }
- }
- }
- void txSerie(String mensaje) {
- Serial.println(mensaje);
- }
- void LedTest() {
- static unsigned long millis_ant = 0;
- static bool estado_led = false;
- static int ms_espera = TApagado;
- if (millis() - millis_ant < ms_espera) return;
- millis_ant = millis();
- estado_led = !estado_led;
- digitalWrite(PIN_LED_TEST, estado_led);
- ms_espera = estado_led ? TEncendido : TApagado;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement