Видеоурок 2. Arduino — кнопки, PWM, функции

Сегодня публикую второй видеоурок, посвященный основам работы с Arduino. Этот урок посвящен подключению кнопок для ввода сигналов, PWM-входам Arduino и использованию функций в языке Arduino.

В этом уроке Джереми Блюм подключает к PWM-входу Arduino кнопку, при помощи которой управляет яркостью свечения светодиода.

PWM, сокращение от Pulse-Width Modulation — это широтно-импульсная модуляция. Я планирую посвятить этому отдельную публикацию, поэтому не буду заострять здесь внимание на этом понятии. Просто посмотрите видео.

Для этого урока потребуются:

  • Плата Arduino
  • Кнопка
  • Светодиод
  • 2 резистора
  • Соединительные провода

Итак, смотрим видео.

Часть 1.

 

Часть 2.

Тип boolean — это тип данных, принимающих только два значения. Эти значения 1 или 0 (например для обозначения истинно-ложно, есть сигнал-нет сигнала). В языке Arduino есть константы, принадлежащие типу boolean: HIGH-LOW, TRUE-FALSE. В действительности, HIGH = 1, LOW = 0, TRUE = 1, FALSE = 0.

В примере есть, так называемые, операторы сравнения: == (равно), &&(и), а также логический оператор отрицания !, который «инвертирует» значение, т.е. в данном случае меняет значение ledPin на 0, если оно было равно 1 и устанавливает значение ledPin в 1, если оно было равно 0. Также здесь рассмотрена условная управляющая конструкция if-else.

Код с комментариями ко второму видео

const int LED=9;          // Светодиод подключаем к 9 выводу
const int BUTTON=2;       // Кнопка подключена ко 2 выводу
boolean lastButton = LOW; // Предыдущее состояние кнопки

boolean currentButton=LOW; // Текущее состояние кнопки

boolean ledOn=false;       // Текущее состояние светодиода

void setup() {
 pinMode(LED, OUTPUT);     // Пин со светодиодом в режиме выхода
 pinMode(BUTTON, INPUT);   // Пин с кнопкой в режиме входа
}

// Функция для устранения дребезга
// принимает в качестве аргумента предыдущее состояние кнопки
// и выдает фактическое
boolean debounce(boolean last) {
 boolean current=digitalRead(BUTTON); // считываем состояние кнопки
 // если изменилось...
 if (last != current) {
  delay(5);                       // Ждем 5 мс
  current=digitalRead(BUTTON);    // Считываем состояние кнопки
  return current;                // Возвращаем состояние кнопки
 }
}
void loop() {
  currentButton=debounce(lastButton);
  // если нажатие
  if (lastButton == LOW && currentButton == HIGH){
   ledOn = !ledOn;  // Меняем состояние светодиода на противоположное
  }
  lastButton=currentButton; // предыдущее состояние кнопки теперь равно текущему
  digitalWrite(LED, ledOn); // реализуем текущее состояние светодиода
}

Если возникнут вопросы — задавайте.

Видеоурок 1. Первые шаги с Arduino

Видеоурок 3. Основы схемотехники

Видеоурок 4. Аналоговые входы Arduino

Видеоурок 5. Моторы и транзисторы

Видеоурок 6. Serial и Processing

 
Как вы оцениваете эту публикацию? 1 звезда2 звезды3 звезды4 звезды5 звезд (5 голосов, средняя оценка: 5,00 из 5)
Загрузка...

4 комментария к записи “Видеоурок 2. Arduino — кнопки, PWM, функции”

  1. Михаил:

    Привет.

    Я не понял какую роль выполняет «last» в функции debounce, «last» это произвольное название или оператор такой? После if сравнивается «last» с «current», но откуда программа знает чему равен «last»??

    • Михаил, привет. last и current — это названия переменных. В last хранится состояние кнопки в предыдущий момент времени, а в current — текущее состояние кнопки. last передается в качестве параметра в функцию debounce. Когда мы вызываем debounce (lastButton), то внутри функции debounce, переменная last будет равна значению lastButton.

      • Мbхаил:

        То есть значение «last» устанавливается с помощью строчки «return current;» и каждый раз когда функция debounce срабатывает в цикле void loop считывается прежнее значение? Я правильно понял?

        • Я добавил код с комментариями в тексте статьи. Значение last устанавливается в 28 строке

          currentButton=debounce(lastButton);

          После этого выполнение программы переходит в функцию debounce и last получает значение lastButton

Оставить комментарий