Похожие презентации:
Работа с цифровыми входами/выходами Arduino
1. Работа с цифровыми входами/выходами Arduino
2. Пьезоизлучатель
Пьезоизлучатель – это электроакустическоеустройство воспроизведения звука, использующий
обратный пьезоэлектрический эффект.
Пьезоизлучатель может называться по разному - пищалка, зумер, piezo
buzzer или speaker. Суть одна - издать звук.
3. Устройство пьезодинамика пищалки
4.
5. Задача 2
Обеспечить воспроизведение звука частотойот 260 Гц до 490 Гц
Для эксперимента нам понадобятся:
1. платформа Arduino
2. USB-кабель
3. пьезоизлучатель
4. соединительные провода
5. макетная плата
6. Схема
7. Функция tone()
Функция tone()Синтаксис
tone(pin, frequency);
tone(pin, frequency, duration);
Параметры
Pin – номер пина по нумерации Arduino, на котором будет
воспроизводиться сигнал.
Frequency – частота выводимого меандра, Гц.
Duration – время длительности воспроизведения сигнала в
миллисекундах. Опциональный параметр.
Максимальная частота
Генерируемая частота звука зависит от размера таймера в плате
Arduino. Для микроконтроллера Arduino Uno или Nano минимальная
частота воспроизводимого звука составляет 31 Гц, а максимальная
частота tone – 65535 Гц. Диапазон воспринимаемых частот ухом
обычного человека значительно меньше.
8. Функция noTone()
Функция noTone()Прекращает генерирование прямоугольного
сигнала после использования функции tone().
Если сигнал не генерируется, функция ни к
чему не приводит.
9. Scatch
void setup(){
pinMode(3, OUTPUT);
}
void loop()
{
for(int i=260;i<=490;i+=50)
{
tone(3,i,10);
delay(50);
}
}
10. Плавное изменение частоты зуммера
void setup() {pinMode(10, OUTPUT);
}
void loop() { // увеличиваем частоту звука
for (int x = 0; x < 500 ; x++) {
tone (10, x);
delay(1);
} // уменьшаем частоту звука
for (int x = 500; x > 0 ; x--) {
tone (10, x);
delay(1);
}
}
11. Задание для самостоятельного решения
Добавьте в схему светодиод. Звук долженвоспроизводиться при включении светодиода и
пропадать при выключении.
12. Подключение тактовой кнопки к Arduino
13. Тактовая кнопка — простой механизм, замыкающий цепь пока есть давление на толкатель.
Кнопки с 4 контактами стоит рассматривать, как 2 пары рельс, которыесоединяются при нажатии.
14. Варианты различных кнопок
15. Кнопка – это очень простой компонент.
При нажатии рычага кнопки, она соединяют два контакта вместе, так чтоэлектричество может течь через него. Используемые нами кнопки имеют
четыре контакта.
На самом деле, здесь есть только два электрических соединения. Внутри
кнопки контакты B и C соединены друг с другом так же, как A и D.
16.
Включаем и выключаем светодиод нажатием кнопки17.
Включаем и выключаем светодиод нажатием кнопкиconst int buttonPin = 2; // номер входа, подключенный к кнопке
const int ledPin = 13; // номер выхода светодиода
// переменные
int buttonState = 0; // переменная для хранения состояния кнопки
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin); // считываем значения с входа кнопки
// проверяем нажата ли кнопка
// если нажата, то buttonState будет HIGH:
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // включаем светодиод
}
else {
digitalWrite(ledPin, LOW); // выключаем светодиод
}
}
18. Задача для самостоятельного решения. Нажатие одной кнопки включит светодиод, нажатие другой кнопки выключит светодиод.
19. Эффект дребезга
При замыкании и размыкании между пластинами кнопки возникаютмикроискры, провоцирующие до десятка переключений за несколько
миллисекунд. Явление называется дребезгом (англ. bounce). Это нужно
учитывать, если необходимо фиксировать «клики».
20. Схема подключения
Напрашивается подключение напрямую. Но этоневерный способ!!!
21. Схема со стягивающим резистором
•Есть нажатие: Vout = Vcc•Нет нажатия: Vout = 0
22. Схема с подтягивающим резистором
•Есть нажатие: Vout = 0•Нет нажатия: Vout = Vcc
23. Кнопка со стягивающим резистором
24.
Получим состояние кнопки и выведем вмонитор порта
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
25. Мигание светодиода после нажатия на кнопку
26.
const int PIN_BUTTON = 2;const int PIN_LED = 13;
void setup(){
Serial.begin(9600);
pinMode(PIN_LED, OUTPUT);
}
void loop() {
// Получаем состояние кнопки
int buttonState = digitalRead(PIN_BUTTON);
Serial.println(buttonState);
// Если кнопка не нажата, то ничего не делаем
if (!buttonState) { delay(50); return; }
// Если кнопка нажата, мигаем светодиодом
digitalWrite(PIN_LED, HIGH);
delay(1000);
digitalWrite(PIN_LED, LOW);
delay(1000);
}
27. Мерзкое пианино
28.
#define BUZZER_PIN 13#define FIRST_KEY_PIN 7
#define KEY_COUNT 3
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
for (int i = 0; i < KEY_COUNT; ++i) {
int keyPin = i + FIRST_KEY_PIN;
boolean keyUp = digitalRead(keyPin);
if (!keyUp) {
int frequency = 3500 + i * 500;
tone(BUZZER_PIN, frequency, 20);
}
}
}
29. Задания для самостоятельного решения
1.Сделайте так, чтобы наше пианино звучало в диапазоне от 2 кГц до 5 кГц.2.Добавьте еще 2 кнопки и измените программу так, чтобы можно было
извлечь 5 различных нот.
3.Подключите кнопки по схеме со стягивающим резистором и измените
программу так, чтобы она продолжала работать.
4.Схема с светодиодом, зуммером и кнопкой. При удерживании кнопки
яркость светодиода возрастает от 0 до 5В, при это частота звука также
нарастает, при отпускании – светодиод и звук выключается, даже если
максимум в 5В еще не был достигнут.
Электроника