Мигаем светодиодом

Подключение

Мы подключаем резистор сопротивлением 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);

  } 

}