как реализовать задержку?
- Войдите на сайт для отправки комментариев
Чт, 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()