Ход работы
- Изучили материал
- Сделали схему и задали значения переменных, массивов
#include <LiquidCrystal.h> //библиотека lcd экрана
const int rs = 12, e = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; //разъемы подключения lcd экрана
LiquidCrystal lcd(rs, e, d4, d5, d6, d7); //определение разъемов
int switch_button = 1; //переменная для переключения песен
int switch_mode = 0; //переменная для переключения режима
//массив типа данных byte содержат картинку
byte deathnote[8] = {0b00011,0b00010,0b00010,0b00010,0b01110,0b10010,0b10010,0b01100};
#define ACTIVATED LOW //переменные типа данных define не занимают программной памяти, а также программа сама подставляет значение независимо от данных
#define buzzer 1 // пин с пищалкой
//пины с кнопками
#define BUTTON10_PIN 10
#define BUTTON9_PIN 9
#define BUTTON8_PIN 8
#define BUTTON7_PIN 7
int tempo = 225; //скорость мелодии
int notes = sizeof(melody) / sizeof(melody[0]) / 2; //sizeof возвращает длину в байта
int wholenote = (60000 * 4) / tempo; //вычисляет продолжительность всей ноты в мс
int divider = 0, noteDuration = 0; //делитель и продолжительность ноты
//установка пина и картинки
void setup()
{
pinMode(buzzer, OUTPUT); //пищалка
lcd.createChar(1, deathnote); //картинка
}
3. Нашли в интернете ноты и составленные мелодии
//пример нот
#define NOTE_B0 31 //число - высота ноты в герцах
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
//массив нот для одной из мелодий. PROGMEM перемещает информацию во флеш память, так как она слишком длинная
const int melody[] PROGMEM = {
NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_FS3, -16, NOTE_D3, -16, NOTE_B2, -16, NOTE_A3, -16, NOTE_FS3, -16, NOTE_B2, -16, NOTE_D3, -16, NOTE_FS3, -16, NOTE_A3, -16, NOTE_FS3, -16, NOTE_D3, -16, NOTE_B2, -16,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_B3, -16, NOTE_G3, -16, NOTE_E3, -16, NOTE_G3, -16, NOTE_B3, -16, NOTE_E4, -16, NOTE_G3, -16, NOTE_B3, -16, NOTE_E4, -16, NOTE_B3, -16, NOTE_G4, -16, NOTE_B4, -16,NOTE_A2, 8, NOTE_A2, 8, NOTE_A3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_G3, 8, NOTE_A2, 8, NOTE_A2, 8,NOTE_F3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_DS3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_E3, 8, NOTE_F3, 8,NOTE_A2, 8, NOTE_A2, 8, NOTE_A3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_G3, 8, NOTE_A2, 8, NOTE_A2, 8,NOTE_F3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_DS3, -2,NOTE_A2, 8, NOTE_A2, 8, NOTE_A3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_G3, 8, NOTE_A2, 8, NOTE_A2, 8,NOTE_F3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_DS3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_E3, 8, NOTE_F3, 8,NOTE_A2, 8, NOTE_A2, 8, NOTE_A3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_G3, 8, NOTE_A2, 8, NOTE_A2, 8,NOTE_A3, -16, NOTE_F3, -16, NOTE_D3, -16, NOTE_A3, -16, NOTE_F3, -16, NOTE_D3, -16, NOTE_C4, -16, NOTE_A3, -16, NOTE_F3, -16, NOTE_A3, -16, NOTE_F3, -16, NOTE_D3, -16,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_CS3, 8, NOTE_CS3, 8, NOTE_CS4, 8, NOTE_CS3, 8, NOTE_CS3, 8, NOTE_B3, 8, NOTE_CS3, 8, NOTE_CS3, 8,NOTE_A3, 8, NOTE_CS3, 8, NOTE_CS3, 8, NOTE_G3, 8, NOTE_CS3, 8, NOTE_CS3, 8, NOTE_GS3, 8, NOTE_A3, 8,NOTE_B2, 8, NOTE_B2, 8, NOTE_B3, 8, NOTE_B2, 8, NOTE_B2, 8, NOTE_A3, 8, NOTE_B2, 8, NOTE_B2, 8,NOTE_G3, 8, NOTE_B2, 8, NOTE_B2, 8, NOTE_F3, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_B3, -16, NOTE_G3, -16, NOTE_E3, -16, NOTE_G3, -16, NOTE_B3, -16, NOTE_E4, -16, NOTE_G3, -16, NOTE_B3, -16, NOTE_E4, -16, NOTE_B3, -16, NOTE_G4, -16, NOTE_B4, -16,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_FS3, -16, NOTE_DS3, -16, NOTE_B2, -16, NOTE_FS3, -16, NOTE_DS3, -16, NOTE_B2, -16, NOTE_G3, -16, NOTE_D3, -16, NOTE_B2, -16, NOTE_DS4, -16, NOTE_DS3, -16, NOTE_B2, -16,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_E4, -16, NOTE_B3, -16, NOTE_G3, -16, NOTE_G4, -16, NOTE_E4, -16, NOTE_G3, -16, NOTE_B3, -16, NOTE_D4, -16, NOTE_E4, -16, NOTE_G4, -16, NOTE_E4, -16, NOTE_G3, -16, NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_A2, 8, NOTE_A2, 8, NOTE_A3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_G3, 8, NOTE_A2, 8, NOTE_A2, 8,NOTE_F3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_DS3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_E3, 8, NOTE_F3, 8,NOTE_A2, 8, NOTE_A2, 8, NOTE_A3, 8, NOTE_A2, 8, NOTE_A2, 8, NOTE_G3, 8, NOTE_A2, 8, NOTE_A2, 8,NOTE_A3, -16, NOTE_F3, -16, NOTE_D3, -16, NOTE_A3, -16, NOTE_F3, -16, NOTE_D3, -16, NOTE_C4, -16, NOTE_A3, -16, NOTE_F3, -16, NOTE_A3, -16, NOTE_F3, -16, NOTE_D3, -16,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, -2,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_C3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_AS2, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_B2, 8, NOTE_C3, 8,NOTE_E2, 8, NOTE_E2, 8, NOTE_E3, 8, NOTE_E2, 8, NOTE_E2, 8, NOTE_D3, 8, NOTE_E2, 8, NOTE_E2, 8,NOTE_B3, -16, NOTE_G3, -16, NOTE_E3, -16, NOTE_B2, -16, NOTE_E3, -16, NOTE_G3, -16, NOTE_C4, -16, NOTE_B3, -16, NOTE_G3, -16, NOTE_B3, -16, NOTE_G3, -16, NOTE_E3, -16,
};
4. Написали вспомогательные функции
void Switch_mode() //функция для смены режима с пианино на мелодии и обратно
{
if(digitalRead(BUTTON10_PIN) == LOW) //если кнопка нажата
{
if(switch_mode == 0) //изначально равен 0, поэтому первый режим пианино. Если равен 0, то будет равен 1
{
switch_mode = 1;
}
else if(switch_mode == 1) //и наоборот
{
switch_mode = 0;
}
}
}
void note_write_song() //выводит слева снизу и справа снизу картинку ноты
{
lcd.setCursor(0,1);
lcd.write(1);
lcd.setCursor(15,1);
lcd.write(1);
}
void lcd_write_note(const char* note) //выводит название ноты
{
lcd.setCursor(7,0);
lcd.print(note);
}
5. Далее все применялось и писалось в основном цикле
void loop()
{
lcd.begin(16, 2); //установка размера экрана
if(switch_mode == 0) //если режим пианино (0), то
{
for(int i = 0; i<8; i=i+2) //цикл для вывода картинки снизу и сверху до середины
{
lcd.setCursor(i,0);
lcd.write(1);
lcd.setCursor(i,1);
lcd.write(1);
}
for(int y = 9; y<16; y=y+2) //цикл для вывода картинки снизу и сверху после середины
{
lcd.setCursor(y,0);
lcd.write(1);
lcd.setCursor(y,1);
lcd.write(1);
}
while(digitalRead(BUTTON7_PIN) == ACTIVATED) //если кнопка нажато, то
{
tone(buzzer,NOTE_G3); //проигрывает ноту G3
lcd_write_note("G3"); //применяется функция, которая выводит ноту G3 на экран
}
while(digitalRead(BUTTON8_PIN) == ACTIVATED)
{
tone(buzzer,NOTE_C4);
lcd_write_note("C4");
}
while(digitalRead(BUTTON9_PIN) == ACTIVATED)
{
tone(buzzer,NOTE_F4);
lcd_write_note("F4");
}
noTone(buzzer); //останавливает воспроизведения сигнала функции tone()
if(digitalRead(BUTTON10_PIN) == LOW) //если кнопка нажата, то запускается функция
{
Switch_mode();
}
}
else if(switch_mode == 1) //если режим мелодий (1), то
{
if(switch_button == 1) //переключение мелодий
{
lcd.print("Doom OST. - E1M1"); //вывод названия
note_write_song(); //применение функции
for (int thisNote = 0; thisNote < notes * 2; thisNote = thisNote + 2) //цикл перебирает ноты мелодии
{
//вычисление продолжительности каждой ноты
divider = pgm_read_word_near(melody+thisNote + 1);
if (divider > 0) //если продолжительность ноты больше 0, то
{
noteDuration = (wholenote) / divider; //высчитывается значение и приравнивается к переменной noteDuration
}
else if (divider < 0) //если меньше, то
{
noteDuration = (wholenote) / abs(divider); //abs() берет модуль числа
noteDuration *= 1.5;
}
tone(buzzer, pgm_read_word_near(melody+thisNote), noteDuration * 0.9); //нота проигрывается на 90%, 10% на паузу
delay(noteDuration); //задержка равная длительности ноты
noTone(buzzer);
if(digitalRead(BUTTON10_PIN) == LOW) //если кнопка нажата, то меняется режим
{
Switch_mode();
break;
}
if (digitalRead(BUTTON7_PIN) == LOW) //если кнопка нажата, то меняется мелодия
{
switch_button = 0;
break;
}
}
}
//далее все также
else if (switch_button == 0)
{
lcd.setCursor(2,0);
lcd.print("Beethoven -");
lcd.setCursor(3,1);
lcd.print("Fur Elise");
note_write_song();
for (int thisNote = 0; thisNote < notes_2 * 2; thisNote = thisNote + 2)
{
divider = pgm_read_word_near(melody_2+thisNote + 1);
if (divider > 0)
{
noteDuration = (wholenote_2) / divider;
}
else if (divider < 0)
{
noteDuration = (wholenote_2) / abs(divider);
noteDuration *= 1.5;
}
tone(buzzer, pgm_read_word_near(melody_2+thisNote), noteDuration * 0.9);
delay(noteDuration);
noTone(buzzer);
if(digitalRead(BUTTON10_PIN) == LOW)
{
Switch_mode();
break;
}
if (digitalRead(BUTTON7_PIN) == LOW)
{
switch_button = 2;
break;
}
}
}
else if (switch_button == 2)
{
lcd.setCursor(6,0);
lcd.print("a-ha");
lcd.setCursor(3,1);
lcd.print("Take On Me");
note_write_song();
for (int thisNote = 0; thisNote < notes_3 * 2; thisNote = thisNote + 2)
{
divider = melody_3[thisNote + 1];
if (divider > 0)
{
noteDuration = (wholenote_3) / divider;
}
else if (divider < 0)
{
noteDuration = (wholenote_3) / abs(divider);
noteDuration *= 1.5;
}
tone(buzzer, melody_3[thisNote], noteDuration * 0.9);
delay(noteDuration);
noTone(buzzer);
if(digitalRead(BUTTON10_PIN) == LOW)
{
Switch_mode();
break;
}
if (digitalRead(BUTTON7_PIN) == LOW)
{
switch_button = 1;
break;
}
}
}
}
}
Как работает музыкальная пищалка
Запускается режим пианино:
Выводятся картинки нот.
По нажатию кнопки равной пину (7, 8, 9) проигрываются ноты и выводятся названия нот.
Если пользователь нажимает на кнопку под пином 10, то
Переключается на режим проигрывания мелодий:
Запускается первая мелодия.
Выводится название и картинка двух символов ноты слева снизу и справа снизу.
Если пользователь нажмет на кнопку под пином 7, то переключится мелодия на следующую.
Далее все происходит по той-же схеме, что и с первой мелодией.
С третьей мелодией все также.
Если пользователь еще раз нажмет на кнопку под пином 10, то режим переключится обратно на пианино и так по кругу.
Ссылка на проект
https://www.tinkercad.com/things/8OOZUgZYbUC-swanky-fulffy/editel?sharecode=fj6-xKfkeKnpbjRL-iE1S2N55lf1xCjwlpcmqW6bR6E
Компоненты
- Пьезоэлемент – 1
- Резистор 220 Ом – 5
- Кнопка – 4
- LCD 1602 – 1


Cхема подключения компонентов к плате

Возможности применения в жизни
Пьезоэлемент можно применить для:
- Игрушек с музыкой
- Музыкального проигрывателя
- В какой-либо технике, требующей проигрывания звуков/музыки
