Эксперимент Маячок


Вопросы для проверки себя



бет24/45
Дата13.02.2023
өлшемі1,82 Mb.
#67503
түріЗакон
1   ...   20   21   22   23   24   25   26   27   ...   45

Вопросы для проверки себя


  1. В каком случае оператор && возвращает значение «истина»?

  2. Что такое «дребезг»?

  3. Как мы с ним боремся в программе?

  4. Как можно избежать явного указания значения уровня напряжения при вызове digitalWrite?

Задания для самостоятельного решения


  1. Измените код так, чтобы светодиод переключался только после отпускания кнопки.

  2. Добавьте в схему еще одну кнопку и доработайте код, чтобы светодиод зажигался только при нажатии обеих кнопок.


Эксперимент 11. Светильник с кнопочным управлением
← Кнопочный переключатель | Оглавление | Кнопочные ковбои →

В этом эксперименте мы добавляем порцию яркости светодиоду одной кнопкой и убавляем другой.


Список деталей для эксперимента

  • 1 плата Arduino Uno

  • 1 беспаечная макетная плата

  • 2 тактовых кнопки

  • резистор номиналом 220 Ом

  • светодиод

  • 7 проводов «папа-папа»

Принципиальная схема

Схема на макетке

Обратите внимание

  • Если вы переделываете схему из схемы предыдущего эксперимента, обратите внимание, что на этот раз нам нужно подключить светодиод к порту, поддерживающему ШИМ.

Скетч
p110_plus_minus_light.ino
#define PLUS_BUTTON_PIN 2
#define MINUS_BUTTON_PIN 3
#define LED_PIN 9
int brightness = 100;
boolean plusUp = true;
boolean minusUp = true;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP);
pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP);
}
void loop()
{
analogWrite(LED_PIN, brightness);
// реагируем на нажатия с помощью функции, написанной нами
plusUp = handleClick(PLUS_BUTTON_PIN, plusUp, +35);
minusUp = handleClick(MINUS_BUTTON_PIN, minusUp, -35);
}
// Собственная функция с 3 параметрами: номером пина с кнопкой
// (buttonPin), состоянием до проверки (wasUp) и градацией
// яркости при клике на кнопку (delta). Функция возвращает
// (англ. return) обратно новое, текущее состояние кнопки
boolean handleClick(int buttonPin, boolean wasUp, int delta)
{
boolean isUp = digitalRead(buttonPin);
if (wasUp && !isUp) {
delay(10);
isUp = digitalRead(buttonPin);
// если был клик, меняем яркость в пределах от 0 до 255
if (!isUp)
brightness = constrain(brightness + delta, 0, 255);
}
return isUp; // возвращаем значение обратно, в вызывающий код
}


Достарыңызбен бөлісу:
1   ...   20   21   22   23   24   25   26   27   ...   45




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет