serial monitor
- Войдите на сайт для отправки комментариев
Сб, 25/05/2019 - 01:06
Здравствуйте
Почему 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);
}
/////////////////////
}
А c чего ему печать 500? Вы как присвоили LED1 значение PB15 так оно и остается. А это явно не единица.
Потому что переменная LED1 никогда не будет равна 1.
1=HIGH= LED1 светит , 0= LOW = LED1 не светит
Вы нигде не присваиваете переменной LED1 единицу. Зажигание светодиода не означает, что в переменную запишется единица. Она хранит номер пина, а не его состояние.
LED1 = PB15
сделал так, печатает только а
if (LED1 == 1) { Serial.print("b"); } else { Serial.print("a"); } Serial.println();digitalWrite(LED1, 0) LED1 не светит
digitalWrite(LED1, 1); LED1 светит
Тут НЕТ присваивания, это передача аргументов в функцию. Читайте азы программирования.
значение 0 или 1
if (значение == 1) { Serial.print("b"); } else { Serial.print("a"); } Serial.println();значение 0 или 1
Значение передаётся в функцию digitalWrite, а не в переменную 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; 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); } ///////////////////// }Нет, получается if (PB15 == 1)
Valera19701
Спасибо, работает
Valera19701
Спасибо, работает
Не верю. код покажите.
Судя по обсуждению - вы ничего так и не поняли