Показано с 1 по 7 из 7
  1. #1
    Пользователь Аватар для enemy
    Регистрация
    15.11.2018
    Сообщений
    83
    Спасибо Поставлено благодарностей 
    0
    Спасибо Получено благодарностей 
    3
    Спасибо за
    3 сообщ.

    По умолчанию бинарные часы

    если кому интересно, поделюсь кодом, когда допишу его
    Вложения Вложения

  2. #2
    Администратор Аватар для ASidneff
    Регистрация
    29.04.2015
    Адрес
    Ярославль
    Возраст
    34
    Сообщений
    833
    Спасибо Поставлено благодарностей 
    15
    Спасибо Получено благодарностей 
    1
    Спасибо за
    1 сообщение

    По умолчанию Re: бинарные часы

    В чём прикол? Можно подробнее?!

  3. #3
    Пользователь Аватар для enemy
    Регистрация
    15.11.2018
    Сообщений
    83
    Спасибо Поставлено благодарностей 
    0
    Спасибо Получено благодарностей 
    3
    Спасибо за
    3 сообщ.

    По умолчанию Re: бинарные часы

    Цитата Сообщение от ASidneff Посмотреть сообщение
    В чём прикол? Можно подробнее?!
    постарался нарисовать понятно
    цвета это часы, минуты и секунды
    каждый цвет разбит на 6 секторов
    сектора это биты значения времени
    20+21+22+23+24+25 = 1+2+4+8+16+32
    суммируем включенные биты и получаем время
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Безымянный.jpg 
Просмотров:	18 
Размер:	45.5 Кб 
ID:	1428  

  4. #4
    Администратор Аватар для ASidneff
    Регистрация
    29.04.2015
    Адрес
    Ярославль
    Возраст
    34
    Сообщений
    833
    Спасибо Поставлено благодарностей 
    15
    Спасибо Получено благодарностей 
    1
    Спасибо за
    1 сообщение

    По умолчанию Re: бинарные часы

    Из серии: Сколько времени? - Щас на калькуляторе посмотрю...
    Прикольно! Для учителей физики и математики!!! Вещь!

  5. #5
    Пользователь Аватар для enemy
    Регистрация
    15.11.2018
    Сообщений
    83
    Спасибо Поставлено благодарностей 
    0
    Спасибо Получено благодарностей 
    3
    Спасибо за
    3 сообщ.

    По умолчанию Re: бинарные часы

    Цитата Сообщение от ASidneff Посмотреть сообщение
    Из серии: Сколько времени? - Щас на калькуляторе посмотрю...
    Прикольно! Для учителей физики и математики!!! Вещь!
    сложить несколько чисел можно и без калькулятора
    разминка для ума, и просто красивая хрень, коротая мигает огоньками
    учитывая что использованы ws2812 можно еще эффектов наркутить
    и вообще идея оформить это в корпусе на подобии часов хищника, чтобы вообще не понятно было
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Безымянный.jpg 
Просмотров:	16 
Размер:	147.5 Кб 
ID:	1429  
    Последний раз редактировалось enemy; 04.10.2020 в 11:45.

  6. #6
    Администратор Аватар для ASidneff
    Регистрация
    29.04.2015
    Адрес
    Ярославль
    Возраст
    34
    Сообщений
    833
    Спасибо Поставлено благодарностей 
    15
    Спасибо Получено благодарностей 
    1
    Спасибо за
    1 сообщение

    По умолчанию Re: бинарные часы

    Скидывай код! Посмотрим! Ну и инструкцию.

  7. #7
    Пользователь Аватар для enemy
    Регистрация
    15.11.2018
    Сообщений
    83
    Спасибо Поставлено благодарностей 
    0
    Спасибо Получено благодарностей 
    3
    Спасибо за
    3 сообщ.

    По умолчанию Re: бинарные часы

    код прямо очень сырой :)
    написан буквально за 15 минут, ради проверки
    должен работать с модулем часов реального времени, но еще не проверял
    кнопки настроек тоже еще не добавил (или энкодер, еще не решил)
    потому, выводится время прошивки
    матрица была спаяна вертикальным зигзагом, но это не принципиально в коде есть таблица для корректировки

    Код:
    #include <FastLED.h>
    #include <Wire.h>
    #include <RTClib.h>
    
    RTC_DS3231 rtc;
    
    #define LED_PIN     13    //выход ленты
    #define COLOR_ORDER GRB
    #define CHIPSET     WS2811
    #define NUM_LEDS    18    //кол-во лиодов
    #define BRIGHTNESS  55    //яркость
    
    CRGB leds[NUM_LEDS];
    CRGB templeds[NUM_LEDS];
    
    uint16_t  h, m, s;        //переменные часов
    long clkTime = 0;
    char myArray[8];
    String systime;
    
    void upTime() {           //обновление времени
        s++;
        if (s > 59) 
        {
          s = 0;
          m++;
        }
        if (m > 59) 
        {
          m = 0;
          h++;
          if (h > 23) h = 0;
        }
      for (byte i = 0; i < 6; i++)  //цикл заполнения ленты
      {
        if (bitRead(h, i))
          templeds[i+12] = CRGB::Blue;
        else
          templeds[i+12] = CRGB::Black;
        if (bitRead(m, i))
          templeds[i+6] = CRGB::Green;
        else
          templeds[i+6] = CRGB::Black;
        if (bitRead(s, i))
          templeds[i] = CRGB::Red;
        else
          templeds[i] = CRGB::Black;
      }
        Serial.print(h);
        Serial.print(":");
        Serial.print(m); 
        Serial.print(":");
        Serial.println(s);
        bitPrint(s);
        Sortled (); 
        FastLED.show();
    }
    
    void bitPrint(uint16_t temp)    //временная процедура
    {
      Serial.print("0b");
      for (byte i = 0; i < 6; i++)
      {
        Serial.print(bitRead(temp, i)? "1" : "0" );
      }
      Serial.println();
    }
    
    void Sortled () {             //просто потому что, лень писать алгоритм заполнения ленты )
      const uint32_t XYTable[] = {
         2,  1,  0,  
         5,  4,  3,
         8,  7,  6,  
        11, 10,  9,
        14, 13, 12, 
        17, 16, 15
      };
          for (int k=0; k < NUM_LEDS; k++) {
          leds[XYTable[k]] = templeds[k];
        }
    }
    
    void setup() {
      Serial.begin(115200);
      FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
      FastLED.setBrightness( BRIGHTNESS );
    
      if (! rtc.begin()) {    
        Serial.println("Couldn't find RTC");
        while (1);
      }
    
      if (rtc.lostPower()) {  //если РТС не подключен, выводим время компиляции скетча
        Serial.println("RTC lost power, lets set the time!");
        rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
        systime =  F(__TIME__);
        Serial.println(systime);
        h=systime.substring(0, 2).toInt();
        m=systime.substring(3, 6).toInt();
        s=systime.substring(7, 10).toInt();
        Serial.print("now - ");
        Serial.print(h);
        Serial.print(":");
        Serial.print(m); 
        Serial.print(":");
        Serial.println(s);
      }
      DateTime now = rtc.now();
      /* потом раскоментировать
      h=now.hour();
      m=now.minute();
      s=now.second();
      */
    }
    
    void loop() {
       if(millis()-clkTime > 1000) {
        clkTime = millis();
        upTime();
       }
    }
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	IMG_20201005_085122.jpg 
Просмотров:	16 
Размер:	262.4 Кб 
ID:	1430  
    Последний раз редактировалось enemy; 05.10.2020 в 08:18.

  8. 1 благодарность:

    ASidneff (05.10.2020)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •