Почему LED моргает?

gena321
Offline
Зарегистрирован: 19.01.2019
Добрый день.
Когда подаваемое на вход напряжение  растет LED включается, когда уменьшается выключается, но когда  напряжение не меняется LED должен быть выключен но он моргает из за помех микроконтроллера stm32 строка #36,   добавил строчку #38 , но ЛЕД дальше моргает 
Как исправить ? 
int currentValue;
int previousValue;
int analogPin = PB0;
int volt;
int LED =  PB14;


#include <LiquidCrystal.h>
LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5);


void setup() {


  pinMode(PB0, INPUT);
  pinMode(PB14, OUTPUT);
  lcd.begin(16, 2);
}


void loop() {


  float volt = analogRead(PB0);
  volt = (volt * 3.3) / 4095.0;
  //volt = (volt * 3.3);
  lcd.setCursor(0, 0);
  lcd.print(volt);
  delay(200);


  previousValue = currentValue;  // store what was read last time
  currentValue = analogRead(analogPin);  // get a new reading


 // if ( currentValue > previousValue   ) // LED ON if voltage increasing
 
  if( (currentValue - previousValue)  > 0.2)//0.2В , На ЛСД помехи меньше 0.1


   // if( (currentValue - previousValue)  > 0.8)
      


  {
    digitalWrite(PB14, 1);
  }
  else
  {
    digitalWrite(PB14, 0);
  }
}

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Какой тип переменной будет у результата в выражении (currentValue - previousValue) ?

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

sadman41 пишет:

Какой тип переменной будет у результата в выражении (currentValue - previousValue) ?

На вход подаём 1В и не меняем его, так как поехи  меньше 0.1В разница всегда будет меньше 0.2В значит ЛЕД тё должен включаться .
Пробовал 0.8 = тоже самое .
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Гена, попытайтесь все-таки ответить на заданный в №1 вопрос.

gena321
Offline
Зарегистрирован: 19.01.2019
currentValue = 1В
previousValue = 1В 
помеха +/- 0.05 В 
(currentValue +/- 0.05) - (previousValue +/- 0.05) = 0 В почти.
Так как помехи не синхронные разница будет не 0 В но не больше 0.2 В или  0.8В .
 
strarbit
strarbit аватар
Offline
Зарегистрирован: 12.06.2016

you must declare variables as float

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

I disabled line #1 and # 2 and put

float currentValue;
float previousValue;

 in beginning of the loop, lines 22 and 23, the LED is all the time on.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

gena321 пишет:

currentValue = 1В
previousValue = 1В 
помеха +/- 0.05 В 
(currentValue +/- 0.05) - (previousValue +/- 0.05) = 0 В почти.
Так как помехи не синхронные разница будет не 0 В но не больше 0.2 В или  0.8В .
 

Гена, и currentValue, и previousValue у Вас совсем не в вольтах.

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

Гена, вы даже этот крохотный скетч где-то скачали и не понимаете в нем ни строчки? Начинайте уже писать СВОИ программы - будет хотя бы проще разбираться.

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

andriano пишет:

gena321 пишет:

currentValue = 1В
previousValue = 1В 
помеха +/- 0.05 В 
(currentValue +/- 0.05) - (previousValue +/- 0.05) = 0 В почти.
Так как помехи не синхронные разница будет не 0 В но не больше 0.2 В или  0.8В .
 

Гена, и currentValue, и previousValue у Вас совсем не в вольтах.

это я пропустил , Спасибо работает