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