Большие настенные часы на Arduino

b707
Offline
Зарегистрирован: 26.05.2017

Владимир 2018 пишет:

Что означает "0" в этой строке?

new_bright = map(analogRead(BRI_PIN), 0, bright_constant, min_bright, max_bright);   // считать показания с фоторезистора, перевести диапазон

 

Владимир, справка по языку Си - сноска "программирование"  вверзу страницы

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

b707 пишет:

Владимир 2018 пишет:

Что означает "0" в этой строке?

new_bright = map(analogRead(BRI_PIN), 0, bright_constant, min_bright, max_bright);   // считать показания с фоторезистора, перевести диапазон

 

Владимир, справка по языку Си - сноска "программирование"  вверзу страницы

Спасибо

b707
Offline
Зарегистрирован: 26.05.2017

Владимир 2018 пишет:

Ноль в значении часов все равно не гаснет. Покажите, пожалуйста, эту строку в скетче, которая отвечает за эту функцию.

посмотрел код - комментарий такой есть, а самой функции нет, всегда выводятся все 4 цифры, насколько я вижу. Если захотите поменять - в принципе это не сложно, только менять надо не GetTime(). а  процедуру TimetoArray()

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

b707 пишет:

Владимир 2018 пишет:

Ноль в значении часов все равно не гаснет. Покажите, пожалуйста, эту строку в скетче, которая отвечает за эту функцию.

посмотрел код - комментарий такой есть, а самой функции нет, всегда выводятся все 4 цифры, насколько я вижу. Если захотите поменять - в принципе это не сложно, только менять надо не GetTime(). а  процедуру TimetoArray()

Я тоже ничего подобного в коде не заметил, но "Одиночка" говорил, что у него все работает, ноль - гаснет.

Вы сможете с этим кодом помочь?

OdinochkA
Offline
Зарегистрирован: 05.07.2015

Владимир 2018] </p> <p>[quote=b707]</p> <p>[quote=Владимир 2018 пишет:

Ноль в значении часов все равно не гаснет. Покажите

Я тоже ничего подобного в коде не заметил, но "Одиночка" говорил, что у него все работает, ноль - гаснет.

Вы сможете с этим кодом помочь?


Я не говорил про 0.я говорил про датчик освещения. Ноль у меня светится. А вам столь принципиален этот знак ночью?

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

OdinochkA][quote=Владимир 2018]</p> <p>[quote=b707 пишет:

Владимир 2018 пишет:

Ноль в значении часов все равно не гаснет. Покажите

Я тоже ничего подобного в коде не заметил, но "Одиночка" говорил, что у него все работает, ноль - гаснет.

Вы сможете с этим кодом помочь?

Я не говорил про 0.я говорил про датчик освещения. Ноль у меня светится. А вам столь принципиален этот знак ночью?

Я про ноль тоже спрашивал. Знак этот я хотел гасить ночью и утром. Он бесполезен.

b707
Offline
Зарегистрирован: 26.05.2017

Владимир 2018 пишет:

Я тоже ничего подобного в коде не заметил, но "Одиночка" говорил, что у него все работает, ноль - гаснет.

Вы сможете с этим кодом помочь?

держите (если что - пишите, не проверял)

void TimeToArray() {
  int Now = GetTime(); // Получаем время
  BrightDots(Dot);

  for (int i = 1; i <= 4; i++) {
    int digit = Now % 10; // Получаем последнюю цифру в времени
    int cursor = NUM_LEDS - i * LEDS_IN_SEGMENT * 7;
    if (i > 2) {
      cursor -= 2;
    }
    if ( (i != 4) || (digit != 0)) BrightDigit(digits[digit], cursor);
    if ( i == COLOR_CHANGE) {
      if (digit != last_digit)
      {
//        cylon ();                              // цикличное изменение цветов
        ledColor =  ColorTable[random(NUM_COLORS)];    // цикличное изменение цветов
      }
      last_digit = digit;
    }
    Now /= 10;
  };
};

ЗЫ проверьте, не будет ли при смене времени "23:59" -> "0:00" оставаться двойка в старшем разряде. Если будет - придется еще чуть подправить

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

Хорошо, проверю, отпишусь.

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

Когда доходит до 00 часов отображается 24, до 01 - 21, 02 - 22 и так далее.

 

b707
Offline
Зарегистрирован: 26.05.2017

Владимир 2018 пишет:

Когда доходит до 00 часов отображается 24, до 01 - 21, 02 - 22 и так далее.

придется добавить еще строчку :)

void TimeToArray() {
  int Now = GetTime(); // Получаем время
  BrightDots(Dot);

  for (int i = 1; i <= 4; i++) {
    int digit = Now % 10; // Получаем последнюю цифру в времени
    int cursor = NUM_LEDS - i * LEDS_IN_SEGMENT * 7;
    if (i > 2) {
      cursor -= 2;
    }
    if ( (i != 4) || (digit != 0)) BrightDigit(digits[digit], cursor);
    else BrightDigit(0, cursor);
    if ( i == COLOR_CHANGE) {
      if (digit != last_digit)
      {
//        cylon ();                              // цикличное изменение цветов
        ledColor =  ColorTable[random(NUM_COLORS)];    // цикличное изменение цветов
      }
      last_digit = digit;
    }
    Now /= 10;
  };
};

 

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

Ой, последний вариант работает, спасибо!

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

b707, 

как Вас отблагодарить?

 

b707
Offline
Зарегистрирован: 26.05.2017

Владимир 2018 пишет:

b707, 

как Вас отблагодарить?

 

никак не надо, мне просто нравится этот проект

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

b707 пишет:

Владимир 2018 пишет:

b707, 

как Вас отблагодарить?

 

никак не надо, мне просто нравится этот проект

Это хорошо, что нравится, но я бы мог Вам пополнить хотя бы мобильный телефон. :)

Мне осталось решить проблему изменения яркости свечения светодиодов. Можете помочь?

Эта часть скетча у меня отказывается работать

// Новый метод изменения яркости
void BrightnessCheck() {
//const byte sensorPin = 6;
//int sensorValue = analogRead(sensorPin);
  if (auto_bright) {                         // если включена адаптивная яркость
    if (millis() - bright_timer > 100) {     // каждые 100 мс
      bright_timer = millis();               // сброить таймер
      new_bright = map(analogRead(BRI_PIN), 0, bright_constant, min_bright, max_bright);   // считать показания с фоторезистора, перевести диапазон
//Serial.print("Ambient is: ");
//Serial.println(sensorValue);     
      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);      // установить новую яркость
    }
  }
};

 

Aleksis7
Offline
Зарегистрирован: 19.03.2019
  У меня тоже работала автояркость наоборот, поставил плюс вместо минуса (coef + new), заработало как надо.
 
    new_bright_f = new_bright_f * coef + new_bright * (1 - coef);
 
b707
Offline
Зарегистрирован: 26.05.2017

Владимир 2018 пишет:

Мне осталось решить проблему изменения яркости свечения светодиодов. Можете помочь?

Эта часть скетча у меня отказывается работать

Ваш код сопадает с кодом Odinochka, у которого регулировка яркости работает. так что, скорее всего, дело не в коде, а в подключении. Надеюсь вы пин датчика освещения в коде правильно задали?

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

b707 пишет:

Владимир 2018 пишет:

Мне осталось решить проблему изменения яркости свечения светодиодов. Можете помочь?

Эта часть скетча у меня отказывается работать

Ваш код сопадает с кодом Odinochka, у которого регулировка яркости работает. так что, скорее всего, дело не в коде, а в подключении. Надеюсь вы пин датчика освещения в коде правильно задали?

Да, у меня пин датчика другой (аналоговый A6). В скетче я менял на свой, подключение проверял.

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

У меня так:

#define BRI_PIN A6            // PIN фоторезистора
#define auto_bright 1         // автоматическая подстройка яркости от уровня внешнего освещения (1 - включить, 0 - выключить)
#define max_bright 230        // максимальная яркость (0 - 255)
#define min_bright 1         // минимальная яркость (0 - 255)
#define bright_constant 1000   // константа усиления от внешнего света (0 - 1023), чем МЕНЬШЕ константа, тем "резче" будет прибавляться яркость
#define coef 0.8              // коэффициент фильтра (0.0 - 1.0), чем больше - тем медленнее меняется яркость
int new_bright, new_bright_f;
unsigned long bright_timer, off_timer;

Пробовал менять настройки константы и коэффициента. Такое ощущение, что что-то выключено или не туда включено. Затемнял датчик, дополнительно освещал, все равно не работает изменение яркости. 

OdinochkA
Offline
Зарегистрирован: 05.07.2015

У вас просто фоторезистор или платка с 3мя выводами?

OdinochkA
Offline
Зарегистрирован: 05.07.2015

Упс

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

OdinochkA пишет:
У вас просто фоторезистор или платка с 3мя выводами?

Нет, как на вышеприведенном Вашем фото.

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

Все, заработало!

Сделал как в посте #265, как посоветовал Aleksis7. Изменил - на + и все заработало. :)

bwn
Offline
Зарегистрирован: 25.08.2014

Владимир 2018 пишет:

Все, заработало!

Сделал как в посте #265, как посоветовал Aleksis7. Изменил - на + и все заработало. :)

В качестве доброго совета, освойте сериал принт и вывод в монитор подозрительных значений, зачем на кофейной гуще гадать?

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

bwn пишет:

Владимир 2018 пишет:

Все, заработало!

Сделал как в посте #265, как посоветовал Aleksis7. Изменил - на + и все заработало. :)

В качестве доброго совета, освойте сериал принт и вывод в монитор подозрительных значений, зачем на кофейной гуще гадать?

Спасибо за совет.

Я в мониторе порта видел изменения показания датчика от освещенности, но на деле ничего не происходило. После подсказки , хотя я в неё не верил, но попробовал ей воспользоваться  - у меня все получилось.

AyuOX
AyuOX аватар
Offline
Зарегистрирован: 07.05.2019

Здравствуйте.

Пытаюсь сделать  большие часы на  arduino nano, DS3231,  BME280, ws 2812.

Спустя две недели ковыряния интернета в поисках подходящего кода, и не найдя, пришлось допиливать самому (с помощью рашпеля, и какой то матери) так кат в программирование я ноль.   За основу был взят код от Одиночки пост #190. Сейчас все работает показывают часы, температуру, давление и влажность,что и требовалось, но кнопки тупят и точки как то медлено мигают.  И еще один температурный  датчик добавить надо. Может кто подправит код.

[code]

#include <Adafruit_BME280.h>
#include <DS3232RTC.h>
#include <Time.h>
#include <Wire.h>
#include <FastLED.h>

#define LEDS_IN_SEGMENT 1    // Задаём сколько у нас светодиодов в сегменте.
#define COLOR_CHANGE 1       // ( 0 - НИКОГДА, 1 - каждую минуту, 2 - каждые 10 минут, 3 - каждый час, 4 - каждые 10 часов)
#define NUM_COLORS 17
#define COLOR_ORDER BGR      // По умолчанию цвет стоит зелёный при выключенных режимах
#define DATA_PIN 6           // подключение ленты
#define BRI_PIN A3            // фоторезистор 
#define auto_bright 1         // автоматическая подстройка яркости от уровня внешнего освещения (1 - включить, 0 - выключить)
#define max_bright 230        // максимальная яркость (0 - 255)
#define min_bright 1          // минимальная яркость (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;
//DHT dht(8, DHT11);            // к какому порту подключаем DHT11 для влажности PIN_8
//======================================= Вычислемые константы, НЕ РЕДАКТИРОВАТЬ!
#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 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() {
  LEDS.addLeds<WS2812, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  bme.begin(); 
  //LEDS.setBrightness(75);            // Задаём яркость
  pinMode(4, INPUT_PULLUP);            // Кнопка смены цветов
  pinMode(3, INPUT_PULLUP);            // Кнопка регулировки минут
  pinMode(2, INPUT_PULLUP);            // Кнопка регулировки часов
}
void BrightDots (boolean Dot_On) {     //координаты мигающих точек
  leds[DOT1] = (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();               // сброить таймер
      new_bright = map(analogRead(3), 1, bright_constant, min_bright, max_bright);   // считать показания с фоторезистора пин А3, перевести диапазон
      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  вместо 0155
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;                         // Получаем последнюю цифру в времени
    int cursor = NUM_LEDS - i * LEDS_IN_SEGMENT * 7;
    if (i > 2) {
      cursor -= 2;
    }
   // if ( (i != 4) || (digit != 0)) BrightDigit(digits[digit], cursor); //24:00 показывает 0:00
   // else BrightDigit(0, cursor);                                        
    BrightDigit(digits[digit], cursor);                              //24:00 показывает 00:00
    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;
 bme.begin(0x76);
  RTC.read(tm);
  if (tm.Second != 15) {                                             //через какое время показывать температуру
    TempShow = false;
    return;  }
  TempShow = true;
  delay(3000);
  int t = bme.readTemperature();
  int celsius = t;
  BrightDots(0);                                                      //разделительные мигающие точки выключены
  BrightDigit(digits[11], (NUM_LEDS - LEDS_IN_SEGMENT * 7));          //65  начало знака Цельсия (*) 4й блок
  BrightDigit(digits[10], (NUM_LEDS - LEDS_IN_SEGMENT * 14));         //44  начало знака Градус (С) 3 блок
  int digit = celsius % 10;
  BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 21 - 2));  //21  2й блок вывода второго символа
  celsius /= 10;
  digit = celsius % 10;
  BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 28 - 2));  //0  1й блок вывода первого символа
};
 //================================================ Измеряем давление
 void PressureToArray() {
  tmElements_t tm;
 bme.begin(0x76);
  RTC.read(tm);
  if (tm.Second != 30) {                                          //через какое время показывать давление
    PressureShow = false;
    return;  }
  PressureShow = true;
  delay(3000);
  int p = bme.readPressure() / 133.322;
  int Pressure = p;
  BrightDots(0);                                                   //разделительные мигающие точки выключены
  BrightDigit(digits[12], (NUM_LEDS - LEDS_IN_SEGMENT * 28 - 2));  //0  начало знака Давления (Р) 1й блок
//  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й блок вывода второй цифры значения
  Pressure /= 10;
  digit = Pressure % 10;
  BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 21 - 2 ));  //21  2й блок вывода первой цифры значения
};
 //================================================Вывод влажности
 void HumidityToArray() {
  tmElements_t tm;
  bme.begin(0x76);
  RTC.read(tm);
  if (tm.Second != 45) {                                       //через какое время показывать влажность
    HumidityShow = false;
    return;    }
  HumidityShow = true;
  delay(3000); 
  int h = bme.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 - 2));  //21  2й блок вывода второго символа
  humidity /= 10;
  digit = humidity % 10;
  BrightDigit(digits[digit], (NUM_LEDS - LEDS_IN_SEGMENT * 28 - 2));  //0  1й блок вывода первого символа
};

//========================================смена цвета ленты кнопкой DST Pin 4
void DSTcheck() {
  int buttonDST = digitalRead(4);
  if (buttonDST == LOW) {
    ledColor =  ColorTable[random(NUM_COLORS)];
  };
  delay(100);//время реакции на нажатие
};

//======================================= Массив управляет кнопками с часами и минутами
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;
  for (int i = 0; i < NUM_LEDS; i++) { // Сдвигаем один светодиод в любом направлении
    leds[i] = CHSV(hue++, 255, 255); // Устанавливаем 1 светодиод на цвет красный
    FastLED.show();                  // Показываем светодиоды
    fadeall();
    delay(10);                       // Ждём немного и повторяем цикл
  }
  for (int i = (NUM_LEDS) - 1; i >= 0; i--) { // Сдвигаем один светодиод в любом направлении
    leds[i] = CHSV(hue++, 255, 255);  // Устанавливаем 1 светодиод на цвет красный
    FastLED.show();                   // Показываем светодиоды
    fadeall();
    delay(10);                        // Ждём немного и повторяем цикл
  }
}
void loop()
{ 
  BrightnessCheck(); // Проверяем датчик освещения
  DSTcheck();        // Проверяем цветовые режимы
  TimeAdjust();      // Проверяем время если сменилось на 1 цифру
  TimeToArray();     // Проверяем часы если сменилось на 1 цифру
  TempToArray();     // температура
  PressureToArray(); //давление
  HumidityToArray(); //если будет влажность
  FastLED.show();    // Задаём массив светодиодов
  if (TempShow == true) delay (4000);    //время показа температуры
  if (PressureShow == true) delay (4000);//время показа давления
  if (HumidityShow == true) delay (4000);//время показа влажности
}
[/code]

 

Владимир 2018
Offline
Зарегистрирован: 17.03.2018

В строке 114 поменяйте цифру 2, например на 1. Скорость мигания должна увеличиться в 2 раза.

b707
Offline
Зарегистрирован: 26.05.2017

AyuOX пишет:

Сейчас все работает показывают часы, температуру, давление и влажность,что и требовалось, но кнопки тупят и точки как то медлено мигают.

ну так зачем же вы в отлаженный код задержек напихали? Я смотрю, у вас программа ровно половину всего времени сидит в операторах delay() - по 7 секунд из каждых 15-ти. Неудивительно, что у вас кнопки тупят...

Как минимум в строчках 152, 173 и197 задержки абсолютно лишние, их надо просто выкинуть. А правильно было бы и строчки 273-275 без delay() переписать.

b707
Offline
Зарегистрирован: 26.05.2017

AyuOX пишет:

а код здесь качал https://community.alexgyver.ru/attachments/new_clock_temp_reloaded-rar.3122/

О, я смотрю Гайверовцы не только в иностранном мнете коды тырят...

Да и на драйве участник рекламирует код как свой :) "код полностью переписан и доведен до ума...."

 

AyuOX
AyuOX аватар
Offline
Зарегистрирован: 07.05.2019

 

Как минимум в строчках 152, 173 и197 задержки абсолютно лишние, их надо просто выкинуть. А правильно было бы и строчки 273-275 без delay() переписать.

[/quote]

Да я бы переписал... если б знал как. Только метод научного тыка. По отдельности время и темп, время и давление, время и влажность работают, а вместе тупят. 

dj-toxa
Offline
Зарегистрирован: 06.04.2016

b707 пишет:

О, я смотрю Гайверовцы не только в иностранном мнете коды тырят...

а кто й та Гайверовцы? не хорошие гаишники =)

b707
Offline
Зарегистрирован: 26.05.2017

dj-toxa пишет:

а кто й та Гайверовцы? не хорошие гаишники =)

Гайверовцы еще ладно, они хотя бы дали ссылку, откуда взяли код. А на драйве.ру кое-кто выложил его на Яндекс-диск и разрекламировал как свой....

b707
Offline
Зарегистрирован: 26.05.2017

AyuOX пишет:

Спустя две недели ковыряния интернета в поисках подходящего кода, и не найдя, пришлось допиливать самому (с помощью рашпеля, и какой то матери) так кат в программирование я ноль.   За основу был взят код от Одиночки пост #190.

 

AyuOX. глянул код внимательнее - что-то я вообще не вижу, чем ваш код отличается от кода Одиночки из №190? И прошу прощения. что наехал за делеи - как оказалось, задержки в код тоже он натащил :) Надо бы этот код по нормальному переписать...

А ваше "двухнедельное ковыряние" в чем заключалось? - спрашиваю не для подкола, а чтобы понять, что вы в коде меняли и где ошибки искать.

 

AyuOX
AyuOX аватар
Offline
Зарегистрирован: 07.05.2019

b707 ..

Да в принципе не чего не менял, только закоментированные убрал и ,, сериал принт,,  да попытался сделать что б с BME280 считывал показания. А ковыряния - это поиски  прикрутки ВМЕ280 ))). 

OdinochkA
Offline
Зарегистрирован: 05.07.2015

Всем доброго времени. Льстит конечно что "код Одиночки", но он был написан совместно. ТАк что это общий труд. Давно не заходил сюда, времени катастрофически не хватает. Пришли мне BME280 и DS1820. Как только появится время. Сразу займусь заменой 180 на 280. Ну и уличный надо поставить. А по поводу делеев, ну так получилось. Кстати за время экплуатации вылезли некоторые косяки. На домашних часах при выставленной максимально яркости, через некоторе время первые блок цифр зависает намертво. И цвет и последняя цифра. Лечится резетом и прикрытием датчика освещенности. Надо будет убрать максимальное значение яркости.

AyuOX
AyuOX аватар
Offline
Зарегистрирован: 07.05.2019

Здравствуйте. У меня на часах смена цвета стоит каждую минуту, и вот при смене три первые сразу меняются а последняя цифра и точки тупят ещё секунду.
И ещё вопрос, можно к часам добавить индикатор уровня громкости? На другой пин ещё ленту повесить?

b707
Offline
Зарегистрирован: 26.05.2017

AyuOX пишет:
Здравствуйте. У меня на часах смена цвета стоит каждую минуту, и вот при смене три первые сразу меняются а последняя цифра и точки тупят ещё секунду.

так и задумано :) А разве это мешает?

Цитата:
И ещё вопрос, можно к часам добавить индикатор уровня громкости? На другой пин ещё ленту повесить?

уровень громкости чего? разве в этих часах есть какие-то звуки?