diff --git a/libraries/Start_mik32_Guide/.gitignore b/libraries/Start_mik32_Guide/.gitignore new file mode 100644 index 0000000..5bce97a --- /dev/null +++ b/libraries/Start_mik32_Guide/.gitignore @@ -0,0 +1,2 @@ +installed.json +.vscode/ \ No newline at end of file diff --git a/libraries/Start_mik32_Guide/examples/Circuit_1_Blink/Circuit_1_Blink.ino b/libraries/Start_mik32_Guide/examples/Circuit_1_Blink/Circuit_1_Blink.ino new file mode 100644 index 0000000..85c9290 --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_1_Blink/Circuit_1_Blink.ino @@ -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); // Секунда ожидания +} diff --git a/libraries/Start_mik32_Guide/examples/Circuit_2_Button/Circuit_2_Button.ino b/libraries/Start_mik32_Guide/examples/Circuit_2_Button/Circuit_2_Button.ino new file mode 100644 index 0000000..586c6d0 --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_2_Button/Circuit_2_Button.ino @@ -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 + } +} diff --git a/libraries/Start_mik32_Guide/examples/Circuit_3_Buttons/Circuit_3_Buttons.ino b/libraries/Start_mik32_Guide/examples/Circuit_3_Buttons/Circuit_3_Buttons.ino new file mode 100644 index 0000000..4124914 --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_3_Buttons/Circuit_3_Buttons.ino @@ -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); // Выключаем светодиод + } +} + + + + diff --git a/libraries/Start_mik32_Guide/examples/Circuit_4_Potentiometer/Circuit_4_Potentiometer.ino b/libraries/Start_mik32_Guide/examples/Circuit_4_Potentiometer/Circuit_4_Potentiometer.ino new file mode 100644 index 0000000..a84fffc --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_4_Potentiometer/Circuit_4_Potentiometer.ino @@ -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 мс +} diff --git a/libraries/Start_mik32_Guide/examples/Circuit_5_Brightness/Circuit_5_Brightness.ino b/libraries/Start_mik32_Guide/examples/Circuit_5_Brightness/Circuit_5_Brightness.ino new file mode 100644 index 0000000..dcb4b6f --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_5_Brightness/Circuit_5_Brightness.ino @@ -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); +} + + + + diff --git a/libraries/Start_mik32_Guide/examples/Circuit_6_RGB_LED/Circuit_6_RGB_LED.ino b/libraries/Start_mik32_Guide/examples/Circuit_6_RGB_LED/Circuit_6_RGB_LED.ino new file mode 100644 index 0000000..e75706d --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_6_RGB_LED/Circuit_6_RGB_LED.ino @@ -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); + } +} diff --git a/libraries/Start_mik32_Guide/examples/Circuit_7_Photoresistor/Circuit_7_Photoresistor.ino b/libraries/Start_mik32_Guide/examples/Circuit_7_Photoresistor/Circuit_7_Photoresistor.ino new file mode 100644 index 0000000..f299cc5 --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_7_Photoresistor/Circuit_7_Photoresistor.ino @@ -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); +} diff --git a/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/Circuit_8_Buzzer.ino b/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/Circuit_8_Buzzer.ino new file mode 100644 index 0000000..ad01304 --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/Circuit_8_Buzzer.ino @@ -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); +} + + + + + + + + + + diff --git a/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/notes.h b/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/notes.h new file mode 100644 index 0000000..71b239c --- /dev/null +++ b/libraries/Start_mik32_Guide/examples/Circuit_8_Buzzer/notes.h @@ -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, +}; diff --git a/libraries/Start_mik32_Guide/keywords.txt b/libraries/Start_mik32_Guide/keywords.txt new file mode 100644 index 0000000..56e4b89 --- /dev/null +++ b/libraries/Start_mik32_Guide/keywords.txt @@ -0,0 +1,16 @@ +####################################### +# Syntax Coloring Map For StartGuide +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/libraries/Start_mik32_Guide/library.properties b/libraries/Start_mik32_Guide/library.properties new file mode 100644 index 0000000..a41bde0 --- /dev/null +++ b/libraries/Start_mik32_Guide/library.properties @@ -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 +