Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
#define FIRST_LED_PIN 2
#define LAST_LED_PIN 11
void setup()
{
for (int pin = LAST_LED_PIN; pin >= FIRST_LED_PIN; --pin)
pinMode(pin, OUTPUT);
}
void loop()
{
unsigned int ms = millis();
int pin = LAST_LED_PIN - (ms / 120) % 10;
digitalWrite(pin, HIGH);
delay(10);
digitalWrite(pin, LOW);
}
Эксперимент 8. Мерзкое пианино
В этом эксперименте мы создаем маленькую клавиатуру, на которой можно сыграть несколько нот.
Схема
Код
#define BUZZER_PIN 13
#define FIRST_KEY_PIN 7
#define KEY_COUNT 3
void setup()
{
pinMode(12, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop()
{
digitalWrite(12, HIGH);
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);
}
}
}
Вопросы для проверки себя
Почему мы не настраивали порты, к которым подключены кнопки, как INPUT, но устройство работает?
Все порты на плате изначально имеют значение INPUT, так что задавать их не обязательно.
Каким образом мы избежали написания отдельного когда для чтения каждой кнопки?
Благодаря тому, что в начале программы мы определили FIRST_KEY_PIN и KEY_COUNT, мы можем подключать произвольное количество кнопок к любым идущим друг за другом цифровым пинам, и для корректировки программы нам не придется менять параметры цикла for.
Почему разные «ноты», издаваемые пищалкой, звучат с разной громкостью?
Чем выше частота ноты, тем громче она звучит.
4.Для чего мы использовали оператор логического отрицания!?
Поскольку мы собрали схему с подтягивающим резистором, при нажатии кнопки мы будем получать на соответствующем порте 0. Мы используем логический оператор отрицания «не»!. Если keyUp имеет значение 0, выражение!keyUp будет иметь значение 1 и наоборот.
Задания для самостоятельного решения
Сделайте так, чтобы наше пианино звучало в диапазоне от 2 кГц до 5 кГц.
#define BUZZER_PIN 13
#define FIRST_KEY_PIN 7
#define KEY_COUNT 3
void setup()
{
pinMode(12, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop()
{
digitalWrite(12, HIGH);
for (int i = 0; i < KEY_COUNT; ++i)
{
int keyPin = i + FIRST_KEY_PIN;
boolean keyUp = digitalRead(keyPin);
if (!keyUp)
{
int frequency = 2000 + i * 1500;
tone(BUZZER_PIN, frequency, 20);
}
}
}
Добавьте еще 2 кнопки и измените программу так, чтобы можно было извлечь 5 различных нот.
#define BUZZER_PIN 13
#define FIRST_KEY_PIN 5
#define KEY_COUNT 5
void setup()
{
pinMode(12, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop()
{
digitalWrite(12, HIGH);
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);
}
}
}
Подключите кнопки по схеме со стягивающим резистором и измените программу так, чтобы она продолжала работать.
#define BUZZER_PIN 13
#define FIRST_KEY_PIN 7
#define KEY_COUNT 3
void setup()
{
pinMode(12, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop()
{
digitalWrite(12, HIGH);
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);
}
}
}
Эксперимент 9. Миксер
В этом эксприменте мы создаем модель миксера с двумя скоростями работы.
Схема
Код
#define MOTOR_PIN 9
#define FIRST_BUTTON_PIN 5
#define BUTTON_COUNT 3
#define SPEED_STEP (255 / (BUTTON_COUNT - 1))
void setup()
{
pinMode(13, OUTPUT);
pinMode(MOTOR_PIN, OUTPUT);
for (int i = 0; i < BUTTON_COUNT; ++i)
pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP);
}
void loop()
{
digitalWrite(13, HIGH);
for (int i = 0; i < BUTTON_COUNT; ++i) {
if (digitalRead(i + FIRST_BUTTON_PIN))
continue;
int speed = i * SPEED_STEP;
analogWrite(MOTOR_PIN, speed);
}
}
Вопросы для проверки себя
|
|
|
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!