Ви не увійшли.
Наскільки я бачу, при вказаній умові воно повинно клацати з інтервалом в 1 секунду.
Інший пристрій це STM32F103 яка управляє сервомоторами зі зворотнім зв'язком у виді микроперемекача.
Як саме пін з STM32 підключений до входу ардуіни? Між ними є якісь компоненти?
Яка напруга живлення у вашого Nano?
Я вимикаю конектор мотора та туди ціпляюсь портом D2 (два пина: сигнал та GND)
Так D2 чи A0?
sum += analogRead(A0);
Якщо це PWM, то амплітуда нас не має цікавити, тільки логічний рівень. Якщо там аналоговий сигнал, то це не PWM.
Хлопці все запрацювало
Це вам поки що повезло. При зміні зовнішніх факторів може перестати.
average = sum / NUM_READINGS; // знаходимо середнє арифметичне, поділивши суму на число вимірів ... if (average < 22 ...
Замість того щоб ділити на константу і потім порівнювати з константою, можна просто порівнювати з константою:
if (sum < 22 * NUM_READINGS ...
... && digitalRead(outPin) == LOW)
digitalRead() читає з регістра PINn, і при деяких умовах там може бути не те значення, що digitalWrite() записало в регістр PORTn. Краще зберігайте внутрішній стан в окремій змінній.
Остання редакція dimich (Вчора 05:19:44)
Неактивний
Та в принципі такий спосіб усереднення pwm має право на існування. analogread іноді читає 0, іноді 1023, в середньому виходить 22
Стабільність під великим сумнівом, але якщо ця штука не літає і не впаде нікому на голову то можливо і ок.
Та в принципі такий спосіб усереднення pwm має право на існування. analogread іноді читає 0, іноді 1023, в середньому виходить 22
Та десь так, але ж аліасінг. Дивне ускладнення рішення для простої задачі.
Неактивний
Рядків не сильно більше ніж при чесному вимірюванні довжини імпульсів А такти проца - хто їх рахує