| 
 Каталог
 
  
 | 
	
Як же без delay()?2023-02-13 Всі статті →Інколи хочеться додати до пристрою на Ардуїно якусь озвучку, але є побоювання, що звук буде "тормозити" роботу програми. Так зазвичай буває, якщо використовувати функцію delay(), яка "заморожує" роботу програми. Готових рішень я не знайшов, довелося написати самому. Я не програміст, отже не впевнений, що все оптимально, але працює, отже: Пропоную скетч для програвання мелодії у фоновому режимі з використанням millis() і tone(). Скетч не використовує delay() та не створює затримок при роботі. На початку скетчу дефайни нот, це не що інше, як присутній в "павутині" заголовковий файл pitches.h Ця таблиця нот була написана Бреттом Хангманом (Brett Hagman), на працях яких і була заснована робота функції tone() Його допустимо використати, як дефайни на початку скетчу, або як файл в папці зі скетчем, тоді в скетчі треба посилання #include "pitches.h" Далі присутня пара одновимірних масивів - один для нот note[], інший для їх тривалості dur[], дуже бажано, щоб кількість елементів масивів була однаковою (жарт), А от щоб не було жартів, є процедура перевірки співпадіння з виводом результатів в послідовний порт. Далі необхідні змінні: 
 Функція, що забезпечує відтворення мелодії void music(), її ім'я необхідно помістити в loop() ось так: music (); Більше пояснень в скетчі. P.S. Створено на основі мелодії Telex 2023 м. Кременчук. 
 Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором. 
Кирилл 
     16.05.2023 16:39:42 
	
    Статья неинтересна - очень много информации выложено в Интернете о том, что описано здесь. 
 Богдан 
     
28.02.2023 00:10:31 
	
    Якщо перевести на micropython то delay() це time.sleep() а millis() це time.tick_ms(), а далі схема подібна 
 Олександр 
     24.02.2023 10:59:28 
	
    Чудова стаття! 
 
        
 | 
        


                                        	                 	
                                        