#1 Re: Проекти » Arduino nano - проблема з сервоприводом » Вчора 14:39:28

mohax1685 пише:

Підкажіть а піни сервоприводу я правильно розташував?
Сервопривод Micro Servo 9G
-красний - VIN
-коричневий - GMD
-жовтий - D4

Якщо їх ніхто навмисне не перепаював, то правильно: robojax-servo-sg90_datasheet.pdf. Навряд чи він би взагалі рухався при неправильному підключенні.

Впевніться, що обрана в IDE частота MCU відповідає вашому Arduino Nano (8 чи 16 МГц).

Запустіть демку (приклад) для Servo, що йде в бібліотеці. Тільки ардуіна і серва, без фоторезистора. Працює?

#2 Re: Проекти » Arduino nano - проблема з сервоприводом » 2025-07-17 22:55:49

mohax1685 пише:

при подачі живлення нічого не повинно обертатись, тілько після ліхтарика наведеного на фоторезистр, він обертаеється в одну сторону і повертається назад, та при наведенні  світла в другий раз, він повинен обертатись в іншу сторону і ставати назад

Ось такий опис і потрібно надавати в самому першому повідомленні, при описі проблеми.

mohax1685 пише:

і нічого не працює

"Нічого не працює" - це якщо навіть індикатор живлення не світиться.

#include <Servo.h>

static constexpr int threshold = 700;
static constexpr int hist = 50;

Servo myservo;

void setup()
{
  Serial.begin(9600);
  myservo.attach(4);
  myservo.write(60);
}

static bool alight = false;
static bool dir = false;

void loop()
{
  int val = analogRead(A3);
  Serial.println(val);

  if (alight) {
    alight = val > threshold - hist;
  } else {
    alight = val > threshold + hist;

    if (alight) {
      myservo.write((dir = !dir) ? 0 : 120);
      delay(1000);
      myservo.write(60);
    }
  }

  delay(100);
}

Симуляція. Але в цьому симуляторі у фотоелемента вихід інверсний: чим більше освітлення, тим менший рівень він видає. У вашій схемі навпаки, так що скетч має працювати правильно. Величину порогового значення (threshold) та гістерезису (hist) підбирайте експериментально.

#3 Re: Проекти » Arduino nano - проблема з сервоприводом » 2025-07-17 20:19:59

Здається, можна спростити:

  if (state != dir) {
    if (state) {
      myservo.write(120);
      delay(1000);
      myservo.write(60);
    } else {
      myservo.write(0);
      delay(1000);
      myservo.write(60);
    }
    dir = state;
  }

А prestate не потрібна.

#4 Re: Проекти » Arduino nano - проблема з сервоприводом » 2025-07-17 20:08:16

mohax1685 пише:

я спробував цей код що Ви дали, видало во це:

Воно ж написало вам, в якому рядку що не так. Приберіть ту зайву помилкову дужку:

Serial.println(val);

#5 Re: Проекти » Arduino nano - проблема з сервоприводом » 2025-07-17 19:42:25

mohax1685 пише:

Я прикрипив файл, там є внутрі все щоб розібратись

Із тих картинок в архіві зовсім не зрозуміло, що це за пристрій, і як він має працювати.

mohax1685 пише:

підкажіть будь ласка що можно спробувать?

Якщо вгадав, що при появі освітлення має повернутись в один бік і назад, а при зникненні освітлення має повернутись в інший бік і назад, то має працювати щось типу такого:

#include <Servo.h>
Servo myservo;

void setup()
{
  myservo.attach(4);
  pinMode(A3, INPUT);
  myservo.write(60);
  Serial.begin(9600);
}

bool prestate;
bool dir;

void loop()
{
  int val = analogRead(A3);
  Serial.println(val));
  bool state = val > 700;

  if (state != prestate) {
    if (state && !dir) {
      myservo.write(120);
      delay(1000);
      myservo.write(60);
      dir = true;
    } else if (!state && dir) {
      myservo.write(0);
      delay(1000);
      myservo.write(60);
      dir = false;
    }
    prestate = state;
  }

  delay(100);
}

(Не компілював, не перевіряв).

Але ж тут нема ніякого гістерезису. На граничних значеннях освітлення буде тіліпатись туди-сюди.

#6 Re: Проекти » Arduino nano - проблема з сервоприводом » 2025-07-17 17:00:38

У вас весь цей код:

mohax1685 пише:

      if (dir == 0) {
        myservo.write(120);
        delay(1000);
        myservo.write(60);
        dir = 1;
      } else {
        myservo.write(0);
        delay(1000);
        myservo.write(60);
        prestate = state;
        dir = 0;
      }

виконується тільки коли state == 1. Коли state == 0, нічого взагалі не виконується.

#7 Re: Проекти » Arduino nano - проблема з сервоприводом » 2025-07-17 16:54:46

mohax1685 пише:

при підсвітці фонарем серво привод повинен рухатись раз в одну сторону, при другому освітленні в іншу сторону.

Що значить "рухатись раз в одну сторону"? Що значить "друге освітлення"?

mohax1685 пише:

Я зібрав все по схеме

Покажіть цю схему.

mohax1685 пише:

фоторезистор показує значення різні

Які саме значення?

mohax1685 пише:

але сервопривод просто крутиться і все

Перевіряли, чи працює керування сервоприводом взагалі? Без фоторезистора?

void loop()
{
    myservo.write(120);
    delay(1000);
    myservo.write(60);
    delay(1000);
}

Не відноситься до проблеми, але навіщо читати аналоговий вхід два раза підряд?

  val = analogRead(A3);
  Serial.println(val);
  state = val > 700;
  ...

#8 Re: Апаратні питання » WS2812B і кольори » 2025-07-14 14:36:15

jokeR пише:

У китайців 3-й байт передається трохи інакше - довжина імпульсу не 1 мкс, а 0.75.

LGT8F сумісна з AVR на рівні кодів інструкцій, але несумісна на рівні таймінгів. І FastLED наче б то це враховує, використовуючи подвійний nop замість rjmp.
Ви ж, сподіваюсь, платформу та фреймворк lgt8fx використовуєте для LGT8F, а не atmelavr та arduino-avr?
Можете зарепортити issue у FastLED.

jokeR пише:

Як вони цього добились (і навіщо) - незрозуміло.

Навіщо - для підвищення швидкодії, для чого ж іще.

Як уже згадував вище, в одному з перекладів даташита присутні дивні значення таймінгів "1/2" для інструкцій, що не виконують умовних переходів. Це мало би означати, що в деяких випадках інструкція виконується за 1 такт, а в деяких за 2. Для інструкцій умовного виконання це зрозуміло, а от що це значить для безумовних LD? Ніякого толкового опису поки що не зустрічав.

Нажаль, не маю під рукою LGT8F, щоб поекспериментувати. Як буду колись щось купляти потрібне, то, мабуть, замовлю в довісок і такого звіра.

#9 Re: Апаратні питання » WS2812B і кольори » 2025-07-12 23:23:25

jokeR пише:

У вас немає імпульсів ні 0.75 мкс, ні 1 мкс. А у мене є. У мене FastLED@^3.10.1. А у вас?

Я брав останню версію з master гілки. В директорії lib/ проекта platformio:

git clone https://github.com/FastLED/FastLED

На той момент вона була на цьому місці. Тобто 3.10.1 + десь 1000 комітів зверху smile

Але ж я запускаю на atmega328p, з platform=atmelavr і board=pro16MHzatmega328.
Прошивку з platform=lgt8f у мене нема на чому запустити.

#10 Re: Апаратні питання » WS2812B і кольори » 2025-07-12 20:00:38

jokeR пише:

Просто у вас кольори розшифровуються а в мене ні.

А "0: r=ff g=ff b=ff" - хіба не декодування кольорів? Чи воно завжди "ff" пише?

#11 Re: Апаратні питання » WS2812B і кольори » 2025-07-12 19:58:24

jokeR пише:

Хм, те ж. Але не знайшов як ним читати цей протокол і встановив плугін https://github.com/dustin/logic-ws2812
Просто у вас кольори розшифровуються а в мене ні.

У мене "Addressable LEDs (Async)":
2025-07-12-195231_313x612_scrot.png
Він в самому пакунку йде, /opt/saleae-logic2/resources/linux-x64/Analyzers/libasync_rgb_led_analyzer.so.

#12 Re: Апаратні питання » WS2812B і кольори » 2025-07-12 18:06:43

jokeer пише:

А ваш аналізатор протоколу rgb трохи інакше виглядає. Що за програма? wink

Saleae Logic 2 v2.4.29

#13 Re: Апаратні питання » WS2812B і кольори » 2025-07-12 17:23:36

jokeR пише:

Частота виборок в пробнику наче 24 мгц, повинно вистачити. https://arduino.ua/prod651-logicheskii-analizator-saleae-8-kanalov

Так, цілком. Такий аналізатор теж 875 нс показує як 875 нс:
250712_salae-logic2.png

jokeR пише:

хіба що дійсно чудеса китайського контроллера.

Або така особливість реалізації в FastLED. Хто зна, на стрічках з якими чіпами її тестували. Може на одних варіантах чіпів воно і так працює, а на інших уже ні.

Цікаво, що в цьому описі LGT8F88P/LGT8F168P/LGT8F328P значить "Cycle: 1/2" для сімейства інструкцій LD, які без розгалуження?
А ще ж є LGT8F328 з індексом P, а є з індексом D. Може у них і таймінги інструкцій теж різні.

#14 Re: Апаратні питання » WS2812B і кольори » 2025-07-12 14:36:37

jokeR пише:

О, ви не з такої сім"ї як всі wink З багатої wink) І така само нога але не болить wink

Не вловив причини для сарказму. Ви ж наче хотіли розібратись, в чому причина глюків. Ну, якщо просто пожалітись, то нема питань smile

jokeR пише:

Є підозра на fastled+lgt8f328

Щоб зняти підозру, є сенс скомпілювати і перевірити на оригінальній AVR. Ви ж тільки в 4-му повідомленні згадали, що у вас МК несумісний з AVR по таймінгам інструкцій.

В FastLED є якась поправка для LGT8F. А макрос __LGT8F__ визначається в pins_arduino.h фреймворка. Ви ж цей фреймворк використовуєте? Хоча скомпільований для AVR і запущений на LGT8F код мав би давати навпаки, коротші таймінги, а не довші.

В microLED взагалі LGT8F визначається по F_CPU == 32000000UL.

jokeR пише:

У нас логічний пробник за 5 баксів.

Ну, частота виборки у нього більша за 8 МГц? Інакше сенсу в таких вимірах ніякого.

jokeR пише:

Бо якщо не намагатись використовувати всі кольори одночасно - працює як очікувано.

Я так і не зрозумів, "всі кольори одночасно" - це на одному чіпі чи на всіх у стрічці? Може дійсно, просто струму живлення не вистачає.
Я би в першу чергу спробував різні варіанти: увімкнути тільки один, перший, в комбінаціях RG, RB, GB, RGB. Потім те ж саме, тільки з другим по порядку. Потім уже з усіма на стрічці. З того, чи відрізняються результати при цих варіантах, можна робити якісь висновки.

Також, у вищезгаданій статті:

UPDATE 11/2/2020: There are some new WS2812B and WS2813 chips that require a minimum 250,000ns latch time. If you are seeing lots of flashing, you might have some of these new chips so try increasing the latch low time. More info here.

Може якраз ваш випадок.

#15 Re: Апаратні питання » WS2812B і кольори » 2025-07-11 18:46:13

Не знаю, що ви там компілюєте, на чому запускаєте і чим міряєте.

Ось ця програма:

#include <FastLED.h>

CRGB leds[8] = { 0 };

void setup()
{
    FastLED.addLeds<WS2812, A3, GRB>(leds, sizeof(leds)/sizeof(*leds));
    leds[0] = CRGB::White;
    FastLED.show();
}

void loop() {}

з FastLED у поточному стані гілки master на Pro Mini 16 МГц видає чесні 875 нс для TH:

SDS00001.png

Те ж саме з WS2812B, що не дивно, бо для FastLED це один і той же контролер.

Ось така смужка світиться нормально, без всяких артефактів.

#16 Re: Апаратні питання » WS2812B і кольори » 2025-07-10 14:49:41

jokeR пише:

Але TH=1us , коли потрібно 0.8+-0.15..

Відповідно до коду, має би бути 0.875 мкс.
А TH=1 мкс при TH+TL=1.25 мкс відповідає UCS2903.

#17 Re: Апаратні питання » WS2812B і кольори » 2025-07-10 14:12:06

jokeR пише:

https://github.com/GyverLibs/microLED/ - я сюди дивлюсь.

А, там так. Я в AlexGyver/GyverLamp дивився.

#18 Re: Апаратні питання » WS2812B і кольори » 2025-07-10 13:57:48

jokeR пише:

Але TH=1us , коли потрібно 0.8+-0.15..

Пишуть, толерантність до таймінгів у цих чіпів по факту вища, ніж заявлено. Але може не у всіх smile

У FastLED гранулярність 125 нс навіть при 16 МГц: src/chipsets.h:773

jokeR пише:

У Гувера свій імпортозаміщонний лісапет, і там з таймінгами зовсім дивно.

Там же явно лежить libraries/FastLED-3.2.9, хіба ні? Чи ми дивимось у різні репозиторії?

#19 Re: Апаратні питання » WS2812B і кольори » 2025-07-10 11:01:30

Ще би напевно знати, на яких точно чіпах у вас стрічка. По "даташитах" у WS2812 та WS2812B таймінги трохи відрізняються, хоча в межах допусків один одного. А SK6812 (теж 4 ноги) в допуски для WS2812B уже не попадає.
Хоча все одно при 16МГц гранулярність таймінгів краще ніж 62.5 нс не отримати.

#20 Re: Апаратні питання » WS2812B і кольори » 2025-07-10 10:34:34

jokeR пише:

https://forum.arduino.ua/img/members/3983/2025-07-10_09-41.png
Хм, дійсно якась фігня. Передається FFFFFF FFFFFF FFFFFF FFFFFF 000 000 000 000

На картинці передається Green: 0x58 / Red: 0x80 / Blue: 0x78 на 4 світлодіоди, потім 0/0/0 ще на 4. Тільки шкали часу не видно. Але аналізатор декодував правильно, так що з таймінгами, мабуть, все ок.

jokeR пише:

Спробую іншу лібу. Гувер обіцяв, що його ліба підтримує китайску ардуїну wink

Це в першу чергу потрібно уточнювати, яка саме ліба якої версії використовується. Гуверняна ліба, мабуть же, клон від цієї.

Якщо у клона МК таймінги виконання інструкцій такі ж, як у оригінала, то працюватиме так само як на оригіналі.

#21 Re: Апаратні питання » WS2812B і кольори » 2025-07-09 17:15:26

jokeer пише:

Коли RGB - червоний, який виглядає як зелений, не вирубає а трохи приглушує wink

У зеленого падіння напруги вище, ніж у червоного, але нижче, ніж у синього.
Так в першу чергу потрібно визначити, чи це FastLED якусь гама-корекцію програмно застосовує, чи особливість самого чіпа.

Я би взагалі запідозрив, що живлення по струму не витягує, і просто напруга просідає. Але якщо кажете, що вмикання навіть одного червоного впливає на всі сині, то не схоже. Скільки у вас там всього чіпів? Пробували тільки з одним єдиним?

#22 Re: Апаратні питання » WS2812B і кольори » 2025-07-09 16:00:57

Чи це тільки з FastLED такі ефекти, а якщо напряму всунути в стрічку 255/255/255, то світиться нормально?

#23 Re: Апаратні питання » WS2812B і кольори » 2025-07-09 15:54:16

jokeer пише:

але не так все просто. Синій виглядає не так яскраво як зелений і червоний. Коли хоч один led червоний - всі сині гаснуть. Якась магія.

Це не магія, це гівняний китайський дизайн. У червоного найменше падіння напруги, у синього найбільше. Є припущення, що там керується струм не тільки окремо по кожному каналу, а й загальний. Коли червоний вмикається, напруга просідає, і синьому вже не вистачає. Хоча, як там воно насправді реалізовано в залізі - мабуть, тільки розробнику чіпа відомо.

#24 Re: Апаратні питання » WS2812B і кольори » 2025-07-09 10:26:17

jokeR пише:
 FastLED.addLeds<WS2812B, LED_DATA_PIN, RGB>(leds, NUM_LEDS);
 FastLED.addLeds<WS2812B, LED_DATA_PIN, GRB>(leds, NUM_LEDS);

WS2812B.pdf, остання сторінка.
src/eorder.h:9

#25 Re: Апаратні питання » WLED ESP32+SK6812v » 2025-07-08 20:17:27

WishMaster89 пише:

Ось  відео   на  ютуб  залив як   працює  воно з SP108E   від ЛБП     з живленням і 5v і  12v

Ну, по відео різниці не дуже помітно, як і очікувалось. Тільки, мабуть, стрічка гріється сильніше.

WishMaster89 пише:

ЧИ проти правил  буде якщо я  скажу свое  ТГ   і ми  там може  скоріш  спробуемо  разом  перемогти  цей момент

А сенс? Ви скажіть, що саме хочете перемогти smile Наскільки розумію, проблема в тому, що з SP108E працює, а з ESP32 не працює, так?
Що і при яких умовах перевірити, вам уже порадили. Зробити це, крім вас, ніхто не зможе. В залежності від результату можна буде розуміти, в якому напрямку рухатись далі.

Підвал форуму