Светодиоды


Первое с чем можно поиграться на ардуинах — это, конечно светодиоды.
Надеюсь, в современном мире уже все знают, что это =) Но, если кто вдруг не в курсе — это такая лампочка маленькая — мало кушает и ярко светит. Можно показывать режим работы, можно мигать весело, а отдельные экземпляры и освещать недурственно могут.
Для первого опыта, даже собирать ничего не надо — на всех Arduino-платах(кроме, пожалуй ArduinoMini) к 13 пину подключен светодиод «L».

Просто заливаете скетч Blink из примеров – и он моргает=)
Но на плате это же не интересно, надо своё воткнуть!
Только втыкать надо не как попало — у светодиодов есть плюс и минус. Ну правильней, конечно, катод и анод=)
Обычно более длинный вывод — анод — сюда надо подавать плюсик (лог.единицу, HIGH)
А спил корпуса(линзы) — со стороны катода — эту ножку нужно воткнуть в GND (или подать лог.ноль, LOW)

На схемах обозначается как диод с двумя стрелочками наружу, символизирующими излучаемый диодом свет.

Кстати если у обозначения какой-нибудь детали стрелки внутрь — это, как вы можете догадаться, означает её светочувствительность и к её названию можно смело довесить фото- (фотодиод, фототранзистор, фоторезистор).
Иногда значок светодиода обводят в кружок — это символизирует корпус. Но для «одинарных» диодов всё чаще этим разумно пренебрегают. А вот если диодов в одном корпусе несколько (например RGB) — то их обводка их общим эллипсом выглядит более уместной=)

В ардуину можно втыкать прямо так, без ничего — ни плата не светодиод не пострадают (скорей всего=).

Но это категорически неправильно!
Питаются светодиоды током, который надо ограничить, а занимаются этим — резисторы.
Не вдаваясь в подробности — ставьте 470 Ом и будет нормальный индикатор, если слишком ярко — 1 кОм,если тускло — 100 Ом, поэкспериментируйте.

А если по-научному — то в документации ищем прямое напряжение на светодиоде (Vf) и при каком оно прямом токе (If), затем идём на поиски калькулятора резистора для светодиода и всё вычисляем. Но если совсем честно — то надо ещё знать падение на ножке контроллера =)

Подключить можно так — тогда будет светится при HIGH на цифровом пине,

Немножко модифицируем Blink:

// Подключим светодиод АНОДОМ к 3 пину ардуины, а КАТОДОМ - к GND
int led = 3;// и обзовём этот пин

void setup() {
  pinMode(led, OUTPUT); // настроим выбранный пин как выход
}

void loop() {
  digitalWrite(led, HIGH);   // установим ВЫСОКИЙ уровень на пине - светодиод загорится
  delay(1000);               // подержим включённым секундочку
  digitalWrite(led, LOW);    // и выключим установив НИЗКИЙ уровень
  delay(1000);               // и опять подождём
}

А можно так:

тогда гореть будет при LOW.
Скетч можно было и не менять — будет работать и с верхним, но наоборот.
Для ясности и правильности каментов для этого включения еще модифицируем многострадальный Blink:

// Подключим светодиод КАТОДОМ  к 3 пину ардуины, а АНОДОМ - к пину "5V"
int led = 3;// и обзовём этот пин

void setup() {
  pinMode(led, OUTPUT); // настроим выбранный пин как выход
}

void loop() {
  digitalWrite(led, LOW);   // установим НИЗКИЙ уровень на пине - светодиод загорится
//ведь "плюс" мы ему уже подали - ему только "минуса" и не хватает
  delay(1000);              // подержим включённым секундочку
  digitalWrite(led, HIGH);  // и выключим установив ВЫСОКИЙ уровень
  delay(1000);              // и опять подождём
}


Светодиоды можно не только включать-выключать, но и регулировать яркость их свечения. Для этого на ардуинах применяют ШИМ (PWM). Подключается всё точно так же, а в скетче вместо digitalWrite() используется analogWrite().
В Ардуино ИДЕ уже есть пример «fading»:

int ledPin = 3;    // светодиод подключен(анодом) к 3 ноге

void setup()  {
  //тут ничего не делаем
}

void loop()  {
  // меняем яркость от  min до max по 5 единиц за шаг:
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    analogWrite(ledPin, fadeValue); // записываем значение ( от 0 до 255)
    delay(30);// подождем - что бы не слишком быстро менялось
  }

  // а теперь от max до min уменьшая на 5 единиц за шаг:
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
      analogWrite(ledPin, fadeValue);
      delay(30);
  }
}

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение