#1 Програмування Arduino » Генерація звуків » 2025-06-27 22:35:03

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

Оце подумалось.. Взагалі, хтось бачив десь колекцію семплів, які можна без особливих зусиль запустити на мікроконтроллері? Бо пищати функцією tone() якось скучно. Аранжувати ноти в послідовність звуків - це точно не для мене wink
Знайшов на github лібу sensorium/Mozzi (не любить автомодератор коли URL в першому повідлмленні wink). Прикольно. Але щоб почути - треба прошити.
А взагалі хочеться процедурно згенерований звук метронома чи кастаньєт wink

#2 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-15 09:17:45

grep NeedResetCounterOil src/DigiSpark_Oiler_Moto.ino 
bool NeedResetCounterOil = LOW;
        NeedResetCounterOil = HIGH; // Ставим флаг сброса счетчика импульсов в ЕЕПРОМ
    if (NeedResetCounterOil == HIGH) {

Ну, цей прапорець у вас справді ніколи не скидається.

#3 Re: Апаратні питання » Стенд для тестів FPV » 2025-06-14 20:02:06

Ну твердотільне реле для силовухи нормально буде. Так би і сказали, що не із звичайної сімʼї а з багатої wink

#4 Re: Апаратні питання » Стенд для тестів FPV » 2025-06-14 18:00:48

https://arduino.ua/prod2223-2-h-kanalnii-modyl-rele-12v-10a-s-optorazvyazkoi
https://arduino.ua/prod186-datchik-holla-a3144-cifrovii

Наприклад так. Про китайські 10А в мене є сумніви, але 2А воно повинно витягнути. Якщо треба більше - візьміть автомобільне реле. Саме ці датчики уніполярні, іх треба правильно розмістити. Можливо, вам потрібні аналогові датчики.

Замість реле можна спаяти щось типу https://electronics.stackexchange.com/questions/512561/using-p-channel-mosfet-with-arduino

#5 Re: Апаратні питання » Стенд для тестів FPV » 2025-06-14 12:38:18

В вигляді готових модулів - навряд. Хіба що датчики Холла у вигляді шілдів. Але його треба все одно суміщати з вашою механікою. І реле для USB - вам точно потрібно тестувати весь USB стек, може досить тупого ключа на живлення?  Силову релюшку можна взяти автомобільну, а може і звичайного ключа на MOSFET вистачить.
Кроче, все одно паяти доведеться багато. не бачу смислу хотіти саме arduino-сумісних модулів.
Без розуміння, що саме і яким чином ви збираєтесь тестувати, складно порадити чогось конкретного.

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

Не так все погано. Начебто всі записи в eeprom пов"язані з натисканням кнопки. Судячи по назвах змінних wink

Щось цей simutron якийсь дивний.
2025-06-13_20-28.png
Лінії малюються якось мимо пінів, підключитись куди хочеться не виходить..

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

@л@!
Не відтворилось.
Я здивований.
Тут ще можливо, що в мене якось в board urls було і digistump 1.6.7 (офіціально протухший), і 1.7.5 (неофіціально свіжий), різні репозиторіі, однакові назви.. хз.. Видалив всі, встановив тільки 1.7.5.. не відтворюється. Може @stas_amp це ще не виправив, і в нього ще все зламане wink

на 50-й день роботи

Для мотоцикла не думаю що це сильно актуально wink Які є кращі ідеї? Є якийсь софтовий таймер, чи підпирати перевірками?

#8 Re: Програмування Arduino » Симуляція AVR в platformio » 2025-06-12 15:13:30

Теж дивно. Воно tiny85 не дуже модна іграшка, але невже ніхто не грався з нею в arduino ide з використанням eeprom і свіжим toolchain ом?

#9 Re: Програмування Arduino » Симуляція AVR в platformio » 2025-06-12 13:58:29

Тільки IDE навіть з verbose mode не показує як її компілює, тільки Compiling library "EEPROM".

Тому що в EEPROM.h нічого цікавого немає. Це враппер до avr/eeprom.h, а реалізація роботи з eeprom - упсь, в бінарнику .arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/lib/avr25/libattiny85.a . При використанні функцій з eeprom.h все так само ламається.

Взагалі можна було б і просто асемблерний код проаналізувати

Настоящих буйних мало wink

#10 Re: Програмування Arduino » Симуляція AVR в platformio » 2025-06-12 11:52:33

https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json же ж. Без ніяких хитрощів.

Є підозра що емулятор цього не покаже. Якщо косячаться логічні рівні на виході - значить там всередині щось комутується неправильно. Може чіпи палені. До речі, в якійсь з ревізій цих tiny85 щось було з eeprom, саме з записом в 0 адресу, і були рекомендації від аксакалів починати запис з 10.. Можливо, автор цього коду щось таке чув, і в нього використовується put(10). І put(0) теж wink

#11 Re: Програмування Arduino » Симуляція AVR в platformio » 2025-06-12 11:35:26

Ну це можна використати, якщо упоротись в TDD. А так, відчуття якоїсь незавершеності. debug_tool наче є, а використати неможливо.

#12 Програмування Arduino » Симуляція AVR в platformio » 2025-06-12 11:09:37

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

Знайшов дещо цікаве. Виявляється, для деяких чіпів є емулятори. І в platformio декларується можливість використання:
https://docs.platformio.org/en/latest/plus/debug-tools/simavr.html

У когось вийшло? Бо запустити руками емулятор в одній консолі, gdb в іншій - воно працює, але трохи по красноглазому wink

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

Здається, platformio це таки ваше рішення wink Тупо зібралось, прошилось. На P1 нормальний 0, на P2 - іноді нормальні 5В імпульси. Без провалів. Дивно трохи - індикаторний LED прикрутити не до ноги з LED, а до іншої wink

 - framework-arduino-avr-digistump @ 1.7.2 
 - tool-micronucleus @ 1.250.210222 (2.50) 
 - toolchain-atmelavr @ 1.70300.191015 (7.3.0)

Походу, framework 1.7.5 що в arduino ide якийсь кривий. Зручно коли все автоматизовано, але коли автоматизовано криво то це ПЦ wink
Хоча platformio той ще ПЦ всередині wink Просто повезло.

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

Та хз wink
Простий спосіб - взяти Arduino Nano wink
Складніше - підібрати тулчайн, з яким воно буде правильно працювати.
Або переписати під Atmel Studio - сподіваюсь, у них там все правильно зібране.

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

Так, це EEPROM
Якщо прибрати повністю (навіть #include теж) - нормальні прямокутні імпульси.

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

Нє, ШІ воно прикольно, але навіщо вимикати те що не вмикали wink Вам воно намалювало blink на регістрах замість digitalwrite.

#17 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-11 10:40:50

photo_2025-06-11_10-32-45.jpg

Збс wink
Зібрав під ту плату що у вас. Включив pull-up резистори на входах - отримав такі імпульси - кілька прямокутних, промодульованих ВЧ. Я б сказав, що це десь всередині вашого коду, складно зрозуміти його логіку.

ІЩСХ, якщо резистори прибрати, отримуємо дивне
photo_2025-06-11_10-47-19.jpg

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

Так, сорян, const int LEDMode = LED_BUILTIN; - так не можна. LED_BUILTIN це PB1 і воно якось дивно взаємодіє з вашим кодом. Вернув як було - упсь, на PB1 чоткий 0.
Ну, що сказати.. По перше - переїдьте на версію 1.7.5, щоб все було однаково.
По друге - входи вільно теліпаються, хз що вони ловлять у вас і що у мене. Їх було б непогано підтягнути чи до 0 чи до VCC - хз як правильно за вашою схемою.

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

FQBN: digistump:avr:digispark-tiny:clock=clock165,burnmode=install
Using board 'digispark-tiny' from platform in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5
Using core 'tiny' from platform in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5
Using library EEPROM at version 2.0 in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5/libraries/EEPROM 

Ага, походу я вас обманув. Це звідси: https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json

Ага, версію 1.6.7 можна вибрати в Board Manager. Не зовсім очевидно. Але все одно дивний глюк присутній.

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

2025-06-10_19-06.png

Таке?
Ну, залив ваш код, тільки замість

const int LEDMode = 2; // LED индикации режима работы смазчика, 1 = TRUE;

зробив

const int LEDMode = LED_BUILTIN;

Щоб було видно без осцилографа.

І що ми бачимо на нозі P1?

photo_2025-06-10_19-24-38.jpg

3.3V, з викидами до 4.5В (чи 4.5В, з провалами на 1.2В). Цікаво wink Провалів по живленню немає.


Хм. Зробив так (нумерація цифрових і аналогових портів в цій платі якась незвичайна, але 3 - удачна цифра wink Повинно бути еквівалентно по логіці роботи.

  if (/* analogRead(btnMode) < 512 */ digitalRead(btnMode) == 0) { // Нажата кн.Режим смазки

Бачимо таке:

photo_2025-06-10_19-42-44.jpg

Що я можу сказати? З виводом у порт D1 у вас щось накручено, digitalwrite викликається раз 10.. Але дивний спецефект з 1 картинки це не пояснює.

Це цікавіше. Підтягнув входи, щоб не теліпались.

  pinMode(inVSS, INPUT_PULLUP);
  pinMode(btnMode, INPUT_PULLUP);

Побачив ваші імпульси в 1 В
photo_2025-06-10_20-01-01.jpg

#21 Re: Апаратні питання » Проблема підключення lcd keypad shield до nodemcu » 2025-06-10 11:55:17

https://lastminuteengineers.com/esp8266-pinout-reference/
D4 підтягніть до VCC, або використайте інший пін.

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

ну я навіть вийняв з коробки плату з Tiny85 і прошив вашу програму. Нічого такого з рівнем 1.2в не спостерігаю. На виході P1 - чіткий 0. На P2 - кілька імпульсів із звичайними рівнями. Правда, у вас там входи без підтяжок, хтозна що вони ловлять з світового ефіру..

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

Ага, сорян, який контроллер побачив.
Ну, це трохи незвичайний контроллер. Може ви щось з таймерами хитре робили, чи з тактуванням.. Я б подумав, що він в режимі бутлоадера хоче щось з USB, але з ваших слів все інше працює.

#24 Re: Програмування Arduino » Допомога з написанням коду Arduino Nano (Arduino IDE) » 2025-06-08 13:05:57

Трохи дивно виходить.  Ну давайте поміряємо період імпульсів.

#define PIN_INPUT 2 // Arduino Nano - pin2 or pin3 only
#define PWM_WIDTH_FALSE 1400
#define PWM_WIDTH_TRUE 1600

unsigned long pulse_start = 0;
unsigned long pulse_width = 0;
unsigned long period = 0;
unsigned long pulse_prev_start = 0;
bool state_from_pwm = false;

void catch_int()
{
   if (digitalRead(PIN_INPUT))
   {
    pulse_prev_start = pulse_start;
    pulse_start = micros();
   } else {
    pulse_width = micros() - pulse_start;
    if (pulse_width < PWM_WIDTH_FALSE) 
    {
      state_from_pwm = false;
    } else if (pulse_width > PWM_WIDTH_TRUE)
    {
      state_from_pwm = true;
    };
    digitalWrite(LED_BUILTIN, state_from_pwm);
   };
}


void setup() {

  pinMode(LED_BUILTIN, OUTPUT); 
  pinMode(PIN_INPUT, INPUT);
  Serial.begin(115200);
  attachInterrupt(digitalPinToInterrupt(PIN_INPUT), catch_int, CHANGE);
  interrupts();
}

unsigned long ts_next = 0;
unsigned long pw;
void loop() {
  if (millis() > ts_next)
  {
    ts_next = millis() + 1000;
    noInterrupts();
    pw = pulse_width;
    period = pulse_start - pulse_prev_start;
    interrupts();
    Serial.print(period); 
    Serial.print(" ");
    Serial.println(pw);
  };
}

#25 Re: Програмування Arduino » Допомога з написанням коду Arduino Nano (Arduino IDE) » 2025-06-08 12:16:32

Якась незвичайна серва у вас wink

#define PIN_INPUT 2 // Arduino Nano - pin2 or pin3 only
#define PWM_WIDTH_FALSE 1400
#define PWM_WIDTH_TRUE 1600

unsigned long pulse_start = 0;
unsigned long pulse_width = 0;
bool state_from_pwm = false;

void catch_int()
{
   if (digitalRead(PIN_INPUT))
   {
    pulse_start = micros();
   } else {
    pulse_width = micros() - pulse_start;
    if (pulse_width < PWM_WIDTH_FALSE) 
    {
      state_from_pwm = false;
    } else if (pulse_width > PWM_WIDTH_TRUE)
    {
      state_from_pwm = true;
    };
    digitalWrite(LED_BUILTIN, state_from_pwm);
   };
}


void setup() {

  pinMode(LED_BUILTIN, OUTPUT); 
  pinMode(PIN_INPUT, INPUT);
  Serial.begin(115200);
  attachInterrupt(digitalPinToInterrupt(PIN_INPUT), catch_int, CHANGE);
  interrupts();
}

unsigned long ts_next = 0;
unsigned long pw;
void loop() {
  if (millis() > ts_next)
  {
    ts_next = millis() + 1000;
    noInterrupts();
    pw = pulse_width;
    interrupts();
    Serial.println(pw);
  };
}

Ну давайте спробуємо виміряти, що у вас там за PWM.

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