#define D0 34
#define D1 35
#define Persiana 22
#define direccion 21
bool estadoD0=true;
bool estadoD1=true;
void IRAM_ATTR D0Pressed()
{
if(estadoD0)
{
digitalWrite(direccion, LOW); //subir
digitalWrite(Persiana,HIGH);
}
else
{
digitalWrite(Persiana,LOW);
}
estadoD0=!estadoD0;
}
void IRAM_ATTR D1Pressed()
{
if(estadoD1)
{
digitalWrite(direccion, HIGH); //bajar
analogWrite(Persiana,127);
}
else
{
analogWrite(Persiana,0);
}
estadoD1=!estadoD1;
}
void setup()
{
pinMode(D0,INPUT_PULLUP);
pinMode(D1, INPUT_PULLUP);
pinMode(Persiana, OUTPUT);
pinMode(direccion, OUTPUT);
attachInterrupt(digitalPinToInterrupt(D0), D0Pressed, RISING);
attachInterrupt(digitalPinToInterrupt(D1), D1Pressed, CHANGE);
}
void loop()
{
delay(10);
}