Пьезокерамический излучатель
В данном задании необходимо было при помощи кода и пьезокерамического излучателя дать микроконтроллеру команду издавать звуки и составить две коротких мелодии. Для этого была собрана схема (Рисунок 6) и составлен код:
Первая мелодия – веселая
int speakerPin = 3;
void setup() {
pinMode(speakerPin, INPUT);
tone(speakerPin, 400);
delay (1000);
tone(speakerPin, 300);
tone(speakerPin, 500);
delay (1000);
tone(speakerPin, 350);
tone(speakerPin, 600);
delay (1000);
tone(speakerPin, 400);
tone(speakerPin, 800);
delay (1000);
tone(speakerPin, 500);
noTone(speakerPin);
}
void loop() {
}
Вторя мелодия – грустная
int speakerPin = 3;
void setup() {
pinMode(speakerPin, INPUT);
tone(speakerPin, 100);
delay (1000);
tone(speakerPin, 200);
tone(speakerPin, 250);
delay (1000);
tone(speakerPin, 100);
tone(speakerPin, 250);
delay (1000);
tone(speakerPin, 100);
tone(speakerPin, 150);
delay (1000);
tone(speakerPin, 100);
noTone(speakerPin);
}
void loop() {
}
Рисунок 6 – Схема подключения пьезокерамического излучателя
Таким образом, при помощи команды tone(speakerPin,…) была задана тональность звука. При изменении значения в команде, изменялась мелодия, и были получены веселая и грустная мелодии. Команда noTone(speakerPin) выключает мелодию.
«Терменвокс»
В этом задании необходимо было при помощи изменения освещенности извлечь из пьезокерамического излучателя звуки разной тональности, имитируя музыкальный инструмент. Для этого была собрана схема (Рисунок 7), написана и загружена программа в контроллер:
Мелодия первая
int speakerPin = 3; // пьезокерамический излучатель подключен к 3 пину
int photocellPin = 0; // сенсор и понижающий резистор подключены к a0
void setup() {
}
void loop() {
int reading = analogRead(photocellPin); // аналоговые значения с сенсора
int pitch = 200 + reading / 4;
tone(speakerPin, pitch);
}
Мелодия вторая
int speakerPin = 3;
int photocellPin = 0;
void setup() {
}
void loop() {
int reading = analogRead(photocellPin);
int pitch = 800 + reading / 4;
tone(speakerPin, pitch);
}
Мелодия третья
int speakerPin = 3;
int photocellPin = 0;
void setup() {
}
void loop() {
int reading = analogRead(photocellPin);
int pitch = 1200 + reading / 6;
tone(speakerPin, pitch)
}
Рисунок 7 – Схема подключения фоторезистора и пьезокерамического излучателя
При помощи команды int reading = analogRead(photocellPin); контроллер считывал информацию об освещенности, а изменение числовых значений в команде int pitch = 200 + reading / 4 позволило изменять тональность звука.
«Прибор оценки освещенности»
В этой работе необходимо было запрограммировать микроконтроллер на включение соответствующего светодиода при изменении освещенности и при этом должна проигрываться короткая мелодия. При плохой освещенности должен загораться красный светодиод, хорошей - зеленый светодиод. Для этого была собрана схема (Рисунок 7), написана и загружена программа:
int m=0;
int speakerPin = 3;
void setup() {
int Red=9;
int Green=10;
pinMode(A0, INPUT);
pinMode(speakerPin, INPUT);
Serial.begin(9600); // связь с послед. портом
}
void loop() {
int t = analogRead(A0); //чтение значение с A0
if (t>600) { //если хорошая освещенность
analogWrite(9,0);
analogWrite(10,255); //Включили зеленую лампочку
if (m!=1) {
tone(speakerPin, 450);
delay(400);
tone(speakerPin, 550);
delay(300);
tone(speakerPin, 250);
delay(250);
noTone(3);
m=1;
}
else {
}
}
else {
analogWrite(9,255);
analogWrite(10,0);
if (m!=2) {
tone(speakerPin, 650);
delay(250);
tone(speakerPin, 250);
delay(250);
tone(speakerPin, 800);
delay(350);
noTone(3);
m=2;
}
else {
}
}
}
Рисунок 7 – Схема подключения фоторезистора, двух светодиодов и пьезокерамического излучателя
Таким образом, микроконтроллер включает зеленый или красный светодиод в зависимости от освещения и проигрывает короткую мелодию. Логические команды if и else задают, какой светодиод загорится и какая мелодия заиграет, после считывания значений освещенности.
