#1 2020-12-06 00:07:07

Alex135102000
Учасник
Зареєстрований: 2020-12-05
Повідомлень: 6

зависимости от температуры датчика DS18B20 менялись огоньки на LED

Здравствуйте. У меня стоит задача написать скетч для схемы так, чтобы в зависимости от температуры датчика 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);
}

}

Неактивний

#2 2020-12-06 10:39:49

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 741

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

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

Неактивний

#3 2020-12-06 11:40:29

г0сть
Гість

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

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

#4 2020-12-07 22:02:55

Alex135102000
Учасник
Зареєстрований: 2020-12-05
Повідомлень: 6

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

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

Неактивний

#5 2020-12-07 22:04:00

Alex135102000
Учасник
Зареєстрований: 2020-12-05
Повідомлень: 6

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

vvr пише:

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

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

Неактивний

#6 2020-12-07 22:17:18

Alex135102000
Учасник
Зареєстрований: 2020-12-05
Повідомлень: 6

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

г0сть пише:

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

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

Неактивний

#7 2020-12-07 22:19:58

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 741

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

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

Неактивний

#8 2020-12-07 22:57:30

Alex135102000
Учасник
Зареєстрований: 2020-12-05
Повідомлень: 6

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

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);
  }

}

Неактивний

#9 2020-12-08 10:01:47

u0cnm
Гість

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

Alex135102000 пише:

Так?

Нет, не так. Перед тем как вставить код - нажмите черный квадратик над полем вставки сообщений

#10 2020-12-08 19:33:27

г0сть
Гість

Re: зависимости от температуры датчика DS18B20 менялись огоньки на LED

Alex135102000 пише:

Здравствуйте. У меня стоит задача написать скетч для схемы так, чтобы в зависимости от температуры датчика DS18B20 менялись огоньки на LED-BARGRAPH-GRN. К примеру если температура 0-30 то горят огоньки которые подключены к выходам 2-4 платы Ардуино
а если выше или меньше то другие огоньки индикатора LED и т.д. Код который я подключаю к схеме бегают огоньки выходов а зелёные индикаторы нет. Как его правильно изменить подскажите пожалуйста

подсказка - вы мапите показания датчика, но нигде это не используете. При этом зачем-то устроили цветомузыку перебирая в цикле ноги МК.

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

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