Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/BarGraph

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Светодиодная шкала [1]

Светодиодная шкала – это серия расположенных в ряд светодиодов (как в эквалайзере). Она часто используется в качестве дисплея для аналоговых датчиков. Впрочем, в этом примере мы воспользуемся не светодиодной шкалой, а ее «разобранной» версией, т.е. несколькими светодиодами, и научимся ими управлять. В основе этого урока лежат два других – «Цикл For» (или «Рыцарь дорог») и «Использование входных данных для управления частотой мигания светодиода». Скетч работает следующим образом. Сначала считываем входные данные. Затем масштабируем диапазон входных данных под количество светодиодов (всего в цепи их будет десять). Затем используем цикл for(), чтобы «перескакивать» с одного светодиода на другой. Если номер светодиода ниже отмасштабированного значения, включаем его. Если выше – выключаем.

LITE-ON INC- LTA-1000G.jpg

Необходимое оборудование

  • Плата Arduino;
  • Светодиодная шкала или 10 светодиодов;
  • Потенциометр;
  • 10 резисторов на 220 Ом;
  • Провода-перемычки;
  • Макетная плата Breadboard;

Цепь

BarGraph bb.png

Схема

BarGraph2 schem.png

Код

  1. /*
  2.   Светодиодная шкала
  3.  
  4.   Включает последовательно расположенные светодиоды
  5.  в зависимости от данных, считанных с аналогового датчика.
  6.   Это простой способ сделать светодиодную шкалу.
  7.   И хотя в этом примере используется 10 светодиодов,
  8.  на самом деле их можно подключить сколько угодно,
  9.  но попутно поменяв число в ledCount (т.е. в переменной с количеством светодиодов)
  10.  и добавив или удалив контакты в массиве ledPins.
  11.  
  12.  При помощи этого метода можно управлять не только светодиодами, но и
  13. другими цифровыми устройствами для вывода данных,
  14. формирующихся на основе входных аналоговых данных.  
  15.  
  16.  Цепь:
  17.    * Десять светодиодов подключено к десяти цифровым контактам (со 2-ого по 11-ый)
  18.    * Те же десять светодиодов через 220-омовые резисторы подключены к «земле»
  19.  
  20.  Создан 4 сентября 2010 Томом Иго (Tom Igoe)
  21.  
  22.  Этот код не защищен авторским правом.
  23.  
  24.  http://www.arduino.cc/en/Tutorial/BarGraph
  25.  */
  26.  
  27.  
  28. // Это константы, т.е. значения, которые не изменятся:
  29. const int analogPin = A0;   // Контакт, к которому подключен потенциометр
  30. const int ledCount = 10;    // Количество светодиодов в шкале
  31.  
  32. int ledPins[] = {
  33.   2, 3, 4, 5, 6, 7,8,9,10,11 };   // Массив с номерам контактов, к которым подключены светодиоды
  34.  
  35. void setup() {
  36.   // Зацикливаем массив со светодиодами и делаем все эти контакты выходными:
  37.   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
  38.     pinMode(ledPins[thisLed], OUTPUT);
  39.   }
  40. }
  41.  
  42. void loop() {
  43.   // Считываем данные с потенциометра:
  44.   int sensorReading = analogRead(analogPin);
  45.   // Масштабируем эти данные под количество светодиодов:
  46.   int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
  47.  
  48.   // Зацикливаем массив со светодиодами:
  49.   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
  50.     // Если номер контакта, находящегося в массиве,
  51.     // меньше значения в ledLevel,
  52.     // то включаем светодиод, соответствующий этому контакту:
  53.     if (thisLed < ledLevel) {
  54.       digitalWrite(ledPins[thisLed], HIGH);
  55.     }
  56.     // выключаем все светодиоды, чьи номера контактов меньше значения в ledLevel:
  57.     else {
  58.       digitalWrite(ledPins[thisLed], LOW);
  59.     }
  60.   }
  61. }

См.также

  • pinMode()
  • for()
  • digitalWrite()
  • if...else
  • map()
  • For Loop
  • Array
  • If Statement
  • Row Column Scanning

Внешние ссылки

  1. Arduino - LED Bar Graph