как реализовать задержку?
- Войдите на сайт для отправки комментариев
Чт, 21/02/2019 - 16:01
Всем здравствуйте. Я сделал 2 теромометра и индикатор заряда аккумулятра.
Дела в том что заряд показывает в процентах и она постоянно скачет (может я не совсем правильно саписал код программы, но это не суть, работает и ладно) где то на 5 %. Так вот как сделать задержку заряда аккумулятора, но при этом не делать задержку на термометр?

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <OneWire.h>
#include <DallasTemperature.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);
#define DS18B20 2 // Провод данных подключен к порту 2 на Arduino
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float out = 0.0;
float R1 = 100000.0; // сопротивление R1 (100K)
float R2 = 10000.0; // сопротивление R2 (10K)
float v_max = 4.2; // max напряжение
int value = 0;
OneWire oneWire(DS18B20);
DallasTemperature sensors(&oneWire);
void setup() {
pinMode(analogInput, INPUT);
display.begin(); // инициализация и очистка дисплея
display.clearDisplay();
display.display();
display.setContrast(50); // установка контраста
}
void loop() {
float temp_1 = 0.0;
float temp_2 = 0.0;
temp_1 = sensors.getTempCByIndex(1); // дом
temp_2 = sensors.getTempCByIndex(0); // улица
sensors.requestTemperatures(); // Считываем показания температуры
display.setTextSize(1); // установка размера шрифта
display.setTextColor(BLACK); // установка цвета текста
display.setCursor(0,3); // установка курсора
display.println("street");
display.setCursor(48,3); // установка курсора
display.println("house");
// температура в доме
display.setCursor(36,13); // установка курсора
display.setTextSize(2); // установка размера шрифта
display.println(temp_1,1);
// температура на улице
display.setCursor(0,31); // установка курсора
display.println(temp_2,1);
// заряд батареи
value = analogRead(analogInput);
vout = (value * 5.0) / 1024.0;
vin = vout / (R2/(R1+R2));
if (vin<2.75) // min заряд аккумулятрора
{
vin=0;
}
out = (vin*100) / v_max;
if (out>100) {
out=100;
}
display.setTextSize(1); // установка размера шрифта
display.setCursor(78,38); // установка курсор
display.println("%");
if (out == 100) {
display.setCursor(58,38); // установка курсора
display.println(out,0);
}
else if (out > 9) {
display.setCursor(64,38); // установка курсора
display.println(out,0);
}
else {
display.setCursor(70,38); // установка курсора
display.println(out,0);
}
display.display();
display.clearDisplay(); // очистка дисплея
}
Ветка "Проекты" предназначена для представления готовых проектов.
как сделать задержку заряда аккумулятора, но при этом не делать задержку на термометр?
1-й способ
Заводите переменную. перед тем как заняться чтением батареи и выводом заряда увеличиваете на 1. И проверяете не достигла ли она определенного значения, скажем >=1000 (подберете экспериментально) если нет, то всю дальнейшую часть пропускаете. Если да, то меряете и показываете, а переменную сбрасываете в 0
2-й Способ
Примерно как 1-й только в качестве условия используете millis()