#52 Re: Програмування Arduino » switch працює лише з повними рівняннями, чи можливо вказати діапазони? » 2025-08-06 12:12:43

Тоді можна використати wink
Взагалі щоб задати правильне питання, треба знати половину відповіді. А якщо знаєш половину відповіді - іншу половину, скоріше за все, теж знаєш wink

#53 Re: Програмування Arduino » Чи є інструменти для перевірки наявності вивода у плати за номером? » 2025-08-06 12:02:25

void digitalWrite(uint8_t pin, uint8_t val)
{
	uint8_t timer = digitalPinToTimer(pin);
	uint8_t bit = digitalPinToBitMask(pin);
	uint8_t port = digitalPinToPort(pin);
	volatile uint8_t *out;

	if (port == NOT_A_PIN) return;

Можна так
Або почитати як влаштовано pins_arduino.h

щоб не множити окремі скетчі до різних плат

#idef __AVR_ATmega8__

#else

#endif

Для кожної вашої каменюки - свій ifdef.  І зробити, щоб під неправильний камінь не зібралось. І буде вам щастя.

#54 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 17:18:39

Бо не домовились що робити з пустими полями.
Взагалі без розуміння задумки автора - складно.

#55 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 16:19:33

sizeof(data)/sizeof(data[0]) часто зустрічаю. Теж не люблю.  А так.. Неочевидно трохи. Я здогадуюсь що в С масив і вказівник майже синоніми, і так теж можна. Але в такому записі легко допустити помилку, і компілятор її нормально пропустить. І фіг потім знайдете що не так wink

#56 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 15:41:38

sizeof(data)/sizeof(*data)

Не люблю. І щось мені здається що там помилка wink

#define DATA_SIZE 10
int data[DATA_SIZE];

Просто і зрозуміло.

#57 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 15:26:15

розділення на масив має буте швидше, ниж займатися розділом після отримання...

Число операцій приблизно однакове. Розпихувати операції з розбором окремих полів має смисл, якщо одна велика операція в ваші обмеження не влізе. Ну, зробите це окремою функцією, будете викликати після кожного розділювача. Головне - не робити суперфункцій з суперциклами і глобальними суперзмінними. Робіть функції прості і зрозумілі.

#58 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 14:22:55

Ви намагаєтесь робити складно. Робіть просто.
1. просто приймайте символи в буфер. Коли приймете n - обробіть весь буфер зразу. Якщо буфер переповниться - ну, придумайте щось. Це помилка в даних.
2. обробка буфера. знаходите розділювачі полів, викусюєте частини з цифрами, перетворюєте в int. int кидаєте в масив.
Весь алгоритм.
Не треба придумувати байто@0bства на рівному місці. Не треба економити рядки коду. Не треба придумувати саморобні парсери. atoi нормально працює.

#59 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 11:28:09

В тому й річ що ніяк. На то воно й undefined. Стежте за попередженнями компілятора, хоча це 100% гарантії не дасть, на цей код він не дає попереджень. Є статичні аналізатори, хттпс://cppcheck.sourceforge.io/demo/ наприклад. Цей ловить.

Cppcheck 2.10

[test.cpp:10]: (error) Array 'rArr[10]' accessed at index 10, which is out of bounds.

Done!

#60 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 10:09:03

filat18 пише:
jokeR пише:

Ось наприклад я взяв такий код ....

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

Це відноситься до експлуатації undefined behavior. Вам просто повезло що байти удачно розмістились.

#61 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 09:42:26

Ну, а delay() у вас там навіщо?

void loop() {
  String textcom = ""; // переменная для сбора текста из сом-порта    
  while (Serial.available() > 

Пояснюю ще раз.
Як тільки ця умова перестане виконуватись - ви вивалитесь з функції loop(). Це відбудеться, коли ви читаєте з порту швидше ніж туди пишуть. При наступному запуску (це відбувається дуже швидко) String textcom  знову очиститься.
Не треба робити ініціалізацію таким чином. Робіть її в setup. І очищайте буфер коли вам потрібно.
А нестабільність тому, що вам треба підібрати точно таку затримку, щоб читати з точно такою швидкістю, з якою туди пишуть. Очевидно, це неможливо.

#62 Re: Програмування Arduino » Чому повідомлення не вдається розкласти в масив без затримки часу » 2025-08-05 09:34:27

Ну так ви зробили щось не те що вам пропонували.
Ось наприклад я взяв такий код

#include <stdio.h>
int rArr[10]; // = {0}; 
int rIndex; // = 0; 
int main()
{
  rArr[10] = {0};
  rArr[1] = 1;
  rIndex = 0;
    return rIndex+rArr[0];
}

і прогнав його через godbolt.org

__SP_H__ = 0x3e
__SP_L__ = 0x3d
__SREG__ = 0x3f
__tmp_reg__ = 0
__zero_reg__ = 1
rArr:
        .zero   20
rIndex:
        .zero   2
main:
        push r28
        push r29
        in r28,__SP_L__
        in r29,__SP_H__
.L__stack_usage = 2
        sts rArr+20+1,__zero_reg__ ; тут видно, що rArr[10] = {0};  попадає мимо масиву. насправді обнуляється rIndex
        sts rArr+20,__zero_reg__
        ldi r24,lo8(1)
        ldi r25,0
        sts rArr+2+1,r25
        sts rArr+2,r24
        sts rIndex+1,__zero_reg__ ; rIndex = 0; - обнуляється ще раз
        sts rIndex,__zero_reg__
        lds r18,rArr
        lds r19,rArr+1
        lds r24,rIndex ж 
        lds r25,rIndex+1
        add r24,r18
        adc r25,r19
        pop r29
        pop r28
        ret

Вам просто повезло.

#63 Re: Апаратні питання » Живлення від type-c » 2025-07-26 13:06:23

Упсь. Без резистора 3.48В. Походу підтяжка 5.1к на 3.3в.
Упсь №2. Якщо підключити тільки 1 резистор, а другу лінію залишити вільною - запускається.
1682380786_papik-pro-p-nichego-ne-ponyatno-no-ochen-interesno-sti-25.jpg

#64 Re: Апаратні питання » Живлення від type-c » 2025-07-26 11:33:09

Не розпарсив hmm

Сорян, радіоринок на Караваєвих дачах wink Думаю що постачальники ті ж самі.

А тепер саме цікаве. вношу в лінію CC свою ємність (лізу міряти напругу) - і зарядка запускається. І продовжує працювати далі. Неочікуваний спецефект.

#65 Апаратні питання » Живлення від type-c » 2025-07-25 10:36:11

jokeR
відповідей: 8

З"явилась необхідність отримати 5В від зарядки з виходом type-c. Судячи з манів, просто так вона їх не віддасть. Треба щоб із сторони пристрою на лініях CC1 і CC2 були pull down резистори 5.1к. В роз"ємі що я купив - pull-up на 56к, тобто це роз"єм для зарядки. Ок, читаю хттпс://electronics.stackexchange.com/questions/688168/usb-c-c2c-xn005-56-as-5v-power-supply, киваю, перепаюю резистори. Все одно не працює. На резисторах падає 1.6В, зарядка напругу не віддає sad
Що я пропустив?

#66 Re: Апаратні питання » WS2812B і кольори » 2025-07-14 14:55:53

Ви ж, сподіваюсь, платформу та фреймворк lgt8fx використовуєте для LGT8F, а не atmelavr та arduino-avr?

Обіжаєте wink

[env:LGT8F328P]
platform = lgt8f
board = LGT8F328P
framework = arduino

Можете зарепортити issue у FastLED.

Ну, так.
Походу, для LED стрічок це не найкращий контроллер wink

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

А тепер слайди wink
Так виглядає білий колір на atmega328
atmega328
А так - на lgt8f328
2025-07-14_12-44-lgt8f328.png

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

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

У мене "Addressable LEDs (Async)":

Моі глаза.. sad Я шукав 2812 і не знайшов.. Ну хоч одна загадка розгадана. Навіть дві. У вас немає імпульсів ні 0.75 мкс, ні 1 мкс. А у мене є. У мене FastLED@^3.10.1. А у вас?

#69 Re: Апаратні питання » WS2812B і кольори » 2025-07-12 19:38:52

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

#70 Re: Апаратні питання » WS2812B і кольори » 2025-07-12 16:02:55

Не вловив причини для сарказму.

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

2025-07-12_15-50.png

2025-07-12_15-51.png

Різні байти (B і R) передаються з різними таймінгами - в мене немає пояснень цьому, хіба що дійсно чудеса китайського контроллера.

Згоден, без експеримента з оригінальною ардуїною нічого не скажеш.

#71 Re: Апаратні питання » WS2812B і кольори » 2025-07-11 23:42:18

О, ви не з такої сім"ї як всі wink З багатої wink) І така само нога але не болить wink
У нас логічний пробник за 5 баксів. І lgt8f238, начебто покращена копія atmega, але це не точно wink І індикатор куплений по скаженій знижці wink)
Можливо індикатор трохи підгулявший. Бо якщо не намагатись використовувати всі кольори одночасно - працює як очікувано. В принципі, для індикатора рівня цього досить.

#72 Re: Апаратні питання » WS2812B і кольори » 2025-07-10 14:03:02

https://github.com/GyverLibs/microLED/ - я сюди дивлюсь. няп fastled йому потрібен тільки для сумісності з кольорами в стилі fastled. асемблерний код свій.

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

2025-07-10_11-14.png

Таймінги досить дивні.
TH+TL=1.25us - зберігається
Але TH=1us , коли потрібно 0.8+-0.15..

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

#74 Re: Апаратні питання » WS2812B і кольори » 2025-07-10 09:44:46

2025-07-10_09-41.png

Хм, дійсно якась фігня. Передається FFFFFF FFFFFF FFFFFF FFFFFF 000 000 000 000

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

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