прошу помочь с WeMos D1 mini

skm
Offline
Зарегистрирован: 01.07.2016

здравствуйте форумчане подскажите где не прав ? при нажатии должен гореть диод ,а он все время горит.пользуюсь wemosd1 mini

код

int val=0;
void setup() 
{
  // put your setup code here, to run once:
   pinMode(D4, OUTPUT);
}

 void loop()
{
  if(digitalRead(D3)==HIGH)//если кнопка нажата ... 
{
   digitalWrite(D4,HIGH);//включаем светодиод
   val++;// прибавляем к переменной 1 при каждой смене цикла. 
   delay(500);
   }
   else//если не нажата...
    {
         val=0;
    }            
        if(val>=5)
   {
  digitalWrite(D4,!digitalRead(D4));//инвертируем состояние пина
         val=0; 
   }
   
   }

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015
digitalWrite(D4,digitalRead(D3));

И не сношать мозг :) Когда на кнопке HIGH - на диоде тоже HIGH, и наоборот.

T.Rook
Offline
Зарегистрирован: 05.03.2016

А давайте посмотрим, когда же D4 в LOW?

и?

ответ тут:

а в LOW он будет лишь один loop и то только когда кнопка нажата!

Ну или если Вы смогли отпустить кнопку ровно в момент когда val стало 6! 

 

skm
Offline
Зарегистрирован: 01.07.2016

Спасибо за помощь
А так правильно ли я поставил реле?
int val=0;
int Relay = D2
void setup()

{
{
pinMode(Relay, OUTPUT);

pinMode(D4, OUTPUT);

}

void loop()

{

ifdigitalWrite(D4,digitalRead(D3))//если кнопка нажата ...включаем светодиод
{

val++;// прибавляем к переменной 1 при каждой смене цикла.

delay(500);

}

else//если не нажата...

{

val=0;

}

if(val>=5)
else//

{
digitalWrite(Relay, LOW); // реле включено
delay(2000);
digitalWrite(Relay, HIGH); // реле выключено
delay(2000);
}
{

digitalWrite(D4,!digitalRead(D4));//инвертируем состояние пина

val=0;
}
}

}