Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2018-01-30 | 4229 |
5.00
из
|
Заказать работу |
|
|
Мы передаем в digitalWrite не конкретное значение HIGH или LOW, а просто булеву переменную ledEnabled. В зависимости от того, какое значение было для нее вычислено, светодиод будет зажигаться или гаситься.
Задания для самостоятельного решения
Измените код так, чтобы светодиод переключался только после отпускания кнопки.
Листинг:
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. #define BUTTON_PIN 3
2. #define BUTTON_PIN2 4
3. #define LED_PIN 13
4. boolean buttonWasUp = true;
5. boolean buttonWasUp2 = true;
6. boolean ledEnabled = false;
7. void setup()
8. {
9. pinMode(LED_PIN, OUTPUT);
10. pinMode(BUTTON_PIN, INPUT_PULLUP);
11. pinMode(BUTTON_PIN2, INPUT_PULLUP);
12. }
13. void loop()
14. {
15. boolean buttonIsUp = digitalRead(BUTTON_PIN);
16. boolean buttonIsUp2 = digitalRead(BUTTON_PIN2);
17. if (buttonWasUp &&!buttonIsUp) {
18. if (buttonWasUp2 &&!buttonIsUp2)
19. delay(10);
20. buttonIsUp = digitalRead(BUTTON_PIN);
21. buttonIsUp2 = digitalRead(BUTTON_PIN2);
22. if (!buttonIsUp &&!buttonIsUp2)
23. {
24. ledEnabled =!ledEnabled;
25. digitalWrite(LED_PIN, ledEnabled);
26. }
27. }
28. buttonWasUp = buttonIsUp;
29. buttonWasUp2 = buttonIsUp2;
30. }
Эксперимент 11. Светильник с кнопочным управлением
В этом эксперименте мы добавляем порцию яркости светодиоду одной кнопкой и убавляем другой.
Принципиальная схема
Код
1. #define PLUS_BUTTON_PIN 2
2. #define MINUS_BUTTON_PIN 3
3. #define LED_PIN 9
4. int brightness = 100;
5. boolean plusUp = true;
6. boolean minusUp = true;
7. void setup()
8. {
9. pinMode(LED_PIN, OUTPUT);
10. pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP);
11. pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP);
12. }
13. void loop()
14. {
15. analogWrite(LED_PIN, brightness);
|
16. plusUp = handleClick(PLUS_BUTTON_PIN, plusUp, +35);
17. minusUp = handleClick(MINUS_BUTTON_PIN, minusUp, -35);
18. }
19. boolean handleClick(int buttonPin, boolean wasUp, int delta)
20. {
21. boolean isUp = digitalRead(buttonPin);
22. if (wasUp &&!isUp) {
23. delay(10);
24. isUp = digitalRead(buttonPin);
25. if (!isUp)
26. brightness = constrain(brightness + delta, 0, 255);
27. }
28. return isUp;
29. }
Вопросы для проверки себя
1.Что необходимо для определения собственной функции?
Чтобы определить собственную функцию, нам нужно:
· Объявить, какой тип данных она будет возвращать. В нашем случае это boolean. Если функция только выполняет какие-то действия и не возвращает никакого значения, используйте ключевое слово void
· Назначить функции имя — идентификатор. Здесь действуют те же правила, что при именовании переменных и констант. Называть функции принято в том же стиле какПеременные.
· В круглых скобках перечислить передаваемые в функцию параметры, указав тип каждого. Это является объявлением переменных, видимых внутри вновь создаваемой функции, и только внутри нее. Например, если в данном эксперименте мы попробуем обратиться к wasUp или isUp из loop() получим от компилятора сообщение об ошибке. Точно так же, переменные, объявленные в loop, другим функциям не видны, но их значения можно передать в качестве параметров.
· Между парой фигурных скобой написать код, выполняемый функцией
· Если функция должна вернуть какое-то значение, с помощью ключевого слова return указать, какое значение возвращать. Это значение должно быть того типа, который мы объявили.
|
|
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!