serial monitor

gena321
Offline
Зарегистрирован: 19.01.2019

Здравствуйте 

Почему serial печатает только 1000, должен  печатать 500, когда LED1 светит ?

int LED1 = PB15;
int button = PB12;
//int button = PB12;
int LED2 = PC13;

boolean LED1State = false;
boolean LED2State = false;

long buttonTimer = 0;
//long longPressTime = 250;
long longPressTime = 1000;

boolean buttonActive = false;
boolean longPressActive = false;

void setup()
{
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  //pinMode(button, INPUT);
  pinMode(button, INPUT_PULLDOWN);
  //Serial.begin(115200);
  Serial.begin(9600);
}

void loop()
{
  
  if (digitalRead(button) == HIGH)
  {
    if (buttonActive == false)
    {
      buttonActive = true;
      buttonTimer = millis();
    }

    if ((millis() - buttonTimer > longPressTime) && (longPressActive == false))
    {
      longPressActive = true;
      digitalWrite(LED1, 1);
    }
  }
  else
  {
    digitalWrite(LED1, 0);
    if (buttonActive == true)
    {
      if (longPressActive == true)
      {
        longPressActive = false;
      }
      else
        buttonActive = false;
    }
  }
  ////////////////////////
  if (LED1 == 1)

  {
    Serial.println(500);
  }
  else
  {
    Serial.println(1000);
  }
  /////////////////////
}

 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А c чего ему печать 500? Вы как присвоили LED1 значение PB15 так оно и остается. А это явно не единица.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Потому что переменная LED1 никогда не будет равна 1.

gena321
Offline
Зарегистрирован: 19.01.2019

1=HIGH= LED1 светит , 0= LOW = LED1 не светит

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Вы нигде не присваиваете переменной LED1 единицу. Зажигание светодиода не означает, что в переменную запишется единица. Она хранит номер пина, а не его состояние.

LED1 = PB15

gena321
Offline
Зарегистрирован: 19.01.2019
digitalWrite(LED1, 0) LED1 не светит
digitalWrite(LED1, 1); LED1  светит

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015
digitalWrite(номер пина, значение);

 

gena321
Offline
Зарегистрирован: 19.01.2019

сделал так, печатает  только а

 

 if (LED1 == 1)

  {
    Serial.print("b");
  }
  else
  {
    Serial.print("a");
  }

  Serial.println();

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

gena321 пишет:

digitalWrite(LED1, 0) LED1 не светит
digitalWrite(LED1, 1); LED1  светит

Тут НЕТ присваивания, это передача аргументов в функцию. Читайте азы программирования.

gena321
Offline
Зарегистрирован: 19.01.2019

Valera19701 пишет:

digitalWrite(номер пина, значение);

 

значение 0 или 1

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015
if (значение == 1)

 {
   Serial.print("b");
 }
 else
 {
   Serial.print("a");
 }

 Serial.println();

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

gena321 пишет:

значение 0 или 1

Значение передаётся в функцию digitalWrite, а не в переменную LED1.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015
int LED1 = PB15;
int button = PB12;
//int button = PB12;
int LED2 = PC13;

boolean LED1State = false;
boolean LED2State = false;

long buttonTimer = 0;
//long longPressTime = 250;
long longPressTime = 1000;

boolean buttonActive = false;
boolean longPressActive = false;

void setup()
{
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  //pinMode(button, INPUT);
  pinMode(button, INPUT_PULLDOWN);
  //Serial.begin(115200);
  Serial.begin(9600);
}

void loop()
{
  
  if (digitalRead(button) == HIGH)
  {
    if (buttonActive == false)
    {
      buttonActive = true;
      buttonTimer = millis();
    }

    if ((millis() - buttonTimer > longPressTime) && (longPressActive == false))
    {
      longPressActive = true;
      LED1State = 1;
      digitalWrite(LED1, LED1State);
    }
  }
  else
  {
    LED1State = 0;
    digitalWrite(LED1, LED1State);
    if (buttonActive == true)
    {
      if (longPressActive == true)
      {
        longPressActive = false;
      }
      else
        buttonActive = false;
    }
  }
  ////////////////////////
  if (LED1State == 1)

  {
    Serial.println(500);
  }
  else
  {
    Serial.println(1000);
  }
  /////////////////////
}

 

gena321
Offline
Зарегистрирован: 19.01.2019
 
получаеться
if (1 == 1) 

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Нет, получается if (PB15 == 1)

gena321
Offline
Зарегистрирован: 19.01.2019

Valera19701

Спасибо, работает 

b707
Offline
Зарегистрирован: 26.05.2017

gena321 пишет:

Valera19701

Спасибо, работает 

Не верю. код покажите.

Судя по обсуждению - вы ничего так и не поняли