CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Светодиоды

Первое с чем можно поиграться на ардуинах — это, конечно светодиоды.
Надеюсь, в современном мире уже все знают, что это =) Но, если кто вдруг не в курсе — это такая лампочка маленькая — мало кушает и ярко светит. Можно показывать режим работы, можно мигать весело, а отдельные экземпляры и освещать недурственно могут.
Для первого опыта, даже собирать ничего не надо — на всех 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);                            
  } 
}
  • 0
  • 24 сентября 2012, 17:51
  • Zoltberg

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.