Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Чем выше частота ноты, тем громче она звучит.
4.Для чего мы использовали оператор логического отрицания!?
Поскольку мы собрали схему с подтягивающим резистором, при нажатии кнопки мы будем получать на соответствующем порте 0. Мы используем логический оператор отрицания «не»!. Если keyUp имеет значение 0, выражение!keyUp будет иметь значение 1 и наоборот.
Задания для самостоятельного решения
Сделайте так, чтобы наше пианино звучало в диапазоне от 2 кГц до 5 кГц.
Листинг:
1. #define BUZZER_PIN 13
2. #define FIRST_KEY_PIN 7
3. #define KEY_COUNT 3
4. void setup() {
5. pinMode(BUZZER_PIN, OUTPUT);
6. }
7. void loop() {
8. for (int i = 0; i < KEY_COUNT; ++i) {
9. int keyPin = i + FIRST_KEY_PIN;
10. boolean keyUp = digitalRead(keyPin);
11. if (!keyUp) {
12. int frequency = 2000 + i * 1000;
13. tone(BUZZER_PIN, frequency, 20);
14. }
15. }
16. }
Добавьте еще 2 кнопки и измените программу так, чтобы можно было извлечь 5 различных нот.
Листинг:
1. #define BUZZER_PIN 13
2. #define FIRST_KEY_PIN 7
3. #define KEY_COUNT 5
4. void setup() {
5. pinMode(BUZZER_PIN, OUTPUT);
6. }
7. void loop() {
8. for (int i = 0; i < KEY_COUNT; ++i) {
9. int keyPin = i + FIRST_KEY_PIN;
10. boolean keyUp = digitalRead(keyPin);
11. if (!keyUp) {
12. int frequency = 2500 + i * 500;
13. tone(BUZZER_PIN, frequency, 20);}
14. }
15. }
Подключите кнопки по схеме со стягивающим резистором и измените программу так, чтобы она продолжала работать.
Листинг:
1. #define BUZZER_PIN 13
2. #define FIRST_KEY_PIN 7
3. #define KEY_COUNT 5
4. void setup() {
5. pinMode(BUZZER_PIN, OUTPUT);
6. }
7. void loop() {
8. for (int i = 0; i < KEY_COUNT; ++i) {
9. int keyPin = i + FIRST_KEY_PIN;
10. boolean keyUp = digitalRead(keyPin);
11. if (keyUp) {
12. int frequency = 2500 + i * 500;
13. tone(BUZZER_PIN, frequency, 20);
14. }
15. }
16. }
Эксперимент 9. Миксер
В этом эксприменте мы создаем модель миксера с двумя скоростями работы.
Принципиальная схема


Код
1. #define MOTOR_PIN 9
2. #define FIRST_BUTTON_PIN 5
3. #define BUTTON_COUNT 3
4. // имена можно давать не только числам, но и целым выражени¤м.
5. // мы определ¤ем с каким шагом (англ. step) нужно мен¤ть
6. // скорость (англ. speed) мотора при нажатии очередной кнопки
7. #define SPEED_STEP (255 / (BUTTON_COUNT - 1))
8. void setup() {
9. pinMode(MOTOR_PIN, OUTPUT);
10. // на самом деле, у каждого порта уже есть подт¤гивающий
11. // резистор. ƒл¤ его включени¤ необходимо ¤вно настроить порт
12. // как вход с подт¤жкой (англ. inputwithpullup)
13. for (int i = 0; i < BUTTON_COUNT; ++i) {
14. pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP);
15. }
16. }
17. void loop()
18. {
19. for (int i = 0; i < BUTTON_COUNT; ++i) {
20. // если кнопка отпущена, нам она не интересна. ѕропускаем
21. // оставшуюс¤ часть цикла for, продолжа¤ (англ. continue)
22. // его дальше, дл¤ следующего значени¤ i
23. if (digitalRead(i + FIRST_BUTTON_PIN))
24. continue;
25. // кнопка нажата Ч выставл¤ем соответствующую ей скорость
26. // мотора. Нулевая кнопка остановит вращение, перва¤
27. // заставит крутиться в полсилы, вторая на полную
28. int speed = i * SPEED_STEP;
29. // подача Ў»ћ-сигнала на мотор заставит его крутитьс¤ с
30. // указанной скоростью: 0 Ч стоп машина, 127 Ч полсилы,
31. // 255 Ч полный вперед!
32. analogWrite(MOTOR_PIN, speed);
33. }
34. }
Вопросы для проверки себя
Зачем в схеме использован диод?
Защитный диод нам нужен для того, чтобы ток обратного направления, который начнет создавать двигатель, вращаясь по инерции, не вывел из строя транзистор.
Почему мы использовали полевой MOSFET-транзистор, а не биполярный?
Потому что биполярный и полевой транзисторы абсолютно разные по принципу действия. Выходной сигнал биполярного транзистора управляется током, а нам нужно управление напряжением.
|
|
|
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!