библиотека для работы с новой платой
This commit is contained in:
parent
99a5c81da1
commit
1b039cb163
2
libraries/Start_mik32_Guide/.gitignore
vendored
Normal file
2
libraries/Start_mik32_Guide/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
installed.json
|
||||
.vscode/
|
||||
@ -0,0 +1,13 @@
|
||||
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
|
||||
void setup() {
|
||||
// Инициализация пина P1_3 как выход.
|
||||
pinMode(P1_3, OUTPUT);
|
||||
}
|
||||
|
||||
// функция цикла выполняется снова и снова бесконечно
|
||||
void loop() {
|
||||
digitalWrite(P1_3, HIGH); // включить светодиод (HIGH - высокий уровень напряжения)
|
||||
delay(1000); // Секунда ожидания
|
||||
digitalWrite(P1_3, LOW); // выключить светодиод (LOW - низкий уровень напряжения)
|
||||
delay(1000); // Секунда ожидания
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
int buttonS = 0; // задаем переменную для хранения состояния кнопки
|
||||
|
||||
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
|
||||
void setup() {
|
||||
pinMode(P1_3, OUTPUT);
|
||||
pinMode(P1_2, OUTPUT);
|
||||
pinMode(P0_2, INPUT);
|
||||
}
|
||||
|
||||
// функция цикла выполняется снова и снова бесконечно
|
||||
void loop() {
|
||||
buttonS = digitalRead(P0_2); // считываем значение с порта 2 (с кнопки)
|
||||
if (buttonS == 0) // если кнопка нажато, то
|
||||
{
|
||||
digitalWrite(P1_3, HIGH); // включить светодиод на пине P1_3
|
||||
digitalWrite(P1_2, LOW); // выключить светодиод на пине P1_2
|
||||
} else // иначе (если кнопка отпущена)
|
||||
{
|
||||
digitalWrite(P1_3, LOW); // выключить светодиод на пине P1_3
|
||||
digitalWrite(P1_2, HIGH); // включить светодиод на пине P1_2
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
const int button1Pin = P0_2; // кнопка №1 - пин P0_2
|
||||
const int button2Pin = P0_3; // кнопка №2 - пин P0_3
|
||||
const int ledPin = P1_3; // пин P1_3, для светодиода
|
||||
|
||||
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
|
||||
void setup() {
|
||||
// Установим пины кнопок как входящие:
|
||||
pinMode(button1Pin, INPUT);
|
||||
pinMode(button2Pin, INPUT);
|
||||
|
||||
// Установим пин светодиода как исходящий:
|
||||
pinMode(ledPin, OUTPUT);
|
||||
}
|
||||
|
||||
// функция цикла выполняется снова и снова бесконечно
|
||||
void loop() {
|
||||
int button1State, button2State; // Переменные для сохранения состояния кнопок
|
||||
|
||||
/*
|
||||
* Здесь мы читаем текущее состояние кнопок и помещаем их значение
|
||||
* в две пепременные.
|
||||
*/
|
||||
button1State = digitalRead(button1Pin);
|
||||
button2State = digitalRead(button2Pin);
|
||||
|
||||
if (((button1State == LOW) || (button2State == LOW)) // Проверяем нажата ли только одна из кнопок
|
||||
&& !((button1State == LOW) && (button2State == LOW))) {
|
||||
digitalWrite(ledPin, HIGH); // Включаем светодиод
|
||||
} else // иначе
|
||||
{
|
||||
digitalWrite(ledPin, LOW); // Выключаем светодиод
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
const int ledPin = P1_3; // Пин P1_3, для светодиода.
|
||||
const int sensorPin = P1_5; // Пин, к которому подключается средний вывод потенциометра.
|
||||
int sensorValue = 0; // Переменная для хранения значения потенциометра
|
||||
|
||||
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
|
||||
void setup() {
|
||||
// Установим пин светодиода как выход
|
||||
pinMode(ledPin, OUTPUT);
|
||||
}
|
||||
|
||||
// функция цикла выполняется снова и снова бесконечно
|
||||
void loop() {
|
||||
sensorValue = analogRead(sensorPin); // считываем значение с потенциометра
|
||||
digitalWrite(ledPin, HIGH); // Включить светодиод
|
||||
delay(sensorValue); // Задержка на sensorValue мс
|
||||
digitalWrite(ledPin, LOW); // Выключить светодиод
|
||||
delay(sensorValue); // Задержка на sensorValue мс
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
// Имена для пинов светодиода и потенциометра (англ potentiometr или "pot")
|
||||
#define LED_PIN P0_0
|
||||
#define POT_PIN P1_5
|
||||
|
||||
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
|
||||
void setup() {
|
||||
// Установим пин светодиода как выход
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
}
|
||||
|
||||
// функция цикла выполняется снова и снова бесконечно
|
||||
void loop() {
|
||||
// Переменные для хранения значения потенциометра и яркости светодиода
|
||||
int rotation, brightness;
|
||||
|
||||
/*
|
||||
* Считываем в rotation напряжение с потенциометра:
|
||||
* микроконтроллер выдаст число от 0 до 1023
|
||||
* пропорциональное углу поворота ручки.
|
||||
*/
|
||||
rotation = analogRead(POT_PIN);
|
||||
|
||||
/*
|
||||
* В brightness записывается полученное ранее значение rotation
|
||||
* деленное на 4. Поскольку в переменных типа int хранятся целые
|
||||
* значения, дробная часть от деления будет отброшена.
|
||||
* В итоге мы получим целое число от 0 до 255.
|
||||
*/
|
||||
brightness = rotation / 4;
|
||||
|
||||
// Итоговое напряжение подается на светодиод.
|
||||
analogWrite(LED_PIN, brightness);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,153 @@
|
||||
// Имена пинов для светодиодов
|
||||
const int RED_PIN = P0_0;
|
||||
const int GREEN_PIN = P0_1;
|
||||
const int BLUE_PIN = P0_2;
|
||||
|
||||
/*
|
||||
* Следующая переменная контролирует, насколько быстро выполняется цикл по смене
|
||||
* цветов (в качестве эксперимента попробуйте поменять ее значение).
|
||||
*/
|
||||
int DISPLAY_TIME = 1000; // в миллисекундах
|
||||
|
||||
// Объявление функций
|
||||
void mainColors();
|
||||
void showRGB(int color);
|
||||
void showSpectrum();
|
||||
|
||||
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
|
||||
void setup() {
|
||||
// Настройка пинов для управления RGB светодиодом:
|
||||
pinMode(RED_PIN, OUTPUT);
|
||||
pinMode(GREEN_PIN, OUTPUT);
|
||||
pinMode(BLUE_PIN, OUTPUT);
|
||||
}
|
||||
|
||||
// функция цикла выполняется снова и снова бесконечно
|
||||
void loop() {
|
||||
|
||||
/*
|
||||
* В этом примере показаны два способа управления RGB светодиодом.
|
||||
* Первый способ состоит из включения и выключения красного, зеленого и синего
|
||||
* в различных сочетаниях. Такие сочетания дают восемь цветов, если считать
|
||||
* "черный" в качестве цвета.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Функция mainColors() проходит через все восемь цветов.
|
||||
* Эта функция включает и выключает отдельно каждый светодиод.
|
||||
* Если Вы хотите получить больше чем восемь цветов, Вам придется изменять
|
||||
* яркость каждого светодиода. Для этого можно использовать функцию
|
||||
* analogWrite(), - градация яркости от 0 до 255.
|
||||
*/
|
||||
mainColors();
|
||||
showSpectrum(); // Функция showSpectrum() плавно проследует через каждые из 8 цветов.
|
||||
}
|
||||
|
||||
|
||||
void mainColors() {
|
||||
// Все светодиоды выключены
|
||||
digitalWrite(RED_PIN, LOW);
|
||||
digitalWrite(GREEN_PIN, LOW);
|
||||
digitalWrite(BLUE_PIN, LOW);
|
||||
delay(DISPLAY_TIME);
|
||||
|
||||
// Красный включен
|
||||
digitalWrite(RED_PIN, HIGH);
|
||||
digitalWrite(GREEN_PIN, LOW);
|
||||
digitalWrite(BLUE_PIN, LOW);
|
||||
delay(DISPLAY_TIME);
|
||||
|
||||
// Зеленый включен
|
||||
digitalWrite(RED_PIN, LOW);
|
||||
digitalWrite(GREEN_PIN, HIGH);
|
||||
digitalWrite(BLUE_PIN, LOW);
|
||||
delay(DISPLAY_TIME);
|
||||
|
||||
// Синий включен
|
||||
digitalWrite(RED_PIN, LOW);
|
||||
digitalWrite(GREEN_PIN, LOW);
|
||||
digitalWrite(BLUE_PIN, HIGH);
|
||||
delay(DISPLAY_TIME);
|
||||
|
||||
// Желтый (красный и зеленый)
|
||||
digitalWrite(RED_PIN, HIGH);
|
||||
digitalWrite(GREEN_PIN, HIGH);
|
||||
digitalWrite(BLUE_PIN, LOW);
|
||||
delay(DISPLAY_TIME);
|
||||
|
||||
// Бирюзовый (зеленый и синий)
|
||||
digitalWrite(RED_PIN, LOW);
|
||||
digitalWrite(GREEN_PIN, HIGH);
|
||||
digitalWrite(BLUE_PIN, HIGH);
|
||||
delay(DISPLAY_TIME);
|
||||
|
||||
// Фиолетовый (красный и синий)
|
||||
digitalWrite(RED_PIN, HIGH);
|
||||
digitalWrite(GREEN_PIN, LOW);
|
||||
digitalWrite(BLUE_PIN, HIGH);
|
||||
delay(DISPLAY_TIME);
|
||||
|
||||
// Белый (красный, зеленый и синий)
|
||||
digitalWrite(RED_PIN, HIGH);
|
||||
digitalWrite(GREEN_PIN, HIGH);
|
||||
digitalWrite(BLUE_PIN, HIGH);
|
||||
delay(DISPLAY_TIME);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* showRGB() - выводит один цвет на светодиод. Когда Вам необходим
|
||||
* опережеленный цвет, вызовите showRGB() с нужным Вам цветом.
|
||||
* Эта функция переводит число от 0 до 767 в определенный цвет.
|
||||
* Если плавно пройтись по этому числовому ряду, то светодиод будет
|
||||
* плавно менять цвет через весь цветовой спектр.
|
||||
*
|
||||
* int colot - код цвета от 0 до 767.
|
||||
* Базовые цифры:
|
||||
* 0 - чистый красный
|
||||
* 255 - чистый зеленый
|
||||
* 511 - чистый синий
|
||||
* 767 - чистый красный
|
||||
*
|
||||
* Числа между вышеуказанных создают промежуточные цвета.
|
||||
* Например, 640 находится между 512 (синий) и 767 (красный).
|
||||
* Это даст смесь синего и красного, в результате чего получится фиолетовый.
|
||||
*/
|
||||
void showRGB(int color) {
|
||||
int redIntensity; // Яркость красного светодиода
|
||||
int greenIntensity; // Яркость зеленого светодиода
|
||||
int blueIntensity; // Яркость синего светодиода
|
||||
|
||||
if (color <= 255) // зона 1
|
||||
{
|
||||
redIntensity = 255 - color; // красный меняется из включенного на выключенный
|
||||
greenIntensity = color; // зеленый меняется из выключенного во включенный
|
||||
blueIntensity = 0; // голубой всегда выключен
|
||||
} else if (color <= 511) // зона 2
|
||||
{
|
||||
redIntensity = 0; // красный всегда выключен
|
||||
greenIntensity = 255 - (color - 256); // зеленый меняется от включенного в выключенный
|
||||
blueIntensity = color - 256; // синий меняется от выключенного к включенному
|
||||
} else if (color >= 512) // зона 3
|
||||
{
|
||||
redIntensity = color - 512; // красный меняется от выключенного к включенному
|
||||
greenIntensity = 0; // зеленый всегда выключен
|
||||
blueIntensity = 255 - (color - 512); // синий меняется от включенного к выключенному
|
||||
}
|
||||
|
||||
// Функциям передаются установленные значения яркости.
|
||||
analogWrite(RED_PIN, redIntensity);
|
||||
analogWrite(BLUE_PIN, blueIntensity);
|
||||
analogWrite(GREEN_PIN, greenIntensity);
|
||||
}
|
||||
|
||||
/*
|
||||
* showSpectrum() - выводит все цвета по очереди. Функция циклически
|
||||
* вызывает showRGB() для смены цвета с аргументом от 0 до 768.
|
||||
*/
|
||||
void showSpectrum() {
|
||||
for (int x = 0; x < 768; x++) {
|
||||
showRGB(x);
|
||||
delay(10);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,120 @@
|
||||
// Константы с именами для используемых пинов.
|
||||
const int sensorPin = P1_5;
|
||||
const int ledPin = P0_0;
|
||||
|
||||
/*
|
||||
* Глобальны переменные для уровней яркости:
|
||||
* high (высокий), low (низкий).
|
||||
*/
|
||||
int lightLevel, high = 0, low = 1023;
|
||||
|
||||
// Объявление функций
|
||||
void manualTune();
|
||||
void autoTune();
|
||||
|
||||
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
|
||||
void setup() {
|
||||
// Настройка пинов для управления светодиодом:
|
||||
pinMode(ledPin, OUTPUT);
|
||||
|
||||
// Для отладки, чтобы увидеть показания датчиков через "Serial Monitor".
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
// функция цикла выполняется снова и снова бесконечно
|
||||
void loop() {
|
||||
lightLevel = analogRead(sensorPin);
|
||||
|
||||
manualTune(); // Ручное изменение диапазона от светлого к темному
|
||||
// autoTune(); // Автоматическое изменение диапазона
|
||||
|
||||
/*
|
||||
* Вышеупомянутые функции будут изменять "lightLevel" до максимамльных
|
||||
* значений от "Полностью Вкл" к "Полному Выкл". И это значит, что теперь
|
||||
* мы сможем регулировать яркость светодиода в широких пределах.
|
||||
*/
|
||||
analogWrite(ledPin, lightLevel);
|
||||
|
||||
/*
|
||||
* Выражение выше будет увеличивать яркость светодиода с увеличением
|
||||
* сопротивления фоторезистора. Чтобы сделать наоборот, нужно в
|
||||
* analogWrite(ledPin, lightLevel) значение "lightLevel" на "255 - lightLevel".
|
||||
*/
|
||||
|
||||
/*
|
||||
* Для отладки, чтобы увидть показания датчиков через "монитор порта",
|
||||
* расскомментируйте следующие строчки.
|
||||
*/
|
||||
// Serial.println(lightLevel); // Вывод данных с фоторезистора (0 - 1023)
|
||||
// delay(500); // пауза 500 мс
|
||||
}
|
||||
|
||||
void manualTune()
|
||||
{
|
||||
int lowValue = 0;
|
||||
int highValue = 1023;
|
||||
/*
|
||||
* Функция analogRead() возвращает значение в диапазоне от 0 до 1023,
|
||||
* а функция для управления светодиодом analogwrite() работает с диапазоном
|
||||
* от 0 до 255.
|
||||
* Функция map() может преобразовать значение одного диапазона в соответсвующее
|
||||
* значение другого диапазона.
|
||||
* Так map(lightLevel, 0, 1023, 0, 255) преобразует 0 в 0, 1023 в 255, а среднее
|
||||
* значение 500 станет приблизительно 125.
|
||||
*/
|
||||
lightLevel = map(lightLevel, lowValue, highValue, 0, 255);
|
||||
/*
|
||||
* Функция map(lightLevel, 0, 1023, 0, 255) преобразует входное значение
|
||||
* lightLevel даже если оно не входит в диапазон от 0 до 1023.
|
||||
* Для ограничения диапазона используется функция constrain().
|
||||
* Так constrain(lightLevel, 0, 255) преобразует все значения lightLevel
|
||||
* выше 255 в 255, а значения ниже 0 в 0.
|
||||
*/
|
||||
lightLevel = constrain(lightLevel, 0, 255);
|
||||
|
||||
/*
|
||||
* Изменение освещенности может быть недостаточно чтобы функция analogRead()
|
||||
* вернула значение от 0 до 1023. В реальности диапазон может быть меньше.
|
||||
* Приблизительно от 300 (светло) до 800 (темно).
|
||||
* Поэтому, если светодиод светит тускло или его яркость меняется слабо,
|
||||
* то можно уменьшить входной диапазон функции map().
|
||||
* Например, измените lowValue на 300, а highValue на 800.
|
||||
*/
|
||||
}
|
||||
|
||||
void autoTune()
|
||||
{
|
||||
/*
|
||||
* В функции manualTune() входной диапазон функции map() нужно изменять
|
||||
* вручную. Но это можно автоматизировать.
|
||||
* В этой функции отслеживаются самые высокие и низкие значения lightLevel,
|
||||
* которые мы получаем функцией analogRead().
|
||||
* В начале программы объявлены переменные для входного диапазона low и high,
|
||||
* которые и будут автоматически изменяться.
|
||||
* Низкому уровню специально присвоено максимальное значение 1023, чтобы
|
||||
* первое полученное значение lightLevel было гарантированно меньше значния
|
||||
* low. По аналогии значение high = 0.
|
||||
*/
|
||||
|
||||
if(lightLevel < low)
|
||||
{
|
||||
low = lightLevel;
|
||||
}
|
||||
|
||||
if(lightLevel > high)
|
||||
{
|
||||
high = lightLevel;
|
||||
}
|
||||
|
||||
/*
|
||||
* После выполнения условий выше получится, что значению low соответсвует
|
||||
* минимальное значение из полученных lightLevel, а значнию high максимальное.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Если светодиод начинает мерцать, нужно в функции map добавить к low или high
|
||||
* небольшое смещение для сужения диапазона.
|
||||
*/
|
||||
lightLevel = map(lightLevel, low, high, 0, 255);
|
||||
lightLevel = constrain(lightLevel, 0, 255);
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
#include "notes.h" // Библиотека с частотой нот
|
||||
|
||||
// Константы с именами для используемых пинов.
|
||||
const int buzzerPin = P0_0;
|
||||
|
||||
/*
|
||||
* BPM (bpm, англ. beats per minute[1], удары в минуту) в музыке — показатель, определяющий скорость исполнения
|
||||
* или воспроизведения композиции. BPM — это количество четвертных нот в минуту, например, 120 BPM означает, что
|
||||
* в минуту играется 120 четвертных нот (следовательно, 2 четверти в секунду).
|
||||
*/
|
||||
int tempo = 138;
|
||||
|
||||
// функция настройки запускается один раз при нажатии кнопки reset или подаче питания на плату
|
||||
void setup() {
|
||||
// Настройка пинов для управления пьезоэлементом:
|
||||
pinMode(buzzerPin, OUTPUT);
|
||||
}
|
||||
|
||||
// функция цикла выполняется снова и снова бесконечно
|
||||
void loop() {
|
||||
for(int i = 0; i < sizeof(badApple)/sizeof(*badApple); i += 2)
|
||||
{
|
||||
int duration = badApple[i+1]/(tempo/60); // Рассчитывается продолжительность звучания ноты в миллисекундах
|
||||
if(badApple[i] != NOTE_PAUSE) // Если не пауза, то играть ноту
|
||||
{
|
||||
tone(buzzerPin, badApple[i], duration);
|
||||
}
|
||||
else // Если пауза, то выключить звук
|
||||
{
|
||||
noTone(buzzerPin);
|
||||
}
|
||||
delay(duration); // Задержка для выдерживания продолжительности ноты или паузы
|
||||
delay(1); // Небольшая задержка между нотами
|
||||
}
|
||||
|
||||
delay(3000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
386
libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/notes.h
Normal file
386
libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/notes.h
Normal file
@ -0,0 +1,386 @@
|
||||
/*
|
||||
* Обозначние нот
|
||||
* С - До
|
||||
* CS - До-диез
|
||||
* D - Ре
|
||||
* DS - Ре-диез
|
||||
* E - Ми
|
||||
* F - Фа
|
||||
* FS - Фа-диез
|
||||
* G - Соль
|
||||
* GS - Соль-диез
|
||||
* A - Ля
|
||||
* AS - Ля-диез. Альтернативное обозначение B - Си-бемоль
|
||||
* H - Си
|
||||
*/
|
||||
|
||||
|
||||
#define NOTE_PAUSE 0 // Пауза
|
||||
|
||||
// Суб-контp октава
|
||||
#define NOTE_E0 21
|
||||
#define NOTE_F0 22
|
||||
#define NOTE_FS0 23
|
||||
#define NOTE_G0 25
|
||||
#define NOTE_GS0 26
|
||||
#define NOTE_A0 28
|
||||
#define NOTE_AS0 29
|
||||
#define NOTE_H0 31
|
||||
|
||||
// Контp октава
|
||||
#define NOTE_C1 33
|
||||
#define NOTE_CS1 35
|
||||
#define NOTE_D1 37
|
||||
#define NOTE_DS1 39
|
||||
#define NOTE_E1 41
|
||||
#define NOTE_F1 44
|
||||
#define NOTE_FS1 46
|
||||
#define NOTE_G1 49
|
||||
#define NOTE_GS1 52
|
||||
#define NOTE_A1 55
|
||||
#define NOTE_AS1 58
|
||||
#define NOTE_H1 62
|
||||
|
||||
// Большая октава
|
||||
#define NOTE_C2 65
|
||||
#define NOTE_CS2 69
|
||||
#define NOTE_D2 74
|
||||
#define NOTE_DS2 78
|
||||
#define NOTE_E2 82
|
||||
#define NOTE_F2 87
|
||||
#define NOTE_FS2 93
|
||||
#define NOTE_G2 98
|
||||
#define NOTE_GS2 104
|
||||
#define NOTE_A2 110
|
||||
#define NOTE_AS2 117
|
||||
#define NOTE_H2 123
|
||||
|
||||
// Малая октава
|
||||
#define NOTE_C3 131
|
||||
#define NOTE_CS3 139
|
||||
#define NOTE_D3 147
|
||||
#define NOTE_DS3 156
|
||||
#define NOTE_E3 165
|
||||
#define NOTE_F3 175
|
||||
#define NOTE_FS3 185
|
||||
#define NOTE_G3 196
|
||||
#define NOTE_GS3 207
|
||||
#define NOTE_A3 220
|
||||
#define NOTE_AS3 233
|
||||
#define NOTE_H3 247
|
||||
|
||||
// 1я октава
|
||||
#define NOTE_C4 262
|
||||
#define NOTE_CS4 277
|
||||
#define NOTE_D4 294
|
||||
#define NOTE_DS4 311
|
||||
#define NOTE_E4 330
|
||||
#define NOTE_F4 349
|
||||
#define NOTE_FS4 370
|
||||
#define NOTE_G4 392
|
||||
#define NOTE_GS4 415
|
||||
#define NOTE_A4 440
|
||||
#define NOTE_AS4 466
|
||||
#define NOTE_H4 494
|
||||
|
||||
// 2я октава
|
||||
#define NOTE_C5 523
|
||||
#define NOTE_CS5 554
|
||||
#define NOTE_D5 587
|
||||
#define NOTE_DS5 622
|
||||
#define NOTE_E5 659
|
||||
#define NOTE_F5 698
|
||||
#define NOTE_FS5 740
|
||||
#define NOTE_G5 784
|
||||
#define NOTE_GS5 831
|
||||
#define NOTE_A5 880
|
||||
#define NOTE_AS5 932
|
||||
#define NOTE_H5 988
|
||||
|
||||
// 3я октава
|
||||
#define NOTE_C6 1047
|
||||
#define NOTE_CS6 1109
|
||||
#define NOTE_D6 1175
|
||||
#define NOTE_DS6 1245
|
||||
#define NOTE_E6 1319
|
||||
#define NOTE_F6 1397
|
||||
#define NOTE_FS6 1480
|
||||
#define NOTE_G6 1568
|
||||
#define NOTE_GS6 1661
|
||||
#define NOTE_A6 1720
|
||||
#define NOTE_AS6 1865
|
||||
#define NOTE_H6 1976
|
||||
|
||||
// 4я октава
|
||||
#define NOTE_C7 2093
|
||||
#define NOTE_CS7 2217
|
||||
#define NOTE_D7 2349
|
||||
#define NOTE_DS7 2489
|
||||
#define NOTE_E7 2637
|
||||
#define NOTE_F7 2793
|
||||
#define NOTE_FS7 2960
|
||||
#define NOTE_G7 3136
|
||||
#define NOTE_GS7 3332
|
||||
#define NOTE_A7 3440
|
||||
#define NOTE_AS7 3729
|
||||
#define NOTE_H7 3951
|
||||
|
||||
// 5я октава
|
||||
#define NOTE_C8 4186
|
||||
#define NOTE_CS8 4435
|
||||
#define NOTE_D8 4698
|
||||
#define NOTE_DS8 4978
|
||||
#define NOTE_E8 5274
|
||||
|
||||
// Длительности
|
||||
// Длительности измеряются относительно четвертой.
|
||||
// То есть, четвертая это 1, целая это 4 (4 четвертых).
|
||||
// Для удобного перевода в миллисекунды, значение умножены на 1000.
|
||||
#define DURATION_1_256 1000*1/64 // Двести пятьдесят шестая
|
||||
#define DURATION_1_128 1000*1/32 // Сто двадцать восьмая
|
||||
#define DURATION_1_64 1000*1/16 // Шестьдесят четвёртая
|
||||
#define DURATION_1_32 1000*1/8 // Тридцать вторая
|
||||
#define DURATION_1_16 1000*1/4 // Шестнадцатая
|
||||
#define DURATION_1_8 1000*1/2 // Восьмая
|
||||
#define DURATION_1_4 1000*1 // Четвертная
|
||||
#define DURATION_1_2 1000*2 // Половинная
|
||||
#define DURATION_1 1000*4 // Целая
|
||||
#define DURATION_2 1000*8 // Бревис
|
||||
#define DURATION_4 1000*16 // Лонга
|
||||
#define DURATION_8 1000*32 // Максима
|
||||
|
||||
/* Массив с нотами. Сначала идет значение частоты ноты, а затем ее длительность.
|
||||
* Длительности звучания ноты или паузы:
|
||||
* Кностанта Название Длительность в ед. времени
|
||||
* DURATION_1_256 - Двести пятьдесят шестая - 1/256
|
||||
* DURATION_1_128 - Сто двадцать восьмая - 1/128
|
||||
* DURATION_1_64 - Шестьдесят четвёртая - 1/64
|
||||
* DURATION_1_32 - Тридцать вторая - 1NOTE_H3/32
|
||||
* DURATION_1_16 - Шестнадцатая - 1/16
|
||||
* DURATION_1_8 - Восьмая - 1/8
|
||||
* DURATION_1_4 - Четвертная - 1/4
|
||||
* DURATION_1_2 - Половинная - 1/2
|
||||
* DURATION_1 - Целая - 1
|
||||
* DURATION_2 - Бревис - 2
|
||||
* DURATION_4 - Лонга - 4
|
||||
* DURATION_8 - Максима - 8
|
||||
*
|
||||
* Например, NOTE_C4, DURATION_1_4 означет ноту C(До) длительностью 1/4.
|
||||
*/
|
||||
int badApple[] =
|
||||
{
|
||||
// Такт 1
|
||||
NOTE_E4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_D5, DURATION_1_8,
|
||||
|
||||
// Такт 2
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_E4, DURATION_1_4,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
|
||||
// Такт 3
|
||||
NOTE_E4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
|
||||
// Такт 4
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_8,
|
||||
NOTE_DS4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
|
||||
// Такт 5
|
||||
NOTE_E4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_D5, DURATION_1_8,
|
||||
|
||||
// Такт 6
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_E4, DURATION_1_4,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
|
||||
// Такт 7
|
||||
NOTE_E4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
|
||||
// Такт 8
|
||||
NOTE_F4, DURATION_1_4,
|
||||
NOTE_G4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_4,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
|
||||
// Реприза
|
||||
// Такт 9
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
|
||||
// Такт 10
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
|
||||
// Такт 11
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_D4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_4,
|
||||
NOTE_D4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_8,
|
||||
|
||||
// Такт 12
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_4,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
|
||||
// Такт 13
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
|
||||
// Такт 14
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_F5, DURATION_1_8,
|
||||
|
||||
// Такт 15
|
||||
NOTE_G5, DURATION_1_8,
|
||||
NOTE_F5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
|
||||
// Концовка 1
|
||||
// Такт 16
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_D4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_4,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
|
||||
// Повтор репризы
|
||||
// Такт 17
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
|
||||
// Такт 18
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
|
||||
// Такт 19
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_D4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_4,
|
||||
NOTE_D4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_8,
|
||||
|
||||
// Такт 20
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_4,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
|
||||
// Такт 21
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
|
||||
// Такт 22
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_F5, DURATION_1_8,
|
||||
|
||||
// Такт 23
|
||||
NOTE_G5, DURATION_1_8,
|
||||
NOTE_F5, DURATION_1_8,
|
||||
NOTE_E5, DURATION_1_8,
|
||||
NOTE_D5, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_4,
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_H4, DURATION_1_8,
|
||||
|
||||
// Концовка 2
|
||||
// Такт 23
|
||||
NOTE_A4, DURATION_1_8,
|
||||
NOTE_G4, DURATION_1_8,
|
||||
NOTE_F4, DURATION_1_8,
|
||||
NOTE_D4, DURATION_1_8,
|
||||
NOTE_E4, DURATION_1_4,
|
||||
NOTE_PAUSE, DURATION_1_4,
|
||||
};
|
||||
16
libraries/Start_mik32_Guide/keywords.txt
Normal file
16
libraries/Start_mik32_Guide/keywords.txt
Normal file
@ -0,0 +1,16 @@
|
||||
#######################################
|
||||
# Syntax Coloring Map For StartGuide
|
||||
#######################################
|
||||
|
||||
#######################################
|
||||
# Datatypes (KEYWORD1)
|
||||
#######################################
|
||||
|
||||
#######################################
|
||||
# Methods and Functions (KEYWORD2)
|
||||
#######################################
|
||||
|
||||
#######################################
|
||||
# Constants (LITERAL1)
|
||||
#######################################
|
||||
|
||||
10
libraries/Start_mik32_Guide/library.properties
Normal file
10
libraries/Start_mik32_Guide/library.properties
Normal file
@ -0,0 +1,10 @@
|
||||
name=StartGuide
|
||||
version=0.0.0
|
||||
author=Mikron
|
||||
maintainer=Mikron
|
||||
sentence=Collection of examples for a course based on START-MIK32-V1.
|
||||
paragraph=Collection of examples for a course based on START-MIK32-V1.
|
||||
category=Uncategorized
|
||||
url=https://wiki.mik32.ru/
|
||||
architectures=MIK32_Amur
|
||||
|
||||
Loading…
Reference in New Issue
Block a user