- начальный загрузчик для плат elbear, elsomik обновлен до версии 0.2.0
- исключено появление краткосрочных просадок при работе ШИМ с максимальным коэффициентом заполнения
- добавлена возможность пропускать код стандартного обработчика прерываний при использовании пользовательского обработчика
- добавлена возможность конфигурирования вывода на вход с притяжкой к земле (INPUT_PULLDOWN)
- исправление известных ошибок
This commit was merged in pull request #29.
This commit is contained in:
klassents committed 2025-08-06 08:42:39 +03:00
1 parent 8a675b2f61
commit 0fbfd77518
42 files changed
+1007 -762

No files matched your search

@@ -1,13 +1,22 @@
// задать пин, к которому подсоединен светодиод
#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод
uint8_t ledPin = LED_BUILTIN;
#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод
uint8_t ledPin = P0_0;
#else
uint8_t ledPin = 2;
#endif
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
void setup() {
// Инициализация пина P0_3 как выход
pinMode(LED_BUILTIN, OUTPUT);
// Инициализация пина как выход
pinMode(ledPin, OUTPUT);
}
// функция цикла выполняется снова и снова бесконечно
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // включить светодиод (HIGH - высокий уровень напряжения)
delay(1000); // Секунда ожидания
digitalWrite(LED_BUILTIN, LOW); // выключить светодиод (LOW - низкий уровень напряжения)
delay(1000); // Секунда ожидания
digitalWrite(ledPin, HIGH); // включить светодиод (HIGH - высокий уровень напряжения)
delay(1000); // Секунда ожидания
digitalWrite(ledPin, LOW); // выключить светодиод (LOW - низкий уровень напряжения)
delay(1000); // Секунда ожидания
}
@@ -1,22 +1,37 @@
// задать пин, к которому подсоединен светодиод
#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод
uint8_t ledPin = LED_BUILTIN;
#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод
uint8_t ledPin = P0_0;
#else
uint8_t ledPin = 2;
#endif
// задать пин, к которому подсоединена кнопка
#ifdef BTN_BUILTIN // для плат Elbear Ace-Uno/Start можно использовать встроенную кнопку
uint8_t btn_pin = BTN_BUILTIN;
#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод в формате порт-вывод
uint8_t btn_pin = P0_1;
#else
uint8_t btn_pin = 4; // для платы Elbear Ace-Nano нужно задать номер цифрового вывода
#endif
int buttonS = 0; // задаем переменную для хранения состояния кнопки
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // P0_3
pinMode(LED_BUILTIN1, OUTPUT); // P1_3
pinMode(BTN_BUILTIN, INPUT); // P0_8
pinMode(ledPin, OUTPUT);
pinMode(btn_pin, INPUT);
}
// функция цикла выполняется снова и снова бесконечно
void loop() {
buttonS = digitalRead(BTN_BUILTIN); // считываем значение с кнопки
if (buttonS == 0) // если кнопка нажата, то
buttonS = digitalRead(btn_pin); // считываем значение с кнопки
if (buttonS == 0) // если кнопка нажата, то
{
digitalWrite(LED_BUILTIN, HIGH); // включить светодиод на пине P0_3
digitalWrite(LED_BUILTIN1, LOW); // выключить светодиод на пине P1_3
} else // если кнопка отпущена, то
digitalWrite(ledPin, HIGH); // включить светодиод
} else // если кнопка отпущена, то
{
digitalWrite(LED_BUILTIN, LOW); // выключить светодиод на пине P0_3
digitalWrite(LED_BUILTIN1, HIGH); // включить светодиод на пине P1_3
digitalWrite(ledPin, LOW); // выключить светодиод
}
}
@@ -1,14 +1,29 @@
const int button1Pin = P0_2; // кнопка №1 - пин P0_2
const int button2Pin = P0_3; // кнопка №2 - пин P0_3
const int ledPin = P1_3; // пин P1_3, для светодиода
// задать пин, к которому подсоединен светодиод
#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод
uint8_t ledPin = LED_BUILTIN;
#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод
uint8_t ledPin = P0_0;
#else
uint8_t ledPin = 2;
#endif
// задать пины, к которым подсоединены кнопки
#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1)
// для плат Elsomik и Start задать пины в формате порт_вывод
const int button1Pin = P0_2; // кнопка №1
const int button2Pin = P0_3; // кнопка №2
#else
// для плат Elbear задать номера цифровых выводов
const int button1Pin = 3; // кнопка №1
const int button2Pin = 4; // кнопка №2
#endif
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
void setup() {
// Установим пины кнопок как входящие:
// Установим пины кнопок как входы:
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
// Установим пин светодиода как исходящий:
// Установим пин светодиода как выход:
pinMode(ledPin, OUTPUT);
}
@@ -18,7 +33,7 @@ void loop() {
/*
* Здесь мы читаем текущее состояние кнопок и помещаем их значение
* в две пепременные.
* в две переменные.
*/
button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
@@ -26,7 +41,7 @@ void loop() {
if (((button1State == LOW) || (button2State == LOW)) // Проверяем нажата ли только одна из кнопок
&& !((button1State == LOW) && (button2State == LOW))) {
digitalWrite(ledPin, HIGH); // Включаем светодиод
} else // иначе
} else // иначе
{
digitalWrite(ledPin, LOW); // Выключаем светодиод
}
@@ -1,5 +1,20 @@
const int ledPin = LED_BUILTIN; // Пин P0_3 для светодиода.
const int sensorPin = P1_5; // Пин, к которому подключается средний вывод потенциометра.
// задать пин, к которому подсоединен светодиод
#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод
uint8_t ledPin = LED_BUILTIN;
#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод
uint8_t ledPin = P0_0;
#else
uint8_t ledPin = 2;
#endif
// задать пин, к которому подключается средний вывод потенциометра
#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1)
// для плат Elsomik и Start задать пин в формате порт_вывод. Пин должен поддерживать АЦП измерения
const int sensorPin = P1_5;
#else
// для плат Elbear задать номер аналогового вывода
const int sensorPin = A0;
#endif
int sensorValue = 0; // Переменная для хранения значения потенциометра
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
@@ -1,11 +1,24 @@
// Имена для пинов светодиода и потенциометра (англ potentiometr или "pot")
#define LED_PIN P0_0
#define POT_PIN P1_5
// задать пин, к которому подсоединен светодиод
#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод
uint8_t ledPin = LED_BUILTIN;
#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод
uint8_t ledPin = P0_0;
#else
uint8_t ledPin = 2;
#endif
// задать пин, к которому подключается средний вывод потенциометра
#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1)
// для плат Elsomik и Start задать пин в формате порт_вывод. Пин должен поддерживать АЦП измерения
const int sensorPin = P1_5;
#else
// для плат Elbear задать номер аналогового вывода
const int sensorPin = A0;
#endif
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
void setup() {
// Установим пин светодиода как выход
pinMode(LED_PIN, OUTPUT);
pinMode(ledPin, OUTPUT);
}
// функция цикла выполняется снова и снова бесконечно
@@ -18,7 +31,7 @@ void loop() {
* микроконтроллер выдаст число от 0 до 1023
* пропорциональное углу поворота ручки.
*/
rotation = analogRead(POT_PIN);
rotation = analogRead(sensorPin);
/*
* В brightness записывается полученное ранее значение rotation
@@ -29,7 +42,7 @@ void loop() {
brightness = rotation / 4;
// Итоговое напряжение подается на светодиод.
analogWrite(LED_PIN, brightness);
analogWrite(ledPin, brightness);
}
@@ -1,7 +1,16 @@
// Имена пинов для светодиодов
// задать пины, к которым подсоединен светодиод. Пины должны поддерживать функцию ШИМ
#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1)
// для плат Elsomik и Start задать пины в формате порт_вывод
const int RED_PIN = P0_0;
const int GREEN_PIN = P0_1;
const int BLUE_PIN = P0_2;
#else
// для плат Elbear задать номера цифровых выводов
const int RED_PIN = 3;
const int GREEN_PIN = 5;
const int BLUE_PIN = 6;
#endif
/*
* Следующая переменная контролирует, насколько быстро выполняется цикл по смене
@@ -1,6 +1,19 @@
// Константы с именами для используемых пинов.
const int sensorPin = P1_5;
const int ledPin = P0_0;
// задать пин, к которому подсоединен светодиод
#ifdef LED_BUILTIN // для плат Elbear/Start можно использовать встроенный светодиод
uint8_t ledPin = LED_BUILTIN;
#elif defined(ARDUINO_ELSOMIK) // для плат Elsomik нужно задать вывод
uint8_t ledPin = P0_0;
#else
uint8_t ledPin = 2;
#endif
// задать пин, к которому подключается средний вывод потенциометра
#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1)
// для плат Elsomik и Start задать пин в формате порт_вывод. Пин должен поддерживать АЦП измерения
const int sensorPin = P1_5;
#else
// для плат Elbear задать номер аналогового вывода
const int sensorPin = A0;
#endif
/*
* Глобальны переменные для уровней яркости:
@@ -1,7 +1,13 @@
#include "notes.h" // Библиотека с частотой нот
// Константы с именами для используемых пинов.
const int buzzerPin = P0_0;
// задать пин, к которому подсоединен пьезоэлемент
#if defined(ARDUINO_ELSOMIK) || defined(ARDUINO_START_MIK32_V1)
// для плат Elsomik и Start задать пин в формате порт_вывод
const int buzzerPin = P0_0;
#else
// для плат Elbear задать номер цифрового вывода
const int buzzerPin = 2;
#endif
/*
* BPM (bpm, англ. beats per minute[1], удары в минуту) в музыке — показатель, определяющий скорость исполнения