Найти в Дзене
Arduino

Arduino и кнопка из Sensor Kit for Arduino

Для создания Arduino проекта нам понадобится:

  • среда разработки ArduinoIDE;
  • плата Arduino;
  • Кнопка (из набора Sensor Kit for Arduino)
  • RGB светодиод (из набора Sensor Kit for Arduino);
  • монтажные провода - 7 шт.;
  • плата для монтажа без пайки.

В данном проекте в качестве платы Arduino будем использовать Arduino UNO.

Рисунок 1 - Arduino UNO
Рисунок 1 - Arduino UNO

RGB светодиод из набора Sensor Kit for Arduino. Отличительные особенности этого RGB светодиода в том, что на плате светодиода установлены резисторы на 1 кОм.

Рисунок 2 - RGB светодиод
Рисунок 2 - RGB светодиод

Кнопка из набора Sensor Kit for Arduino. Отличительные особенности кнопки в том что на плате установлен подтягивающий к земле резистор на 10 кОм. У этой кнопки перепутаны вывода на + 5 В и GND, возможно в более новых наборах это исправлено

Рисунок 3 - Кнопка
Рисунок 3 - Кнопка

Схема подключения следующая:

Рисунок 4 - Схема подключения RGB светодиода и кнопки к ArduinoUNO
Рисунок 4 - Схема подключения RGB светодиода и кнопки к ArduinoUNO
Рисунок 5 - ArduinoUNO и кнопка со RGB светодиодом
Рисунок 5 - ArduinoUNO и кнопка со RGB светодиодом

Запустим ArduinoIDE:

Рисунок 6 - ArduinoIDE
Рисунок 6 - ArduinoIDE

Вставим следующий код в ArduinoIDE и загрузим (комбинация клавиш Ctrl + U) его на плату (если у вас возникли ошибки при загрузке прочтите следующее):

int ledR = 11;
int ledG = 10;
int ledB = 9;
int button = 8;
// переменные
int Counter = 0; // счётчик нажатия кнопки
int State = 0; // текущее состояние кнопки
int lastState = 0; // предыдущее состояние кнопки
void setup() {
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(button, INPUT);
}
void loop() {
// считываем значения с входа кнопки
State = digitalRead(button);
// если значение превысет 3 обнуляем
if(Counter > 3){
Counter = 0;
}
// сравниваем состояние с предыдущим состоянием
if (State != lastState) {
// если состояние изменилось, увеличиваем счётчик
if (State == HIGH) {
// если текущее состояние HIGH, значит кнопка включена
Counter++;
} else {
// если текущее состояние LOW, значит кнопка выключена
}
// небольшая задержка для устранения эффекта дребезга
delay(50);
}
// сохраняем текущее состояние как последнее состояние для
следующего раза
lastState = State;
// включаем светодиод
if (Counter == 1) {
// Красный
digitalWrite(ledR, HIGH); // ВКЛ
}
else if (Counter == 2) {
// Зеленый
digitalWrite(ledG, HIGH); // ВКЛ
}
else if (Counter == 3) {
// Синий
digitalWrite(ledB, HIGH); // ВКЛ
}
else {
digitalWrite(ledR, LOW); // ВЫКЛ
digitalWrite(ledG, LOW); // ВЫКЛ
digitalWrite(ledB, LOW); // ВЫКЛ
}
}

После того как программа загрузиться на плату нажимаем кнопку.

В результате нажатия светодиод будет загораться разными цветами: после первого нажатия загорится красный, второго — зеленым, третьего — синим, и так по кругу.