Почему разные «ноты», издаваемые пищалкой, звучат с разной громкостью? — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Почему разные «ноты», издаваемые пищалкой, звучат с разной громкостью?

2018-01-30 2695
Почему разные «ноты», издаваемые пищалкой, звучат с разной громкостью? 5.00 из 5.00 5 оценок
Заказать работу

Чем выше частота ноты, тем громче она звучит.

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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.