Подключение
Мы подключаем резистор сопротивлением 220 Ом к выходу номер 13 (pin 13), к резистору в свою очередь подключаем анод (обычно длинная ножка) светодиода. Катод подсоединяем к земле (Grd). Затем подключаем контроллер через USB кабель к компьютеру и загружаем приведенный ниже код на котроллер Arduino.
Большинство плат Arduino имеют встроенный SMT (Surface-mount techology)светодиод, подключенный к выходу 13. Если вы запустите код на таких платах без подключения внешнего светодиода, то вы должны увидеть мигание встроенного светодиода на плате.
Код
В коде мы первой строк задаем режим выхода для вход/выхода (pin) 13:
pinMode(13, OUTPUT);
В основном цикле (loop) программы зажигаем светодиод:
digitalWrite(13, HIGH);
На выходе 13 появляется напряжение 5 В. Светодиод зажигается. Затем мы выключаем светодиод:
digitalWrite(13, LOW);
Изменив напряжение на выходе на 0 вольт, мы выключили светодиод. Для того чтобы человеческий глаз успевал замечать переключение светодиода введем задержку с помощью функции delay()
.
Пример 1
/*
Зажигаем светодиод на одну секунду, затем выключаем его на одну секунду в цикле.
*/
void setup() {
// Инициализируем цифровой вход/выход в режиме выхода.
// Выход 13 на большинстве плат Arduino подключен к светодиоду на плате.
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // зажигаем светодиод
delay(1000); // ждем секунду
digitalWrite(13, LOW); // выключаем светодиод
delay(1000); // ждем секунду
}
Пример 2
// Мигание светодиода с любого пина
int ledPin = 7; // Пин Arduino, который подключен к светодиоду
void setup() {
pinMode(ledPin, OUTPUT); // инициализируем вывод как выход
}
void loop() {
digitalWrite(ledPin, HIGH); // ВКЛ светодиод
delay(1000); // ждать 1000 миллисекунд (1 секунда)
digitalWrite(ledPin, LOW); // ВЫКЛ светодиода
delay(1000); // ждать 1 секунду
}
Пример 3
// Мигать несколькими светодиодами
#define LED_PIN8 8 // номер выхода,подключенного к светодиоду
#define LED_PIN9 9 // номер выхода,подключенного к светодиоду
#define LED_PIN10 10 // номер выхода,подключенного к светодиоду
#define INTERVAL 10000UL // интервал между включение/выключением светодиода (1 секунда)
void setup() {
// задаем режим выхода для порта, подключенного к светодиоду
pinMode(LED_PIN8, OUTPUT);
pinMode(LED_PIN9, OUTPUT);
pinMode(LED_PIN10, OUTPUT);
}
void loop()
{
// здесь будет код, который будет работать постоянно
// и который не должен останавливаться на время между переключениями свето
// обратите внимание на слово static
static unsigned long previousMillis = 0; // храним время последнего переключения светодиода
//проверяем не прошел ли нужный интервал, если прошел то
if(millis() – previousMillis > INTERVAL) {
// сохраняем время последнего переключения
previousMillis = millis();
}
if(millis() – previousMillis > 0*INTERVAL/6&&millis() – previousMillis < 1*INTERVAL/6) {
digitalWrite(LED_PIN9,HIGH);
}
if(millis() – previousMillis > 1*INTERVAL/6&&millis() – previousMillis < 2*INTERVAL/6) {
digitalWrite(LED_PIN9,LOW);
}
if(millis() – previousMillis > 2*INTERVAL/6&&millis() – previousMillis < 3*INTERVAL/6) {
digitalWrite(LED_PIN10,HIGH);
}
if(millis() – previousMillis > 3*INTERVAL/6&&millis() – previousMillis < 4*INTERVAL/6) {
digitalWrite(LED_PIN10,LOW);
}
if(millis() – previousMillis > 4*INTERVAL/6&&millis() – previousMillis < 5*INTERVAL/6) {
digitalWrite(LED_PIN8,HIGH);
}
if(millis() – previousMillis > 5*INTERVAL/6&&millis() – previousMillis < 6*INTERVAL/6) {
digitalWrite(LED_PIN8,LOW);
}
}