хотите изменить код программы для кнопки pu sh на обычную кнопку - PullRequest
0 голосов
/ 15 февраля 2020

Итак, я работаю над системой обратной связи для домашней автоматизации , которая обновляет состояние физической кнопки, подключенной к вашей плате, на Blynk приложение, так что вы можете управлять своими огнями как вручную, так и через приложение. Я использую плату ESP32 . Состояние физической кнопки, подключенной к плате, определяется и отправляется на виртуальную кнопку. в приложении blynk, используя собственную логику c blynk, то есть param.asInt (). следовательно, я не могу использовать логи c обычного переключателя, например:

if (digitalRead(PUSH_BUTTON_1) == LOW) {
digitalWrite(RELAY_PIN_1, HIGH);

// Update Button Widget
Blynk.virtualWrite(VPIN_BUTTON_1, HIGH);}

, так как я должен использовать relay1State, который задан как param.asInt (); обновить приложение blynk. Также, если я использую этот тип кода, у меня возникают последовательные переключения в приложении blynk:

void checkPhysicalButton()
{
if (digitalRead(PUSH_BUTTON_1) == HIGH) {
  relay1State =!relay1State;
  digitalWrite(RELAY_PIN_1, relay1State);
  Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);

}

else {
    digitalWrite(RELAY_PIN_1, relay1State);
    Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);

 }}      

, поэтому я должен использовать свою логику состояния кнопки c, чтобы удалить последовательное переключение. Но я не могу использовать его в качестве переключателя «Нажмите для включения, отпустите для выключения». он работает как тумблер - «нажмите один раз, чтобы включить, и нажмите еще раз, чтобы выключить его». Я хочу изменить эту логику c на Нажать для включения, отпустить для отключения. Пожалуйста, помогите мне. Спасибо!

BLYNK_WRITE(VPIN_BUTTON_1) {
 relay1State = param.asInt();
 digitalWrite(RELAY_PIN_1, relay1State);
}

 void checkPhysicalButton()    
{
 if (digitalRead(PUSH_BUTTON_1) == LOW) {
    // pushButton1State is used to avoid sequential toggles
  if (pushButton1State != LOW) {

  // Toggle Relay state
  relay1State = !relay1State;
  digitalWrite(RELAY_PIN_1, relay1State);

  // Update Button Widget
  Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);
    }
  pushButton1State = LOW;
  } else {
pushButton1State = HIGH;
}  
...