Совмещение RTC и WS2812b

Snowleopard88
Offline
Зарегистрирован: 05.07.2019

Ситуация такова. Подключаю часы RTC DS3231 Загружаю дату. Всё работает. Подключаю RGB WS2812b. Всё работает. Совмещаю. Перестаёт. Дошло до того, совметсил в одном поекте. Коментирую всё что относится к часам - диоды работают... Вместе нехотят. Куда рыть подскажите.

//#include <iarduino_RTC.h>
#include <FastLED.h>

//iarduino_RTC time(RTC_DS3231);

#define NUM_LEDS 60
#define PIN 1
#define colorOrder GRB

CRGB leds[NUM_LEDS];

long previousMillis = 0;
long interval = 1000;
int i = 0;

void setup() {
  delay(100);
  //  Serial.begin(9600);
  //  time.begin();
  //  time.settime(0, 54, 9, 27, 06, 19, 4);
  FastLED.addLeds<WS2812B, PIN, GRB>(leds, NUM_LEDS);
}

void loop() {

  unsigned long currentMillis = millis();


  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    //    Serial.println(time.gettime("d-m-Y, H:i:s, D"));}
    //int r=time.seconds;

    for (int k = 0; k <= NUM_LEDS; k++)
    {
      leds[k] = CRGB(0, 0, 0);
    }
    leds[i] = CRGB(0, 0, 50);
    i++;
    delay(1000);
    //  Serial.println(r);
    FastLED.show();
  }
}

 

 

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

этот скетч даже без часов будет работать ровно минуту, потом зависнет

sadman41
Offline
Зарегистрирован: 19.10.2016

b707, почему? Я вижу странные подходы в нем, но отчего именно минуту и именно зависнет?

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

sadman41 пишет:

b707, почему? Я вижу странные подходы в нем, но отчего именно минуту и именно зависнет?

строчки 39-40

ну не обязательно прям черех минуту зависнет, но штатно он будет работать 60 сек, потом как повезет

sadman41
Offline
Зарегистрирован: 19.10.2016

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

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

сорри, поправка :) - не минуту, а две :) Не учел делей в строке 41

Snowleopard88
Offline
Зарегистрирован: 05.07.2019

Прикольно. Только вопрос не в этом. То что он зависнет не проблема... И в принципе меня сейчас это не особо волнует. Serial Begin(9600); не дружит с RGB лентой... в принципе не критично.. Но почему?..

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

sadman41 пишет:

Про минуту понял, но повисание негарантированно.

не, тут точно зависнет. i описано как int - значит его хватит перепахать всю память :)

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

Snowleopard88 пишет:

 Serial Begin(9600); не дружит с RGB лентой... в принципе не критично.. Но почему?..

ардуина какая?

Snowleopard88
Offline
Зарегистрирован: 05.07.2019

UNO

sadman41
Offline
Зарегистрирован: 19.10.2016

Во-первых - не надо ленту садить на пины Uart. Во-вторых - delay не нужен.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Snowleopard88 пишет:

Serial Begin(9600); не дружит с RGB лентой... в принципе не критично.. Но почему?..

Вы же ленту на пин последовательного порта повесили (1). Вот и не дружат - делят!

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

Snowleopard88 пишет:

UNO

ну так что ж вы хотите - в Уно пины 0 и 1 заняты по Сериал, а вы на них ленту посадили. Переставте ленту на любой другой пин - и влиять не будет

Snowleopard88
Offline
Зарегистрирован: 05.07.2019

Ясно. Спасибо.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Snowleopard88 пишет:
Serial Begin(9600); не дружит с RGB лентой... в принципе не критично.. Но почему?..

А нефиг было RGB ленту сажать на пин, который Serial испольует. Уберите её с 1-го пина, глядишь, и задружит.