#1 Re: Програмування Arduino » Допомога з конвертацією float в HEX » 2025-03-18 21:58:12

google://dwin arduino library
їх дофіга
можна не гратися в реверс-інжинірінг

ЗІ
img.png

Щось форум глючить. Якісь повідомлення показує, якісь ні..

#2 Re: Програмування Arduino » SIM800C Arduino UNO » 2025-02-25 18:36:05

Сорян, був неправий.
Ну тоді читати https://arduino.ua/prod2423-sim800c-v2-modyl-gsm-85090018001900-bluetooth - там цілий епос.

#3 Re: Програмування Arduino » SIM800C Arduino UNO » 2025-02-25 18:06:23

https://arduino.ua/prod1665-gsm-modyl-na-sim800l

Звертаємо увагу, що у модуля напруга логічного високого рівня становить 2.8В, що вимагає застосування перетворювача логічних рівнів при використанні модему з контролером Arduino.

Перевищення вхідної напруги інтерфейсу UART призведе до псування модуля SIM800!

https://arduino.ua/prod2165-preobrazovatel-logicheskih-yrovnei-dvynapravlennii врятує наступним разом.

#5 Re: Програмування Arduino » Потрібна допомога в редагуванні скетчу для реле часу » 2025-02-24 18:52:33

танунафіг..

Дешевше переписати з нуля.
Стороння людина в простиню з digitalread/digitalwrite без труда не врюхає.

while(1) - можна спокійно викинути, функція loop() сама перезапускається.
FlexiTimer2 - хз що це і як воно працює, підозрюю що якась ліба з таймером. Без вивчення readme таке крпще не використовувати.

TubeDisplay4Bit - судячи з назви, щось пов"язане з дисплеєм. Але всередині там щось з секундами робиться.

В пєчьку! (ц)

#7 Re: Програмування Arduino » Потрібна допомога в редагуванні скетчу для реле часу » 2025-02-24 17:03:18

if (digitalRead(INPUT1)==LOW)

uint8_t new_value = digitalRead(somePin);
if (new_value != prev_value)
{
 prev_value = new_value;
do_some_shit()uint8_t new_value = digitalRead(somePin);
if (new_value != prev_value)
{
 prev_value = new_value;
 if (new_value == LOW)
    need_start = true;
};
}
if (need_start) {need_start = false;...}

#8 Re: Програмування Arduino » Потрібна допомога в редагуванні скетчу для реле часу » 2025-02-24 16:59:28

Ну я в же один раз пропонував використовувати не низький рівень, а перехід з високого рівня в низький.

#9 Re: Програмування Arduino » Потрібна допомога в редагуванні скетчу для реле часу » 2025-02-24 16:39:33

Взагалі бажано спочатку намалювати на папірці якісь графіки-квадратики-стрілки, а вже потім хапатись кодити. Бо по перше у вас вийде код, який складно читати. По друге, вам буде складно вносити туди зміни.

#11 Re: Програмування Arduino » Потрібна допомога в редагуванні скетчу для реле часу » 2025-02-24 15:21:57

uint_8t prev_value;
void setup()
{
 prev_value = digitalRead(somePin);
}
void loop()
{
uint8_t new_value = digitalRead(somePin);
if (new_value != prev_value)
{
 prev_value = new_value;
do_some_shit();
}
}

Десь так.
Якщо треба щоб воно реагувало не на будь яку зміну сигналу, а лише на ввімкнення - добавте ще один if, я впевнений, все вийде wink
Якщо треба вміти ловити сигнал під час роботи 5 секундної функції, значить треба робити інакше. На перериваннях, наприклад.

#12 Re: Програмування Arduino » Потрібна допомога в редагуванні скетчу для реле часу » 2025-02-24 14:36:07

Дивитись код всередині архіву неспортивно wink Акби воно на гітхабі було, з синтаксисом..
Спробую вгадати.
Ви в циклі міряєте логічний рівень на якомусь піні. Якщо там 1 - запускаєте якийсь процес довжиною 5 сек. Коли процес закінчується - там знову все ще 1.
Рішення таке: треба порвінювати рівень який зараз з попереднім рівнем; якщо вони відрізняються, тоді щось робити.

#14 Re: Апаратні питання » Зарядка двох акумуляторів 18650 послідовно від usb » 2025-02-24 12:52:33

2s charger module
https://vi.aliexpress.com/item/1005004987094908.html наприклад.
Якщо необхідно щоб від usb - беріть з usb
Якщо потрібно щоб з балансуванням - https://vi.aliexpress.com/item/1005006570395304.html

#15 Re: Апаратні питання » Зарядка двох акумуляторів 18650 послідовно від usb » 2025-02-22 23:04:24

Візьміть готовий модуль з usb на вході і 2 акумуляторами.
8В для серви забагато до речі.
І для мотора такого теж.

#16 Re: Програмування Arduino » ESP32 та ds3231 » 2025-02-22 23:00:37

ds3231 вертає неправильний час чи ваш годинник показує неправильний час?

#17 Re: Програмування Arduino » Потрібна допомога » 2025-02-22 21:40:05

Як взагалі написати змінна А дорівнюе третьому біту змінноі D ?

По ардуінівськи:
є спеціальні функції
https://doc.arduino.ua/ru/prog/BitRead

По avr-івськи
Є макрос

#define _BV(bit) (1 << (bit))

десь так тоді

// якщо вам конче потрібно отримати саме 1 або 0
uint8_t A = D & _BV(bit) ? 1 : 0;
// якщо вас задовольняє те що змінна просто  !=0
uint8_t A = D & _BV(bit);

А то можна і так, якщо хочеться байти економити

#define BIT0 	1
#define BIT1 	(1<<1)
#define BIT2 	(1<<2)
#define BIT3 	(1<<3)
#define BIT4 	(1<<4)
#define BIT5	(1<<5)
#define BIT6	(1<<6)
#define BIT7	(1<<7)

uint8_t A = D & BIT7;

Можна ще придумати кілька способів wink

#18 Re: Програмування Arduino » Потрібна допомога » 2025-02-22 21:19:39

Не треба робити бітову магію там де вона не потрібна. Вам, напевно, потрібно виконати якийсь ногодриг з пінами порту? Ну так зробіть функцію з промовною назвою, rotate_left() наприклад, і всередині поставте одиниці і нулі як вам потрібно. Не ускладнюйте.

#19 Re: Програмування Arduino » Прблема в скетче ? » 2025-02-10 11:14:06

Заміть 1000 слів - дивіться як зроблено в Arduino

НЯП всередині ISR присідання з атомарністю не потрібні, бо переривання забороняється автоматично.

#if defined(TIM0_OVF_vect)
ISR(TIM0_OVF_vect)
#else
ISR(TIMER0_OVF_vect)
#endif
{
	// copy these to local variables so they can be stored in registers
	// (volatile variables must be read from memory on every access)
	unsigned long m = timer0_millis;
	unsigned char f = timer0_fract;

	m += MILLIS_INC;
	f += FRACT_INC;
	if (f >= FRACT_MAX) {
		f -= FRACT_MAX;
		m += 1;
	}

	timer0_fract = f;
	timer0_millis = m;
	timer0_overflow_count++;
}

А ззовні - читайте коментар до коду

unsigned long millis()
{
  unsigned long m;
  uint8_t oldSREG = SREG;

  // disable interrupts while we read millis_timer_millis or we might get an
  // inconsistent value (e.g. in the middle of a write to millis_timer_millis)
  cli();
  m = millis_timer_millis;
  SREG = oldSREG;

  return m;
}

#20 Re: Програмування Arduino » Прблема в скетче ? » 2025-02-09 23:13:22

ISR(PCINT2_vect) {
  unsigned char result = r.process();

Так робити стрьомно. ISR повинно виконуватись максимально швидко, а тут викликається якийсь метод з ліби енкодера, хз що він робитиме. Якщо всередині Serial.print, буде ой.
Як правило, регулярні дії (process(), tick(), ..) викликають в loop - там воно точно спрацює як треба.
Якщо в ISR ви щось робите з глобальною змінною, яка більша ніж uint8_t - на цей час треба забороняти переривання.  Приблизно так:

ISR()
..
cli();
do_some_sheet
sei();
loop()
..
cli();
do_some_sheet
sei();

#21 Re: Проекти » найпростіша плата керування сервоприводом по крайнім положенням. » 2025-01-30 22:05:23

Можливо, варто переосмислити постановку задачі. Може не серва потрібна а тупий соленоїд? Є напруга - одне положення, немає напруги - інше положення..

#22 Re: Програмування Arduino » Робота esp8266 з Micropython » 2025-01-24 11:48:24

https://stackoverflow.com/questions/71579926/how-to-use-micropython-classes-in-separate-files

ЗІ Щось форум якось дивно працює. Походу сєкрєт настройкі phpbb утєрян wink

#23 Re: Програмування Arduino » Led Cub 4*4*4 » 2025-01-12 17:21:30

. Тільки я би для зручності перевернув полярність діодів

В уже спаяному кубі це не просто wink

#24 Re: Програмування Arduino » Led Cub 4*4*4 » 2025-01-12 16:29:09

Не бажаєте схему показати? wink
Вам потрібно, щоб струм через світлодіоди був стабільний, без залежності скільки їх ввімкнено? тоді на кожен led в групі - окремий резистор (16 шт). І порахуйте який потрібен струм, може mosfet лишній.
Якщо 1 резистор на групу з 16 led - в залежності від кількості ввімкнених led яскравість буде мінятися.Можна спробувати скомпенсувати часом експозиції - підібрати резистор, щоб нормально світились всі 16, а коли менше - зменшувати час, але це буде багато веселих дослідів wink

#25 Re: Апаратні питання » Питання по USB звукових картах » 2025-01-12 16:13:16

Алгоритми DSP вже працюють?

Це тільки ідея..

https://gridbots.com/bat.html

Я радий за індійців wink

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