Как изменить цикл
- Войдите на сайт для отправки комментариев
Сб, 06/02/2021 - 13:50
if (blinking())
{
// Заданная температура
static float temperature = 0;
temperature += 1;
if (temperature > 5) temperature = 2;
ds18b20.setTemperature(temperature);
Serial.println(temperature);
}
Приветствую! Посоветуйте как изменить цикл, чтобы вывод был от 1 до 5 и обратно. 1 2 3 4 5 4 3 2 1
Сейчас такой 123452345. Заранее спасибо, сильно не ругайте только начал разбиратьсяю
Никак. В приведённом огрызке кода нет никакого цикла.
Не знаю, код приведён не полностью, поэтому совершенно непонятно что там и как.
Почему? А как же подсказывать? Никак? Ну, ладно.
Так Вы поразбирайтесь маленько, а потом уж постите. Чего так неймётся-то?
int increment = 1; if (blinking()) { // Заданная температура static float temperature = 0; temperature += increment; if (temperature > 5 ) incremen = increment * -1;; ds18b20.setTemperature(temperature); Serial.println(temperature); }где то до цикла float dt=1.0;
7 строку надо изменить на temperature += dt;
в 09
if(temperature < 1)||(temperature > 5) dt = -dt;b707 в минуса уйдет ваш код ...
хотя нет он у вас сбрасывает инкримент в единицу перед if...
Вот весь код!
#include "OneWireHub.h" #include "DS18B20.h" // Digital Thermometer, 12bit constexpr uint8_t pin_led { 13 }; constexpr uint8_t pin_onewire { A1 }; auto hub = OneWireHub(pin_onewire); auto ds18b20 = DS18B20(DS18B20::family_code, 0x00, 0x00, 0xB2, 0x18, 0xDA, 0x00); // DS18B20: 9-12bit, -55 - +85 degC bool blinking(void); void setup() { Serial.begin(9600); Serial.flush(); pinMode(pin_led, OUTPUT); hub.attach(ds18b20); } void loop() { // следующая функция должна вызываться периодически hub.poll(); // эта часть предназначена только для отладки (USE_SERIAL_DEBUG в OneWire.h должен быть включен для вывода) if (hub.hasError()) hub.printError(); // Blink запускает изменение состояния if (blinking()) { // Заданная температура static float temperature = 0; temperature += 1; if (temperature > 5) temperature = 2; ds18b20.setTemperature(temperature); Serial.println(temperature); } } bool blinking(void) { constexpr uint32_t interval = 1000; // интервал мигания (миллисекунды) static uint32_t nextMillis = millis(); // будет сохранять в следующий раз, когда светодиод будет обновлен if (millis() > nextMillis) { nextMillis += interval; // сохраните в следующий раз, когда вы мигнете светодиодом static uint8_t ledState = LOW; // ledState используется для установки светодиода if (ledState == LOW) ledState = HIGH; else ledState = LOW; digitalWrite(pin_led, ledState); return 1; } return 0; }Похоже библиотека сра...странная
Смените, и будет Вам щастье!