#1 Re: Програмування Arduino » зависимости от температуры датчика DS18B20 менялись огоньки на LED » 2020-12-07 22:57:30

vvr пише:

отформатировать код CTRL + T
вставить - в поле ответа справа вверху есть окно Code (при наведении курсора высвечивается)

Так?

#include <OneWire.h>
/*
  Описание взаимодействия с цифровым датчиком ds18b20
  Подключение ds18b20 к ардуино через пин 8
*/
OneWire ds(8); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком
byte i; // задаю переменную для цифровых выходов
byte LedMin = 2; // первый пин со светодиодом
byte LedMax = 11; // последний пин со светодиодом
#define LED_ON 200


void setup() {
  Serial.begin(9600);
  for (int i = LedMin; i <= LedMax; i++);
  pinMode(i, OUTPUT);
}

void loop() {

  // Определяем температуру от датчика DS18b20
  byte data[2]; // Место для значения температуры
  ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
  ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство
  ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память

  delay(1000); // Микросхема измеряет температуру, а мы ждем.

  ds.reset(); // Теперь готовимся получить значение измеренной температуры

  ds.write(0xCC);
  ds.write(0xBE); // Просим передать нам значение регистров со значением температуры

  data[0] = ds.read(); // Читаем младший байт значения температуры
  data[1] = ds.read(); // А теперь старший

  float temperature = ((data[1] << 8) | data[0]) * 0.0625;

  // Выводим полученное значение температуры в монитор порта
  Serial.println(temperature);

  // Теперь управляем шкалой с помощью датчика температуры DS18b20

  //поочередное включение всех ножек на LED_ON миллисекунд
  //начиная с LED1, заканчивая LED10
  //сохранение в переменную результата работы map(),
  //которая вернет значение, считанное с аналогового входа,
  //и пропорционально отмасштабированное из диапазона 0-1023
  //в диапазон 2-11
  int lastLed = map(temperature, 0, 70, LedMin, LedMax);
  for (int i = LedMin; i <= LedMax; i += 1)
  {
    digitalWrite(i, HIGH);
    delay(LED_ON);
    digitalWrite(i, LOW);
  }

}

#2 Re: Програмування Arduino » зависимости от температуры датчика DS18B20 менялись огоньки на LED » 2020-12-07 22:17:18

г0сть пише:

delay это конечно зло, но в данном случае проблема не в этом. ТС определитесь сначала что вам нужно - бегающие огоньки или свечение конкретных индикаторов?

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

#3 Re: Програмування Arduino » зависимости от температуры датчика DS18B20 менялись огоньки на LED » 2020-12-07 22:04:00

vvr пише:

1. вставляйте правильно код и форматируйте перед этим.
2. измерение температуры у вас с секундной задержкой, поэтому нормально работать не будет.
   используйте миллис.

а как правильно это сделать? Помогите пожалуйста. Я в этом деле новичок(

#5 Програмування Arduino » зависимости от температуры датчика DS18B20 менялись огоньки на LED » 2020-12-06 00:07:07

Alex135102000
відповідей: 9

Здравствуйте. У меня стоит задача написать скетч для схемы так, чтобы в зависимости от температуры датчика DS18B20 менялись огоньки на LED-BARGRAPH-GRN. К примеру если температура 0-30 то горят огоньки которые подключены к выходам 2-4 платы Ардуино
а если выше или меньше то другие огоньки индикатора LED и т.д. Код который я подключаю к схеме бегают огоньки выходов а зелёные индикаторы нет. Как его правильно изменить подскажите пожалуйста
#include <OneWire.h>
/*
* Описание взаимодействия с цифровым датчиком ds18b20
* Подключение ds18b20 к ардуино через пин 8
*/
OneWire ds(8); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком
byte i; // задаю переменную для цифровых выходов
byte LedMin = 2; // первый пин со светодиодом
byte LedMax = 11; // последний пин со светодиодом
#define LED_ON 200


void setup(){
Serial.begin(9600);
for(int i= LedMin; i <= LedMax; i++);
pinMode(i, OUTPUT);
}

void loop(){

// Определяем температуру от датчика DS18b20
byte data[2]; // Место для значения температуры
ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство
ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память

delay(1000); // Микросхема измеряет температуру, а мы ждем.

ds.reset(); // Теперь готовимся получить значение измеренной температуры

ds.write(0xCC);
ds.write(0xBE); // Просим передать нам значение регистров со значением температуры

data[0] = ds.read(); // Читаем младший байт значения температуры
data[1] = ds.read(); // А теперь старший

float temperature = ((data[1] << 8) | data[0])* 0.0625;

// Выводим полученное значение температуры в монитор порта
Serial.println(temperature);

// Теперь управляем шкалой с помощью датчика температуры DS18b20

//поочередное включение всех ножек на LED_ON миллисекунд
//начиная с LED1, заканчивая LED10
//сохранение в переменную результата работы map(),
//которая вернет значение, считанное с аналогового входа,
//и пропорционально отмасштабированное из диапазона 0-1023
//в диапазон 2-11
int lastLed = map(temperature, 0, 70, LedMin, LedMax);
for(int i = LedMin; i <= LedMax; i+=1)
{
digitalWrite(i, HIGH);
delay(LED_ON);
digitalWrite(i, LOW);
}

}

#6 Програмування Arduino » Программирование Arduino » 2020-12-06 00:04:00

Alex135102000
відповідей: 2

Здравствуйте. У меня стоит задача написать скетч для схемы так, чтобы в зависимости от температуры датчика DS18B20 менялись огоньки на LED-BARGRAPH-GRN. К примеру если температура 0-30 то горят огоньки которые подключены к выходам 2-4 платы Ардуино
а если выше или меньше то другие огоньки индикатора LED и т.д. Код который я подключаю к схеме бегают огоньки выходов а зелёные индикаторы нет. Как его правильно изменить подскажите пожалуйста
#include <OneWire.h>
/*
* Описание взаимодействия с цифровым датчиком ds18b20
* Подключение ds18b20 к ардуино через пин 8
*/
OneWire ds(8); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком
byte i; // задаю переменную для цифровых выходов
byte LedMin = 2; // первый пин со светодиодом
byte LedMax = 11; // последний пин со светодиодом
#define LED_ON 200


void setup(){
Serial.begin(9600);
for(int i= LedMin; i <= LedMax; i++);
pinMode(i, OUTPUT);
}

void loop(){

// Определяем температуру от датчика DS18b20
byte data[2]; // Место для значения температуры
ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство
ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память

delay(1000); // Микросхема измеряет температуру, а мы ждем.

ds.reset(); // Теперь готовимся получить значение измеренной температуры

ds.write(0xCC);
ds.write(0xBE); // Просим передать нам значение регистров со значением температуры

data[0] = ds.read(); // Читаем младший байт значения температуры
data[1] = ds.read(); // А теперь старший

float temperature = ((data[1] << 8) | data[0])* 0.0625;

// Выводим полученное значение температуры в монитор порта
Serial.println(temperature);

// Теперь управляем шкалой с помощью датчика температуры DS18b20

//поочередное включение всех ножек на LED_ON миллисекунд
//начиная с LED1, заканчивая LED10
//сохранение в переменную результата работы map(),
//которая вернет значение, считанное с аналогового входа,
//и пропорционально отмасштабированное из диапазона 0-1023
//в диапазон 2-11
int lastLed = map(temperature, 0, 70, LedMin, LedMax);
for(int i = LedMin; i <= LedMax; i+=1)
{
digitalWrite(i, HIGH);
delay(LED_ON);
digitalWrite(i, LOW);
}

}

Підвал форуму