Ви не увійшли.
Здравствуйте. У меня стоит задача написать скетч для схемы так, чтобы в зависимости от температуры датчика DS18B20 менялись огоньки на LED-BARGRAPH-GRN. К примеру если температура 0-30 то горят огоньки которые подключены к выходам 2-4 платы Ардуино
а если выше или меньше то другие огоньки индикатора LED и т.д. Код который я подключаю к схеме бегают огоньки выходов а зелёные индикаторы нет. Как его правильно изменить подскажите пожалуйста
подсказка - вы мапите показания датчика, но нигде это не используете. При этом зачем-то устроили цветомузыку перебирая в цикле ноги МК.
Так?
Нет, не так. Перед тем как вставить код - нажмите черный квадратик над полем вставки сообщений
отформатировать код 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);
}
}
отформатировать код CTRL + T
вставить - в поле ответа справа вверху есть окно Code (при наведении курсора высвечивается)
delay это конечно зло, но в данном случае проблема не в этом. ТС определитесь сначала что вам нужно - бегающие огоньки или свечение конкретных индикаторов?
свечение конкретных индикаторов относительно конкретной температуры.
1. вставляйте правильно код и форматируйте перед этим.
2. измерение температуры у вас с секундной задержкой, поэтому нормально работать не будет.
используйте миллис.
а как правильно это сделать? Помогите пожалуйста. Я в этом деле новичок(
свечение конкретных индикаторов относительно конкретной температуры.
delay это конечно зло, но в данном случае проблема не в этом. ТС определитесь сначала что вам нужно - бегающие огоньки или свечение конкретных индикаторов?
1. вставляйте правильно код и форматируйте перед этим.
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);
}
}