#1 Re: Проекти » Побудова сигналізації обриву шлейфу на базі реле HFD27/005H та Arduino » 2026-06-30 08:03:20

Моніторити потрібно зміни опору, бо кабель не лише просто перерізати можна, а і підключити паралельно хибний, щоб справжній потім перерізати.

#2 Re: Програмування Arduino » Вимірювання швидкості обертання за допомогою квадратурного енкодера » 2026-06-14 09:03:50

dimich пише:

А тут не зрозумів, чому 8? Pulses Per Revolution - кількість імпульсів на оберт на одній фазі, так же? У імпульса два фронта, фази дві, виходить 4 фронта. Чи там прогальність не 50%? На картинці з осцилограмою наче схоже на 50%.
Якщо не 50%, або фази зсунуті не на 90°, тоді, звісно, потрібно робити поправку.

Саме так, не гарантується 90, з даташита:
Phase difference between outputs  90°±45° between A and B (1/4 T ± 1/8 T)

#3 Re: Програмування Arduino » Вимірювання швидкості обертання за допомогою квадратурного енкодера » 2026-06-13 09:58:23

dimich пише:

t = 1 / (rpm_max * 60 * ppr * 4)

t = 1 / ((rpm_max / 60) * ppr * 8)

rpm треба ділити на 60, а коефіцієнт 8, бо по даташиту 1/4 оберту з точністю +-1/8

Якщо підставити rpm_max=6000 з даташиту і мінімальний ppr=10, то t=125мкс, таке потягне лічильник, якщо живити від зовнішнього джерела (там вказано 200мкс, але то зі значним запасом), квадратурний декодер вже підтримується

#4 Re: Апаратні питання » Проблема із зарядкою батареї » 2025-12-28 16:46:20

follet пише:

Коли вмикають світло, я бачу на зарядці зеленій світлодіод, тобто до зарядки надходить живлення, проте як ви вірно підмітили, можливо спрацьовує "розумний" захист і далі зарядка не віддає нічого. Чому так відбувається, можливо зарядка отримує великий імпульс струму, і думає, що цього забагато і вмикає захист. В мене нема тестера, я це перевірити не можу.

Швидше за все, заряджаються конденсатори на вході перетворювачів, споживається великий струм і зарядка іде в захист від КЗ, при цьому напруга не встигає піднятись вище порогу відключення захисту в батареї.
Спробуйте відключити один з перетворювачів і проведіть експеримент.
Я б рекомендував у такій схемі, щоб струм споживача був <0.1C, а струм зарядки 0.5..1C.

#5 Re: Програмування Arduino » Куди зникає ємкість » 2025-12-22 17:08:40

Виходячи з ідеї, яка тут використовується, додавання довгих провідників (опорів, індуктивностей) не вплине на результат, але мають закінчитись перехідні процеси. Додайте в коді безпосередньо перед analogRead() невеликий delay().

#6 Re: Програмування Arduino » Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306 » 2025-11-26 09:31:44

Датчики ніяк ініціалізувати не потрібно. А ви все точно скопіювали зі старої: і схему, і прошивку, і EEPROM? (раптом ідентифікатори датчиків в EEPROM зберігались)

#7 Re: Програмування Arduino » Регістрова змінна » 2025-08-20 20:45:33

В avr-gcc можна об'явити глобальну змінну:
register uint8_t myregvar asm("r16");
вона гарантовано буде в r16, але код на C не буде з нею працювати оптимально.
На asm (або вставками на asm) з нею можна працювати як завгодно оптимально і одночасно мати доступ з C, це зручно, коли частина проекту на asm, а частина на C.

upd:
якщо потрібна двобайтова змінна, то:
register uint16_t myregvar asm("r16");
в коді на asm r16 буде молодшим, r17 - старшим

#9 Re: Програмування Arduino » Arduino vs LCD Trium Mars трабл » 2025-08-14 22:45:56

dimich пише:

Доречі, вам не вдавалось піднімати w1-uart на x86? У мене з наскоку не вийшло, схоже, потрібно патчити таблицю ACPI. Поки що не розібрався, як це правильно зробити.

В мене колись також з наскоку не вийшло розібратися як приєднати serdev до пристрою без використання DT, так щоб з командного рядка за бажанням, тому забив на нього і написав драйвер через ldisc. Через ldisc у драйвера нажаль відсутня можливість керувати baudrate, так би я до пари написав би і w1-uart )) , бо добре розібрався з нутрощами W1.

dimich пише:

Драйвер для CH341A я тільки підтримую, щоб компілювався для сучасних ядер.

А що там не так з ch341, що він працює максимум на 250000 BAUD, а далі таке враження, що в нього там буфер на читання лише 32 байти? Пробував ось цей, 500000 BAUD тягне.

#10 Re: Програмування Arduino » Arduino vs LCD Trium Mars трабл » 2025-08-14 20:07:55

dimich пише:

Тільки для SPI-дисплеїв все одно доведеться задіяти GPIO, бо як мінімум ще DATA/COMM треба смикати.

dimich пише:

Якщо хочеться ще GPIO, наприклад, для RST, то треба поправити таблицю в коді та перезібрати драйвер. Все руки не дійдуть реалізувати цю конфігурацію у вигляді параметра.

Подивіться ось тут ідею, як використовуючи другий CS керувати DATA/COMM та отримати додаткові бонуси від двох SPI.
Може і необхідність правити відпаде)

#12 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-13 22:27:58

dimich пише:
Honey пише:

А ШІМ на outMotorOil завдяки ось цим незалежним одна від одної умовам

Є таке. Тільки чому така залежність від версії core, різниця в реалізації millis() не мала би так впливати. Хоча тут спостерігається залежність і від частоти вхідних імпульсів.

Може це не від core залежить, а від даних в EEPROM? Спробуйте помістити в кінець setup:
ImpulseOilMotor = maxImpulseOilMotor+1;

#13 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-13 21:43:57

А ШІМ на outMotorOil завдяки ось цим незалежним одна від одної умовам:

if (millis() - TimeStart > RoadTime * 1024) {
        digitalWrite(outMotorOil, HIGH);
...
if (millis() - TimeStart > RainTime * 1024) {
        digitalWrite(outMotorOil, HIGH);
...

та

if (TriMin < 7000) {
...
    } else {
      digitalWrite(outMotorOil, LOW);
...

#14 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-13 20:49:38

Якщо ще розбираєтесь, звідки вилазить ШИМ, то це результат конкуренції кількох незалежних "мигалок":

        // Мигаем с частотой 2 и более Гц
        if ((timeAfterStartVeryLong % 500) < 250)
          digitalWrite(LEDMode, HIGH);
        else
          digitalWrite(LEDMode, LOW);
      // Мигаем с частотой 1 Гц пока не отпустят кнопку
      if ((timeAfterStartVeryLong % 1000) < 500)
        digitalWrite(LEDMode, HIGH);
      else
        digitalWrite(LEDMode, LOW);
      // мигаем светодиодом с частотой 3 Гц
      if ((TriMin % 500) < 250)
        digitalWrite(LEDMode, HIGH);
      else
        digitalWrite(LEDMode, LOW);

і є ще одна в DisplayOilMode()

#15 Re: Програмування Arduino » парсинг NMEA **проблема » 2025-04-05 11:22:47

Спробуйте без sscanf, якось так:

#include <stdio.h>
#define TOKEN_COUNT 11
#define TOKEN_SIZE  88
char token[TOKEN_COUNT][TOKEN_SIZE];
void process() {
 int i;
 for (i = 0; i < TOKEN_COUNT; i++)
  printf("token[%i]='%s'\n", i, token[i]);
}
int main() {
 int i = 0, j = 0;
 for (;;) {
  char c = getchar();
  if (c == EOF) {
   break;
  } else if (c == '\n') {
   while (i < TOKEN_COUNT) {
    token[i++][j] = 0;
    j = 0;
   }
   i = 0;
   process();
  } else if (c == ',') {
   if (i < TOKEN_COUNT)
    token[i++][j] = 0;
   j = 0;
  } else {
   if (i < TOKEN_COUNT && j < TOKEN_SIZE - 1)
    token[i][j++] = c;
  }
 }
}

#16 Re: Програмування Arduino » не працює ArduinoISP » 2025-03-20 21:02:25

Спробуйте зробити за допомогою avrdude з командного рядка по цій інструкції https://forum.arduino.ua/viewtopic.php?id=2904
Також подивіться, що за ArduinoISP.ino ви компілюєте, його потрібно брати з arduino-examples, бо в інеті валяється купа його непрацюючих модифікацій.

#17 Re: Програмування Arduino » Допомога з конвертацією float в HEX » 2025-03-15 15:39:17

float floatval = 26.4212;
int intval = floatval * 100 + 0.5;
Send_ar[6] = intval >> 8;
Send_ar[7] = intval & 0xff;

#18 Re: Програмування Arduino » Ошибка компиляции » 2025-03-07 12:38:24

vigor53 пише:

Доброго всем здоровья!
Просветите пожалуйста строчка в коде что означает  4000000.0F

#define resistorValue  4000000.0F   // change this to whatever resistor value you are using

F - суфікс для константи типу float
https://en.wikipedia.org/wiki/C_data_types

#19 Re: Програмування Arduino » Циклічний (коловий) масив » 2025-01-03 21:42:24

Основною фішкою рінгбуфера (якщо не псувати "оптимізаціями" стандартну реалізацію) є можливість виконувати запис і читання в двох окремих потоках без будь-яких синхронізацій між ними.

#20 Re: Програмування Arduino » Led Cub 4*4*4 » 2025-01-02 09:41:05

Зробіь масив int random_index[16]; спочатку заповніть його числами від 0 до 15, а потім їх перетасуйте (google: shuffle), з масиву послідовно берете індекс і заповнюєте цей стовпчик

#21 Re: Програмування Arduino » Led Cub 4*4*4 » 2025-01-01 18:44:36

Вилазите за межі масива
i=4 замінити на i=3
i<=4 замінити на i<4

#22 Re: Апаратні питання » Усилтель напряжения с 5 на 10 вольт или АЦП 10 вольт » 2024-12-23 18:47:33

shrek пише:

Как не крути переменный резистор, на выходе всегда 11.2.

У Вас входи підсилювача закорочені між собою.

#24 Re: Проекти » Моніторинг батареї UPS через інтернет » 2024-12-21 09:55:48

З езернет інтерфейсом https://github.com/honechko/snmpvm
Ще поки руки не дійшли замовити в китаї платки та оформити в пристойному вигляді

#25 Re: Програмування Arduino » Нужна консультация ардуино + Nextion экран. Заплачу. » 2024-10-27 10:13:27

dimich пише:

Вставив картинкою бо форумний двіжок зʼїдає бекслеші в тексті

Ставте два бекслеша підряд. При використанні "попередній перегляд" один бекслеш зникає в вікні вводу тексту, тому доводиться ще раз розставляти дублі.

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