Всем доброго времени. Заменил я BMP180 на BME280. Есть разница в измерении температуры и влажности. На 280 эти значения в температуре +3*С, влажность +5%. Почистил слегка код от того, что теперь не используется. По предыдущим коментариям по делеям в поледних строках 272-275 (нынешнее 342-344), дык там же время показа. Если их убрать значения на часах разве будет отображаться корректно?
/*/Проект собран на основе желания сделать себе как у всех, но чуточку лучше. Основная работа по коду шла на
форуме http://arduino.ru. Конкретно началось с поста №58. Много людей помогали и вносили свою лепту
во всё это действо b707, bwn, GennOk.
Данный проект подходит под определение метео станция. Вывод данных о температуре, давлении и влажности. Так же основное
предназначение это показ часов. Очень много коментариев и росписей по кокретным блокам.
Проект универсальный, под разное количество LED-светодиодов, за это отдельное спасибо b707. Да и вообще большая часть кода
была переписана этим человеком. От того, что было изначально возможно осталась только идея))) Универсальность количества
диодов, переписана координатность символов, переназначение кнопок, отключение смены цветов либо смена по времени.
ВОЗМОЖНО в будущем появится вывод даты
////////////////////////////////////////////////////////////////////////////OdinochkA)))
*/
#include <Adafruit_BME280.h>
#include <DS3232RTC.h>
#include <Time.h>
#include <FastLED.h>
#define LEDS_IN_SEGMENT 3 // Задаём сколько у нас светодиодов в сегменте.
#define DOTS_NUM 2 // Задаём количество разделительных точек
#define COLOR_CHANGE 3 // ( 0 - НИКОГДА, 1 - каждую минуту, 2 - каждые 10 минут, 3 - каждый час, 4 - каждые 10 часов)
#define NUM_COLORS 16 // цветовая гамма
#define COLOR_ORDER BGR // По умолчанию цвет стоит зелёный при выключенных режимах
#define DATA_PIN 13 // подключение ленты
#define BRI_PIN A6 // фоторезистор
#define auto_bright 1 // автоматическая подстройка яркости от уровня внешнего освещения (1 - включить, 0 - выключить)
#define max_bright 227 // максимальная яркость (0 - 255)
#define min_bright 0 // минимальная яркость (0 - 255)
#define bright_constant 1010 // константа усиления от внешнего света (0 - 1023), чем МЕНЬШЕ константа, тем "резче" будет прибавляться яркость
#define coef 0.7 // коэффициент фильтра (0.0 - 1.0), чем больше - тем медленнее меняется яркость
int new_bright, new_bright_f;
unsigned long bright_timer, off_timer;
Adafruit_BME280 bme; // BME280 давление, влажность, температура I2C
//BMP280 PINS //датчик подключается паралельно часам по I2C
//SCL -> SCL or A5
//SDA -> SDA or A4
// Вычислемые константы, НЕ РЕДАКТИРОВАТЬ!
#define NUM_LEDS (LEDS_IN_SEGMENT * 28 + DOTS_NUM) //86 количество светодиодов в ленте
//#define NUM_LEDS (LEDS_IN_SEGMENT * 28 + 2) //86 количество светодиодов в ленте
//#define DOT1 (LEDS_IN_SEGMENT * 14) // координаты мигающих точек
//#define DOT2 (LEDS_IN_SEGMENT * 14 + 1) // координаты мигающих точек
CRGB leds[NUM_LEDS]; //Задаём значение светодиодов, какой символ из чего состоит
uint8_t digits[] = {
0b00111111, // Digit 0
0b00100001, // Digit 1
0b01110110, // Digit 2
0b01110011, // Digit 3
0b01101001, // Digit 4
0b01011011, // Digit 5
0b01011111, // Digit 6
0b00110001, // Digit 7
0b01111111, // Digit 8
0b01111011, // Digit 9
0b01111000, // Digit * градус 10
0b00011110, // Digit C 11
0b01111100, // Digit P 12
0b01111000, // Digit % знак % из двух частей 13
0b01000111, // Digit % знак % из двух частей 14
};
bool Dot = true;
bool DST = false;
bool TempShow = true;
bool PressureShow = true;
bool HumidityShow = true;
int last_digit = 0;
long ledColor = CRGB::Salmon; // Используемый цвет
//long ledColor = CRGB::MediumVioletRed;
long ColorTable[NUM_COLORS] = {
CRGB::Amethyst,
CRGB::Aqua,
CRGB::Blue,
CRGB::Chartreuse,
CRGB::DarkGreen,
CRGB::DarkMagenta,
CRGB::DarkOrange,
CRGB::DeepPink,
CRGB::Fuchsia,
CRGB::Gold,
CRGB::GreenYellow,
CRGB::LightCoral,
CRGB::Tomato,
//CRGB::Salmon,
CRGB::Red,
CRGB::Orchid,
CRGB::DarkOrchid
};
void setup() {
Serial.begin(9600);
//Wire.begin();//Для BMP
LEDS.addLeds<WS2812, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
bme.begin(); //bmp.begin(); //датчик температуры
//LEDS.setBrightness(75); // Задаём яркость
pinMode(4, INPUT_PULLUP); // Кнопка смены цветов
pinMode(3, INPUT_PULLUP); // Кнопка регулировки минут
pinMode(2, INPUT_PULLUP); // Кнопка регулировки часов
}
//новые координаты точек
void BrightDots (boolean Dot_On) {
for (uint8_t i = 0; i < DOTS_NUM; i++) {
leds[(LEDS_IN_SEGMENT * 14)+ i] = (Dot_On) ? ledColor : 0;
}
//leds[DOT2] = (Dot_On) ? ledColor : 0;
}
void BrightDigit (uint8_t digit, uint8_t cursor)
{
for (uint8_t mask = 0b01000000; mask > 0; mask = mask >> 1)
{
for (uint8_t i = 0; i < LEDS_IN_SEGMENT; i++)
{
leds[cursor] = (digit & mask) ? ledColor : 0;
cursor ++;
}
}
}
//Массив управляет яркостью
// Новый метод изменения яркости
void BrightnessCheck() {
if (auto_bright) { // если включена адаптивная яркость
if (millis() - bright_timer > 100) { // каждые 100 мс
bright_timer = millis(); // сбросить таймер
// Serial.print("Освещение: "); // вывод инфы в сом порт
// Serial.println(sensorValue); // вывод инфы в сом порт
new_bright = map(analogRead(6), 0, bright_constant, min_bright, max_bright); // считать показания с фоторезистора, перевести диапазон
new_bright = constrain(new_bright, min_bright, max_bright);
new_bright_f = new_bright_f * coef - new_bright * (1 - coef);
LEDS.setBrightness(new_bright_f); // установить новую яркость
}
}
};
// Получаем время в одном номере, если часы будет только одна цифра то будет отображаться 155 вместо 0155O
int GetTime()
{
tmElements_t Now;
RTC.read(Now);
//time_t Now = RTC.Now();// Получаем данные текущего времени и его хранение
int hour = Now.Hour;
int minute = Now.Minute;
int second = Now.Second;
if (second % 2 == 0)
{
Dot = false;
}
else {
Dot = true;
};
return (hour * 100 + minute);
};
// Преобразуем время в массив для отображание
void TimeToArray() {
int Now = GetTime(); // Получаем время
BrightDots(Dot);
for (int i = 1; i <= 4; i++) {
int digit = Now % 10; // Получаем последнюю цифру в времениd
int cursor = NUM_LEDS - i * LEDS_IN_SEGMENT * 7;
if (i > 2) {
cursor -= DOTS_NUM;
//cursor -= 2;
}
BrightDigit(digits[digit], cursor);
if ( i == COLOR_CHANGE) {
if (digit != last_digit)
{
// cylon (); // цикличное изменение цветов
ledColor = ColorTable[random(NUM_COLORS)]; // цикличное изменение цветов
}
last_digit = digit;
}
Now /= 10;
};
};
// Функция вывода метеоданных
// Преобразуем Temp в массив для отображение
void TempToArray() {
tmElements_t tm;
RTC.read(tm);
if (tm.Second != 25) {//через какое время показывать температуруi
TempShow = false;
return;
}
TempShow = true;
int t = bme.readTemperature(); //int t = bmp.readTemperature();
int celsius = t;
BrightDots(0); //разделительные мигающие точки выключены
BrightDigit(digits[11], (NUM_LEDS - LEDS_IN_SEGMENT * 7)); //65 начало знака Цельсия (*) 4й блокn
BrightDigit(digits[10], (NUM_LEDS - LEDS_IN_SEGMENT * 14)); //44 начало знака Градус (С) 3 блок
int digit = celsius % 10;
BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 21 - DOTS_NUM)); //21 2й блок вывода второго символа
celsius /= 10;
digit = celsius % 10;
BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 28 - DOTS_NUM)); //0 1й блок вывода первого символаo
};
// Измеряем давление
void PressureToArray() {
tmElements_t tm;
RTC.read(tm);
if (tm.Second != 30) {//через какое время показывать давление
PressureShow = false;
return;
}
PressureShow = true;
int p = bme.readPressure() / 133.322; //int p = bmp.readPressure() / 133.322;c
int Pressure = p;
BrightDots(0); //разделительные мигающие точки выключены
BrightDigit(digits[12], (NUM_LEDS - LEDS_IN_SEGMENT * 28 - DOTS_NUM)); //0 начало знака Давления (Р) 1й блокh
// Pressure /= 10;
int digit = Pressure % 10;
BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 7 )); //65 4й блок вывода третьей цифры значения
Pressure /= 10;
digit = Pressure % 10;
BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 14)); //44 3й блок вывода второй цифры значенияk
Pressure /= 10;
digit = Pressure % 10;
BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 21 - DOTS_NUM )); //21 2й блок вывода первой цифры значения
};
//Вывод влажности
//Переделано на BME280 //Пример на DHT11
void HumidityToArray() {
tmElements_t tm;
RTC.read(tm);
if (tm.Second != 35) {//через какое время показывать влажность
HumidityShow = false;
return;
}
HumidityShow = true;
int h = bme.readHumidity(); //int h = dht.readHumidity();
int humidity = h;
BrightDots(0); //разделительные мигающие точки выключены
BrightDigit(digits[14], (NUM_LEDS - LEDS_IN_SEGMENT * 7)); //65 конец знака процентов (%) 4й блок
BrightDigit(digits[13], (NUM_LEDS - LEDS_IN_SEGMENT * 14)); //44 начало знака процентов (%) 3 блок
int digit = humidity % 10;
BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 21 - DOTS_NUM)); //21 2й блок вывода второго символаA
humidity /= 10;
digit = humidity % 10;
BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 28 - DOTS_NUM)); //0 1й блок вывода первого символа
};
//смена цвета ленты кнопкой DST Pin 4
void DSTcheck() {
int buttonDST = digitalRead(4);
if (buttonDST == LOW) {
ledColor = ColorTable[random(NUM_COLORS)];
};
delay(500);//время реакции на нажатие
};
// Массив управляет кнопками с часами и минутами
void TimeAdjust() {
int buttonH = digitalRead(2);
int buttonM = digitalRead(3);
if (buttonH == LOW || buttonM == LOW) {
delay(100);//время реакции на нажатие
tmElements_t Now;
RTC.read(Now);
int hour = Now.Hour;
int minutes = Now.Minute;
int second = Now.Second;
if (buttonH == LOW) {
if (Now.Hour == 23) {
Now.Hour = 0;
}
else {
Now.Hour += 1;
};
}
else
{
if (Now.Minute == 59) {
Now.Minute = 0;
}
else {
Now.Minute += 1;
};
};
RTC.write(Now);
}
}
//Меняем эффекты
void fadeall() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i].nscale8(250);
}
}
// массив отвечает за цикличное изменение цветов
void cylon () {
static uint8_t hue = 0;
Serial.print("x");
// Сдвигаем один светодиод в любом направлении
for (int i = 0; i < NUM_LEDS; i++) {
// Устанавливаем 1 светодиод на цвет красный
leds[i] = CHSV(hue++, 255, 255);
// Показываем светодиоды
FastLED.show();
fadeall();
// Ждём немного и повторяем цикл
delay(10);
}
//Serial.print("x");
// Сдвигаем один светодиод в любом направлении
for (int i = (NUM_LEDS) - 1; i >= 0; i--) {
// Устанавливаем 1 светодиод на цвет красный
leds[i] = CHSV(hue++, 255, 255);
// Показываем светодиоды
FastLED.show();
fadeall();
// Ждём немного и повторяем цикл
delay(10);
}
}
void loop()
{
BrightnessCheck(); // Проверяем датчик освещения
DSTcheck(); // Проверяем цветовые режимы
TimeAdjust(); // Проверяем время если сменилось на 1 цифру
TimeToArray(); // Проверяем часы если сменилось на 1 цифру
TempToArray(); // температура
PressureToArray(); // давление
HumidityToArray(); // если будет влажность
FastLED.show(); // Задаём массив светодиодов
if (TempShow == true) delay (5000); //время показа температуры
if (PressureShow == true) delay (5000);//время показа давления
if (HumidityShow == true) delay (5000);//время показа влажности
/*/
//вывод информации в сом порт
// Раскоментировать если нужно посмотреть в сом порте, маленько подтормаживает вся система если это открыто
Serial.print("Tемпература = ");
Serial.print(bme.readTemperature()); //Serial.print(bmp.readTemperature());
Serial.println("*C");
Serial.print ("Давление = ");
Serial.print (bme.readPressure() / 133.322); //Serial.print (bmp.readPressure() / 133.322); // Полученное значение в Па делим на 133,322 и получаем мм.рт.ст.
Serial.println (" mm"); // и соответственно меняем "Pa" на "mm"
Serial.print ("Влажность = ");
Serial.print (bme.readHumidity() ); // Serial.print (dht.readHumidity() ); //
Serial.println ("%\t"); //
Serial.println();
delay(8000);
Serial.println (" *OdinochkA* "); //
*/
}
Идея прикольная, воплощение тяжелое. Но всё вправе быть! Иди попробуй повтори. Но я бы сказал, не картина теряется на фоне, а часы - на фоне картины. Тут надо что-то поменять.
Всё работает, хочется еще чтобы и отрицательную температуру показывало.
Есть предложение убрать знак "С", всё передвмнуть чтобы освободить вначале место под знак "-".
Всё работает, хочется еще чтобы и отрицательную температуру показывало.
Есть предложение убрать знак "С", всё передвмнуть чтобы освободить вначале место под знак "-".
Ну тут как бы всё упрётся в эстетизм. Я так понимаю что надо два термометра: один внутри дома второй на улице. Ладно с домашним всё ясно. Всё остаётся как есть. А вот уличный будет выглядеть не кашерно. Для минуса придется убрать все знаки на 3 и 4м блоках и сдвинуть значение температуры на это место, иначе будет большой пробел из-за разделительных точек. Опять же летом минуса не будет ( хотя может вы на севере живёте))), и тогда у вас просто будут две цифры появляться без каких либо опознавательных знаков. Была идея сделать значение температуры по цвету. Типа минус - синий, жарко - красный, но это сильно увеличит код и много заморочек. Как вариант добавить перед лентой светодиодов ещё 2 диода, чтоб срабатывал только на минус. ОПять нужно будет менять цифры в коде (хотя это уже менее трудновыполнимо)
На картинках просто пример как это выглядит у меня, там первый блок перемещен и изменен символ "С". На первой он потушен, на второй изменен на минус и горит всегда.
Типа минус - синий, жарко - красный, но это сильно увеличит код и много заморочек. Как вариант добавить перед лентой светодиодов ещё 2 диода, чтоб срабатывал только на минус. ОПять нужно будет менять цифры в коде (хотя это уже менее трудновыполнимо)
Цветом хорошая идея. Добавлять два диода тоже не очень смотрется будет, как и большое растояние в середине. Думаю давление тоже не очень смотрится с болшим пробелом.
ни вопрос. Если Одиночка разрешит, могу добавить смену цвета от температуры в его код из сообщения #303. Если кто другой хочет потренироваться - дерзайте, задчка элементарная
В принципе, можно даже сделать смену цвета не просто "плюс" и "минус", а по диапазонам - например меньше 0 С - синее, от нуля до +10 С - зеленое, от 10 до +25 - желтое, ну и выше +25 - красное :)
Цвета подбирайте сами, у меня с дизайном не очень, это просто как пример.
Совсем уже . Меня спрашивать разрешения.? Это мы, недалёкие до кода, должны вас просить о помощи. И по цвету даже не представляю как будет выглядеть эта радуга. Допустим время 20:15 красное, за бортом -10 цвет синий. Во моргалики будут. А градации от температуры здорово. -30-16 синий, -15-5 голубой, -4+4 белый, +5+15 жёлтый, +16+30 оранжевый, +30^ красный
А я как раз за цветовую градацию температуры, от синего к красному в зависимости от +- главное что бы выбранный цвет часов не менялся. а то что во время показа темрературы будет менятся цвет так оно даже лучше, диоды застаиваться не будут на одном цвете
Допустим время 20:15 красное, за бортом -10 цвет синий. Во моргалики будут.
не будет ни каких моргаликов, часы того же цвета что выставил, на пару тройку сек сколько отображается температура, будет менятся цвет. всё адекватно и эстетично. другой параметр другой цвет. поверь по сравнению с моргаликами регулировки яркости в начале этого скетча было на много печальнее =)
b707 дружище, ты у нас тут самый гуру в кодинге, а как насчет сделать меню для этого чуда? я уже как то предлагал, но только настройку основных параметров, все теме же тремя кнопками. а что если сделать к примеру еще и выбор датчиков там же? или же как уже у многих есть сделать полноценный вэб интерфейс для настройки, синхронизацию времени по вафле или синезубу, ну и будильник было бы не плохо прикрутить. HTML баловался по молодости, вэб могу написать, а вот как это прикрутить к нашему проекту хз. да и перевести все это уже тогда либо на ноде мцю или блюпук прикрутить что бы с телефоном конектиться
b707 дружище, ты у нас тут самый гуру в кодинге, а как насчет сделать меню для этого чуда? я уже как то предлагал
ну да, ты уже предлагал - а я уже отвечал, что я за это не возьмусь. Понимаешь, те правки, которые я добавил в код на 3-4й странице темы - заняли у меня от силы полчаса. А добавлять меню, а тем более вай-фай - это серьезная работа, уже между пивом не сделать. К тому же , как уже писал - самих часов у меня нет, а вносить серьезные правки в код без тестов - это секс по телефону какой-то :)
а как по твоему назывется зменение яркости в зависимости от времени на часах?)
а зачем оно нужно? В скетче уже есть автояркость от датчика освещения - и это значительно более "правильное" решение, чем яркость от времени. Ведь день может быть и солнечным и пасмурным - и яркость нужна разная. А ночью может быть включен свет либо полная темнота - и опять настройки должны отличаться. Во всех этих случаях автояркость от датчика - рулит, а яркость по часам постоянно будет врать.
а как по твоему назывется зменение яркости в зависимости от времени на часах?)
Называется "суточное изменение яркости". Ключевое слово "суточное". Но, как справедливо отметил b707, - это весьма сомнительное решение. И "сейчас нет датчика" никак это обстоятельство не отменяет.
да я уже собрал.) вот те что сверху у меня с суточной автояркостью. но она на пик 16 собраны.
судя по вопросам, те что на пик собраны - используют чужую готовую прошивку? Потому как если б ты их сам программировал - подбных вопросв бы не задавал.
Варианты тут я вижу такие - искать готовую прошивку с автояркостью или учиться писать самому.
и опять ты прав. те что на пик были собраны по готовой схеме и прошивке. на ардуино я такого скетча так и не нашел. потому что фотодатчик всетаки уневирсальнее. если знаешь где взять прошивку с автояркостью то можешь кинуть ссылку.
В коде закоментировал строчки с упоминанием второй точки так как она выполнена одним кусочком ленты .отображение времени такое сразу после загрузки скетча,все остальное отображается адекватно . часовые сегменты вместо 22 показывают НН . призаливке другого скетча с даласовским датчиком часы работают адекватно.
В коде закоментировал строчки с упоминанием второй точки так как она выполнена одним кусочком ленты.
А если убрать этот коментарий второй точки? пробовали таким вариантом? Да и к тому же скетч считает кол-во диодов, а не кусков ленты. Где то на пару страниц назад был код с одной точкой, но в последствии его переделали кажется под универсальные точки. Там просто указывается количество точек. Сообщение №303 строка 19 #define DOTS_NUM 2 // Задаём количество разделительных точек
Может я не правильно сделал что влез в тему с другим кодом ? Но я жалуюсь на код из 341 сообщения.
судя по комментам - это не "другой код", а очередная редакция кода из этой же ветки. Только почему-то люди сначала лезут "улучшать" код, никого не спрашивая - а как оно перестает работать - бегут с криками "помогите" обратно на форум.
В FastLED цвета задаются как в HTML
Спасибо
Всем привет. Почти доделал. Вот что получилось.
https://youtu.be/qLVG0Eqj_oI
Всем доброго времени. Заменил я BMP180 на BME280. Есть разница в измерении температуры и влажности. На 280 эти значения в температуре +3*С, влажность +5%. Почистил слегка код от того, что теперь не используется. По предыдущим коментариям по делеям в поледних строках 272-275 (нынешнее 342-344), дык там же время показа. Если их убрать значения на часах разве будет отображаться корректно?
Неплохо получилось, интересная идея.
Идея прикольная, воплощение тяжелое. Но всё вправе быть! Иди попробуй повтори. Но я бы сказал, не картина теряется на фоне, а часы - на фоне картины. Тут надо что-то поменять.
красиво!
Всем доброго времени. Заменил я BMP180 на BME280.
Всё работает, хочется еще чтобы и отрицательную температуру показывало.
Есть предложение убрать знак "С", всё передвмнуть чтобы освободить вначале место под знак "-".
Есть предложение убрать знак "С", всё передвмнуть чтобы освободить вначале место под знак "-".
Ну тут как бы всё упрётся в эстетизм. Я так понимаю что надо два термометра: один внутри дома второй на улице. Ладно с домашним всё ясно. Всё остаётся как есть. А вот уличный будет выглядеть не кашерно. Для минуса придется убрать все знаки на 3 и 4м блоках и сдвинуть значение температуры на это место, иначе будет большой пробел из-за разделительных точек. Опять же летом минуса не будет ( хотя может вы на севере живёте))), и тогда у вас просто будут две цифры появляться без каких либо опознавательных знаков. Была идея сделать значение температуры по цвету. Типа минус - синий, жарко - красный, но это сильно увеличит код и много заморочек. Как вариант добавить перед лентой светодиодов ещё 2 диода, чтоб срабатывал только на минус. ОПять нужно будет менять цифры в коде (хотя это уже менее трудновыполнимо)
Часы висят на темной стене, пробел не так заметен.
Пока хочу хотябы один датчик на улицу. Здесь вместо "С" минус, переместил вначало(Это все что я пока умею).
Была идея сделать значение температуры по цвету. Типа минус - синий, жарко - красный, но это сильно увеличит код
строчек на пять, навскидку :)
Здесь вместо "С" минус, переместил вначало(Это все что я пока умею).
ну и отлично. А что не так с кодом?
На картинках просто пример как это выглядит у меня, там первый блок перемещен и изменен символ "С". На первой он потушен, на второй изменен на минус и горит всегда.
Типа минус - синий, жарко - красный, но это сильно увеличит код и много заморочек. Как вариант добавить перед лентой светодиодов ещё 2 диода, чтоб срабатывал только на минус. ОПять нужно будет менять цифры в коде (хотя это уже менее трудновыполнимо)
Цветом хорошая идея. Добавлять два диода тоже не очень смотрется будет, как и большое растояние в середине. Думаю давление тоже не очень смотрится с болшим пробелом.
Цветом хорошая идея.
ни вопрос. Если Одиночка разрешит, могу добавить смену цвета от температуры в его код из сообщения #303. Если кто другой хочет потренироваться - дерзайте, задчка элементарная
В принципе, можно даже сделать смену цвета не просто "плюс" и "минус", а по диапазонам - например меньше 0 С - синее, от нуля до +10 С - зеленое, от 10 до +25 - желтое, ну и выше +25 - красное :)
Цвета подбирайте сами, у меня с дизайном не очень, это просто как пример.
Совсем уже . Меня спрашивать разрешения.? Это мы, недалёкие до кода, должны вас просить о помощи. И по цвету даже не представляю как будет выглядеть эта радуга. Допустим время 20:15 красное, за бортом -10 цвет синий. Во моргалики будут. А градации от температуры здорово. -30-16 синий, -15-5 голубой, -4+4 белый, +5+15 жёлтый, +16+30 оранжевый, +30^ красный
да, я тоже об этом подумал, но решил не грузить проблемами раньше времени :)
Ну решайте - может и правда слишком пестро будет. Я в этом не очень разбираюсь, не художник :)
тогда надо что-то другое придумать.
Ну тады, значение температуры совсем убрать, а оставить только цвет цифр для времени.)))))
А я как раз за цветовую градацию температуры, от синего к красному в зависимости от +- главное что бы выбранный цвет часов не менялся. а то что во время показа темрературы будет менятся цвет так оно даже лучше, диоды застаиваться не будут на одном цвете
оставить как есть знак цельсия и С градус а цветом указывать плюс или минус, можно для минуса одну из точек зажигать
С фастледом вы ещё и перелив относительно легко можете сделать с одного цвета в другой.
оставить как есть знак цельсия и С градус а цветом указывать плюс или минус, можно для минуса одну из точек зажигать
А можно на плюс и минус менять только цвет точек :)
Вообще, лучше все эти варианты в реале посмотреть, это вопрос к тем, у кого сами часы есть :)
Я тут только теоретик, у меня часов нет.
не будет ни каких моргаликов, часы того же цвета что выставил, на пару тройку сек сколько отображается температура, будет менятся цвет. всё адекватно и эстетично. другой параметр другой цвет. поверь по сравнению с моргаликами регулировки яркости в начале этого скетча было на много печальнее =)
b707 дружище, ты у нас тут самый гуру в кодинге, а как насчет сделать меню для этого чуда? я уже как то предлагал, но только настройку основных параметров, все теме же тремя кнопками. а что если сделать к примеру еще и выбор датчиков там же? или же как уже у многих есть сделать полноценный вэб интерфейс для настройки, синхронизацию времени по вафле или синезубу, ну и будильник было бы не плохо прикрутить. HTML баловался по молодости, вэб могу написать, а вот как это прикрутить к нашему проекту хз. да и перевести все это уже тогда либо на ноде мцю или блюпук прикрутить что бы с телефоном конектиться
как я понимаю мы же хотим код довести до универсального вида. что бы каждый мог по себя собрать и настроить, по железу и потребностям?
b707 дружище, ты у нас тут самый гуру в кодинге, а как насчет сделать меню для этого чуда? я уже как то предлагал
ну да, ты уже предлагал - а я уже отвечал, что я за это не возьмусь. Понимаешь, те правки, которые я добавил в код на 3-4й странице темы - заняли у меня от силы полчаса. А добавлять меню, а тем более вай-фай - это серьезная работа, уже между пивом не сделать. К тому же , как уже писал - самих часов у меня нет, а вносить серьезные правки в код без тестов - это секс по телефону какой-то :)
друзья, а как сделать часы с автояркостью в зависимости от времени? как должен выглядеть код?
друзья, а как сделать часы с автояркостью в зависимости от времени? как должен выглядеть код?
Автояркость зависит от времени или показания часов зависят от времени?
А код... ну как обычно - должен выглядеть как строчки буковок.
я имел в виду что днем ярко светить а ночью минимум. что буковки и циферки в коде должны бить это понятно. а вот какие и в каком порядке тут не знаю.
Автояркость, это когда яркость зависит внешнего от освещения, а не от времени суток.
А чтобы знать, какие буковки и в каком порядке - нужно учебники почитать. Какие - написано в прикрепленной теме раздела "Песочница".
а как по твоему назывется зменение яркости в зависимости от времени на часах?)
а как по твоему назывется зменение яркости в зависимости от времени на часах?)
а зачем оно нужно? В скетче уже есть автояркость от датчика освещения - и это значительно более "правильное" решение, чем яркость от времени. Ведь день может быть и солнечным и пасмурным - и яркость нужна разная. А ночью может быть включен свет либо полная темнота - и опять настройки должны отличаться. Во всех этих случаях автояркость от датчика - рулит, а яркость по часам постоянно будет врать.
всецело согласен с тобой. но сейчас датчика у меня нет.
а как по твоему назывется зменение яркости в зависимости от времени на часах?)
Называется "суточное изменение яркости". Ключевое слово "суточное". Но, как справедливо отметил b707, - это весьма сомнительное решение. И "сейчас нет датчика" никак это обстоятельство не отменяет.
всецело согласен с тобой. но сейчас датчика у меня нет.
значит собери часы пока без автояркости. Датчик купишь - добавишь
да я уже собрал.) вот те что сверху у меня с суточной автояркостью. но она на пик 16 собраны.
да я уже собрал.) вот те что сверху у меня с суточной автояркостью. но она на пик 16 собраны.
судя по вопросам, те что на пик собраны - используют чужую готовую прошивку? Потому как если б ты их сам программировал - подбных вопросв бы не задавал.
Варианты тут я вижу такие - искать готовую прошивку с автояркостью или учиться писать самому.
и опять ты прав. те что на пик были собраны по готовой схеме и прошивке. на ардуино я такого скетча так и не нашел. потому что фотодатчик всетаки уневирсальнее. если знаешь где взять прошивку с автояркостью то можешь кинуть ссылку.
Всем добрый день! Подскажите как изменить скетч для ам2320 чтоб температуру и влажность показывало
[quote=DetSimen]
для внутри дома недорог AM2320 c i2c на борту. Врёт, канеш, но не сильно. У мня в сортире/ванной около 3 лет трудица.
День добрый. как код изменить под AM2320?
нужна помощь как с этим бороться , давление и температура влажность показует без таких приколов
вот код
Dgeka - а что не так? По картинке не понятно
Все равно непонятно.
В коде что-нибудь трогали?
Когда появляется эта беда? - после показа температуры, давления или влажности?
Долго ли держится такое? - до смены следующей минуты, часа, навсегда.
И вообще, чем больше симптомов вы опишете - тем легче будет лечить
В коде закоментировал строчки с упоминанием второй точки так как она выполнена одним кусочком ленты .отображение времени такое сразу после загрузки скетча,все остальное отображается адекватно . часовые сегменты вместо 22 показывают НН . призаливке другого скетча с даласовским датчиком часы работают адекватно.
Может я не правильно сделал что влез в тему с другим кодом ? Но я жалуюсь на код из 341 сообщения.
судя по комментам - это не "другой код", а очередная редакция кода из этой же ветки. Только почему-то люди сначала лезут "улучшать" код, никого не спрашивая - а как оно перестает работать - бегут с криками "помогите" обратно на форум.
Скажите, до вашей правки числа точек код работал?
Нет ,не работал
а где вы его взяли?
Может, тогда стоит воспользоваться советом Одиночки и взять код из сообщения 303 - он проверенный