TP4056 + LiPo + arduino nano, помогите со скетчем!

dreadorigin
Offline
Зарегистрирован: 26.09.2018

Доброго времени. Нужно вывести значение вольтажа аккумулятора с помощью зарядного модуля TP4056. Видел пару примеров, но ни один нормально не работает.

В частности: 

----------------------------------------------------------------

int analog_value = analogRead(A3);
   input_voltage = (analog_value * 5.0) / 1024.0; 
 
   
   if (input_voltage < 0.1) 
   {
     input_voltage=0.0;
   } 
 
-----------------------------------------------------------------
 
У меня при любо подключении выводит 5.0 и все, даже если аккума нету. Иногда бывает скачет от 4.8-5.1 резко.  Может есть еще какие-нибудь способы вывода показаний? Мне надо в углу oled дисплея видеть состояние заряда!)
sadman41
Offline
Зарегистрирован: 19.10.2016

Подключении куда, как... Мультиметр что показывает?

bwn
Offline
Зарегистрирован: 25.08.2014

Да и скетч бы целиком неплохо. Только по правилам форума.

dreadorigin
Offline
Зарегистрирован: 26.09.2018

Да я в целом интересуюсь, как можно при таком наборе осуществить эту задачу. Может у кого есть свои версии этого?

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

dreadorigin пишет:

Да я в целом интересуюсь, как можно при таком наборе осуществить эту задачу. Может у кого есть свои версии этого?

В целом - можно. Говоря в общем - нет никаких проблем. :)

а если рассматривать детали - нужен скетч и схема

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Ну пока схемы нет - оптимизируем код:

float   input_voltage = (analogRead(A3) * 5.0) / 1024.0; 
 
   
   if (input_voltage < 0.1) 
   {
     input_voltage=0.0;
   } 

 

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

mykaida пишет:

Ну пока схемы нет - оптимизируем код:

float   input_voltage = (analogRead(A3) * 5.0) / 1024.0; 
 
   
   if (input_voltage < 0.1) 
   {
     input_voltage=0.0;
   } 

 

И где здесь оптимизация?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А если вход замкнуть на землю тоже 5 Вольт показывает?
А если на вход подать 3.3 Вольта с платы?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

andriano]</p> <p>[quote=mykaida пишет:

И где здесь оптимизация?

Ну как же, сударь - минус 1 строка программы и минус 1 переменная.

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

mykaida]</p> <p>[quote=andriano пишет:

mykaida пишет:

И где здесь оптимизация?

Ну как же, сударь - минус 1 строка программы и минус 1 переменная.

Это Вам так кажется.

Откомпилируйте оба варианта и убедитесь, что результат окажется одним и тем же.

А теперь подумайте: analogRead() возвращает неотрицательное число. Умножение и деление на положительные знак изменить никак не может. Следовательно, проверка на отрицательное - лишняя. Ее можно (и нужно) убрать. Вот это - реальная оптимизация.

nik182
Offline
Зарегистрирован: 04.05.2015

Нет здесь проверки на отрицательно то. Здесь зануление малых значений.

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

nik182 пишет:
Нет здесь проверки на отрицательно то. Здесь зануление малых значений.
Да, был невнимателен.

Но хотелось бы знать: зануление - зачем?

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

andriano пишет:

Но хотелось бы знать: зануление - зачем?

такой простенький фильтр... чтобы ноль на шкале не прыгал

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

Ну да - не так важно, что на самом деле измеряет, главное - чтобы красиво показывал.

dreadorigin
Offline
Зарегистрирован: 26.09.2018

https://www.youtube.com/watch?v=oRFjaCjuJkQ&t=0s&index=21&list=LLDYxZvamMOyz2mE_S70jumg

Во народ, чтобы вот так выводить значение. Автор скетч не приложил. Может кто знает код?) 

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

dreadorigin пишет:

https://www.youtube.com/watch?v=oRFjaCjuJkQ&t=0s&index=21&list=LLDYxZvamMOyz2mE_S70jumg

Во народ, чтобы вот так выводить значение. Автор скетч не приложил. Может кто знает код?) 

код элементарный. Берите примеры работы с дисплеем и допиливайте. А ту зря флеймить нечего.

Или пожалуйте в платный раздел - за пару дней или пару часов вам все напишут в лучшем виде.