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