#include <Arduino.h>
// https://wokwi.com/projects/408430342123937793
// VERSÃO_5 DutyCycle_3

// Definições de pinos
const int LSH1 = 18; // Chave de nível alto
const int SV1 = 23; // Válvula SV1
const int BUZZER = 14; // Buzzer
const int PWM_PIN = 21; // GPIO para o sinal quadrado

void setup() {
  Serial.begin(115200);

  pinMode(LSH1, INPUT);
  pinMode(SV1, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  pinMode(PWM_PIN, OUTPUT); // Configura o pino PWM_PIN como saída

  digitalWrite(SV1, HIGH); // Inicializa SV1 abre
  digitalWrite(BUZZER, LOW); // Silencia alarme 
}

void loop() {
  // Verifica o estado de LSH1
  if (digitalRead(LSH1) == HIGH) {
    digitalWrite(PWM_PIN, LOW); // Se LSH1 estiver HIGH, desabilita PWM_PIN
  } else {
    digitalWrite(PWM_PIN, HIGH); // Se LSH1 estiver LOW, habilita PWM_PIN
  }

  // Gera um sinal quadrado de 50 Hz se PWM_PIN estiver habilitado
  if (digitalRead(PWM_PIN) == HIGH) {
    digitalWrite(PWM_PIN, HIGH);
    delayMicroseconds(100000); // 20 ms HIGH
    digitalWrite(PWM_PIN, LOW);
    delayMicroseconds(100000); // 20 ms LOW
  }

  // BLOCO 1 DE INÍCIO
  Serial.println("Iniciando o programa...");

  // BLOCO 6 DE DECISÃO (LSH1 == 0)
  if (digitalRead(LSH1) == 0) {
    Serial.println(" ");
    digitalWrite(SV1, HIGH);
    Serial.println("SV1 aberta");
    digitalWrite(BUZZER, LOW);   
  } else {
    Serial.println("**1 defeito na boia");
    digitalWrite(SV1, LOW);
    Serial.println("SV1 fechada");
    digitalWrite(BUZZER, HIGH);
    
    return; // Volta para o início
  }

  // BLOCO 13 DE DECISÃO (SV1 == 1)
  if (digitalRead(SV1) == LOW) {
    Serial.println("SV1 fechada");
    digitalWrite(SV1, HIGH);
    Serial.println("SV1 aberta");
  }

  delay(10); // Delay para evitar sobrecarga do loop

}
// freq    vlrs	    ms       μs	    Duty Cicle 	time ON	   time OF	
//   1   1,0000  1000,0  1000000       50%       500000     500000 
//   4   0,2500	  250,0   250000	     50%       125000 	  125000  	
//   5   0,2000  	200,0	  200000	     50%	     100000	    100000
//  10   0,1000	  100,0	  100000	     50%	      50000	     50000	
//  20   0,0500	   50,0	   50000	     50%	      25000	     25000	
//  25   0,0400	   40,0	   40000	     50%	      20000	     20000
//  50   0,0200    20,0	   20000	     50%	      10000	     10000
// 100	 0,0100	   10,0	   10000	     50%	       5000	      5000
// 200	 0,0050	    5,0	    5000	     50%	       2500	      2500
// 300	 0,0033	    3,3	    3333	     50%	       1667  	    1667
// 400	 0,0025	    2,5     2500	     50%	       1250       1250
//1000	 0,0010	    1,0 	  1000       50%	        500   	   500
$abcdeabcde151015202530354045505560fghijfghij
NOCOMNCVCCGNDINLED1PWRRelay Module