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