Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Топ:
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Дисциплины:
2018-01-30 | 3280 |
5.00
из
|
Заказать работу |
|
|
Мы использовали режим работы портов: INPUT_PULLUP. На цифровых портах Arduino есть встроенные подтягивающие резисторы, которые можно включить указанным образом одновременно с настройкой порта на вход. Именно поэтому мы не использовали резисторы при сборке схемы.
Как работает инструкция continue, использованная в цикле for?
Инструкция continue, которая выполнится в этом случае, отменит продолжение данной итерации цикла и выполнение программы продолжится со следующей. А мотор будет крутиться со скоростью, заданной при последнем нажатии на какую-то из кнопок.
Задания для самостоятельного решения
Внесите единственное изменение в программу, после которого максимальной скоростью вращения мотора составит половину от возможной.
Листинг:
1. #define MOTOR_PIN 9
2. #define FIRST_BUTTON_PIN 5
3. #define BUTTON_COUNT 3
4. #define SPEED_STEP (127 / (BUTTON_COUNT - 1))
5. void setup() {
6. pinMode(MOTOR_PIN, OUTPUT);
7. for (int i = 0; i < BUTTON_COUNT; ++i){
8. pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP);
9. }
10. }
11. void loop()
12. {
13. for (int i = 0; i < BUTTON_COUNT; ++i) {
14. if (digitalRead(i + FIRST_BUTTON_PIN))
15. continue;
16. int speed = i * SPEED_STEP;
17. analogWrite(MOTOR_PIN, speed);
18. }}
Перепишите программу без использования инструкции continue.
Листинг:
1. #define MOTOR_PIN 9
2. #define FIRST_BUTTON_PIN 5
3. #define BUTTON_COUNT 3
4. #define SPEED_STEP (255 / (BUTTON_COUNT - 1))
5. void setup() {
6. pinMode(MOTOR_PIN, OUTPUT);
7. for (int i = 0; i < BUTTON_COUNT; ++i) {
8. pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP);
9. }
10. }
11. void loop()
12. {
13. for (int i = 0; i < BUTTON_COUNT; ++i) {
14. if (!digitalRead(i + FIRST_BUTTON_PIN)) {
a. int speed = i * SPEED_STEP;
b. analogWrite(MOTOR_PIN, speed);
15. }
16. }
17. }
Добавьте в схему еще одну кнопку, чтобы у миксера стало три режима. Понадобилось ли изменять что-либо в программе?
Листинг:
1. #define MOTOR_PIN 9
2. #define FIRST_BUTTON_PIN 5
3. #define BUTTON_COUNT 4
4. #define SPEED_STEP (255 / (BUTTON_COUNT - 1))
5. void setup() {
6. pinMode(MOTOR_PIN, OUTPUT);
7. for (int i = 0; i < BUTTON_COUNT; ++i){
|
8. pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP);
9. }
10. }
11. void loop()
12. {
13. for (int i = 0; i < BUTTON_COUNT; ++i) {
14. if (digitalRead(i + FIRST_BUTTON_PIN))
15. continue;
16. int speed = i * SPEED_STEP;
17. analogWrite(MOTOR_PIN, speed);
18. }
19. }
Эксперимент 10. Кнопочный переключатель
В этом эксперименте мы делаем из тактовой кнопки триггер, борясь с «дребезгом».
Принципиальная схема
Код
1. #define BUTTON_PIN 3
2. #define LED_PIN 13
3. boolean buttonWasUp = true;
4. boolean ledEnabled = false;
5. void setup()
6. {
7. pinMode(LED_PIN, OUTPUT);
8. pinMode(BUTTON_PIN, INPUT_PULLUP);
9. }
10. void loop()
11. {
12. boolean buttonIsUp = digitalRead(BUTTON_PIN);
13. if (buttonWasUp &&!buttonIsUp) {
14. delay(10);
15. buttonIsUp = digitalRead(BUTTON_PIN);
16. if (!buttonIsUp)
17. {
18. ledEnabled =!ledEnabled;
19. digitalWrite(LED_PIN, ledEnabled);
20. }
21. }
22. buttonWasUp = buttonIsUp;
23. }
Вопросы для проверки себя
1.В каком случае оператор && возвращает значение «истина»?
Логический оператор && («и») возвращает значение «истина» только в случае истинности обоих его операндов.
Что такое «дребезг»?
Это многократные неконтролируемые замыкания и размыкания контактов за счет упругости материалов и деталей контактной системы — некоторое время контакты «подпрыгивают» при соударениях, размыкая и замыкая электрическую цепь.
Как мы с ним боремся в программе?
Дважды проверяем состояние кнопки, второй раз по истечении 10 миллисекунд, этого времени достаточно для того чтобы дребезг прекратился, но не достаточно чтобы повторно нажать на кнопку.
|
|
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!