Arduino:Примеры/Применение аппаратного прерывания для управления миганием RGB-светодиода
Материал из Онлайн справочника
				
				
				Перейти к навигацииПерейти к поиску
				
				
| Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing | 
Проверка/Оформление/Редактирование: Мякишев Е.А.
Применение аппаратного прерывания для управления миганием RGB-светодиода
Данный пример демонстрирует применение аппаратного прерывания для управления миганием RGB-светодиода. Здесь реализована схема аппаратного антидребезга контакта кнопки.
Необходимые компоненты
- Плата Arduino Uno, 1 шт.;
- Инвертирующий триггер Шмитта SN74LS14N, 1 шт.;
- RGB-светодиод, 1 шт.;
- Кнопка, 1 шт.
- Резистор на 220 Ом, 3 шт.;
- Резистор на 10 кОм, 1 шт.;
- Резистор на 100 Ом, 1 шт.;
- Конденсатор, 10 мкФ, 1 шт.;
- Макетная плата;
- Провода перемычки;
Монтажная схема
Соберите схему согласно монтажной схеме.




Код
#define BUTTON_INT 0                          // Прерывание 0 (2-ой цифровой контакт на Arduino Uno)
#define RED        11                         // Красный вывод RGB-светодиода подключен к 11-му цифровому контакту
#define GREEN      10                         // Зеленый вывод RGB-светодиода подключен к 10-му цифровому контакту
#define BLUE       9                          // Синий вывод RGB-светодиода подключен к 9-му цифровому контакту
volatile int selectedLED = RED;               // Переменную с модификатором volatile  можно изменять внутри функции-обработчика прерывания
void setup()
{
  pinMode (RED, OUTPUT);
  pinMode (GREEN, OUTPUT);
  pinMode (BLUE, OUTPUT);
  attachInterrupt(BUTTON_INT, swap, RISING); // Инициализация аппаратного прерывания
                                             // BUTTON_INT: прерывание 0 (2-ой цифровой контакт на Arduino Uno)
                                             // swap      : функция-обработчик прерывания 
                                             // RISING    : прерывание срабатывает, когда контакт переключается из LOW в HIGH
                                             // Примечание: заметьте, мы используем RISING(из LOW в HIGH) потому-что мы применяем
                                             // инвертирующий триггер Шмитта SN74LS14N
}
void swap()
{
  analogWrite(selectedLED, 0);               // Выключаем текущий цвет
  // Но теперь выбираем другой цвет...
  if (selectedLED == GREEN)
    selectedLED = RED;
  else if (selectedLED == RED)
    selectedLED = BLUE;
  else if (selectedLED == BLUE)
    selectedLED = GREEN;
}
void loop()
{
  for (int i = 0; i<256; i++)
  {
    analogWrite(selectedLED, i);
    delay(10);
  }
  for (int i = 255; i>= 0; i--)
  {
    analogWrite(selectedLED, i);
    delay(10);
  }
}
См.также
Внешние ссылки
| Arduino продукты | |
|---|---|
| Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino | 
| Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter | 
| Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle | 
| Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap | 
| 3D-печать | Arduino Materia 101 | 
| Устаревшие устройства | - | 
| Примеры Arduino | |
|---|---|
| Стандартные функции | |
| Основы | 
 | 
| Цифровой сигнал | 
 | 
| Аналоговый сигнал | 
 | 
| Связь | 
 | 
| Управляющие структуры | 
 | 
| Датчики | 
 | 
| Дисплей | Примеры, объясняющие основы управления дисплеем: 
 | 
| Строки | 
 | 
| USB (для Leonardo, Micro и Due плат) | В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due. 
 | 
| Клавиатура | 
 | 
| Мышь | 
 | 
| Разное | |
Категории: 
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino
