библиотека для работы с новой платой

This commit is contained in:
klassents 2024-12-19 15:48:32 +07:00
parent 99a5c81da1
commit 1b039cb163
12 changed files with 861 additions and 0 deletions

View File

@ -0,0 +1,2 @@
installed.json
.vscode/

View File

@ -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); // Секунда ожидания
}

View File

@ -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
}
}

View File

@ -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); // Выключаем светодиод
}
}

View File

@ -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 мс
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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);
}

View 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,
};

View File

@ -0,0 +1,16 @@
#######################################
# Syntax Coloring Map For StartGuide
#######################################
#######################################
# Datatypes (KEYWORD1)
#######################################
#######################################
# Methods and Functions (KEYWORD2)
#######################################
#######################################
# Constants (LITERAL1)
#######################################

View 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