Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
2018-01-30 | 2703 |
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-транзистор, а не биполярный?
Потому что биполярный и полевой транзисторы абсолютно разные по принципу действия. Выходной сигнал биполярного транзистора управляется током, а нам нужно управление напряжением.
|
|
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!