Текущее время: 13 ноя 2018, 04:28

Город ХОББИ

Занятие любимым хобби - это путь к счастливой жизни!

Урок 6. Подключение семисегментного LED индикатора к Ардуино

Обучение с нуля, шаг за шагом.
Аватар пользователя
 
Сообщений: 690
Зарегистрирован: 27 мар 2013, 23:12

Урок 6. Подключение семисегментного LED индикатора к Ардуино

Сообщение -=dp=- » 09 мар 2018, 16:19

Урок 6. Подключение цифрового LED семисегментного индикатора к Ардуино

Для данного практического занятия нам понадобятся:
1 - плата контроллера Ардуино УНО
2 - цифровогй LED семисегментный индикатор
3 - резистор 560 Ом
4 - макетная плата
5 - монтажные провода
6 - кабель microUSB > USB

Купить Ардуино в Калининграде можно тут: http://newmar.ru

Подключаем все детали по схеме на рисунке ниже:

Arduino UNO led7.jpg
Подключение цифрового LED семисегментного индикатора



Аватар пользователя
 
Сообщений: 690
Зарегистрирован: 27 мар 2013, 23:12

Re: Урок 6. Подключение семисегментного LED индикатора к Ард

Сообщение -=dp=- » 09 мар 2018, 16:34

Запускаем среду разработки Ардуино IDE и открываем тестовый скетч Blink.
Его будем брать за начальную точку отправления ;)
Теперь, чтобы определить какой выход контроллера Ардуино будет принадлежать какому сегменту индикатора, нам надо создать последовательность программного кода, в котором у нас будут зажигаться светодиоды по очереди, с интервалом 2 секунды.
Это необходимо для составления матрицы сегментов.

Загружаем в плату Ардуино следующий код:

Код: выделить все
//  Урок 6. Подключение семисегментного LED индикатора к Ардуино
const int led2 =  2;
const int led3 =  3;
const int led4 =  4;
const int led5 =  5;
const int led6 =  6;
const int led7 =  7;
const int led8 =  8;

void setup() {
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
}

void loop() {
 int i = 2000;
   digitalWrite(led2, HIGH);
    delay(i);
    digitalWrite(led2, LOW);
    delay(i);
    digitalWrite(led3, HIGH);
    delay(i);
    digitalWrite(led3, LOW);
    delay(i);
    digitalWrite(led4, HIGH);
    delay(i);
    digitalWrite(led4, LOW);
    delay(i);
    digitalWrite(led5, HIGH);
    delay(i);
    digitalWrite(led5, LOW);
    delay(i);
    digitalWrite(led6, HIGH);
    delay(i);
    digitalWrite(led6, LOW);
    delay(i);
    digitalWrite(led7, HIGH);
    delay(i);
    digitalWrite(led7, LOW);
    delay(i);
    digitalWrite(led8, HIGH);
    delay(i);
    digitalWrite(led8, LOW);
    delay(i);
}



После загрузки кода в плату Ардуино и ее перезагрузки на LED индикаторе начнут загораться и гаснуть светодиоды сегментов индикатора. Первый сегмент у нас подключен к выводу 2 Ардуино, второй к 3, и так далее.
Записываем на рисунке номер напротив каждого сегмента.
Теперь мы знаем, что если изменим состояние выхода digitalWrite(led2, HIGH); на высокое (HIGH) то у нас загорится сегмент с номером 2.

Вот такой рисунок нужно создать и что в итоге мы должны получить:

схема соответствия.jpg
Подключение семисегментного LED индикатора к Ардуино



Аватар пользователя
 
Сообщений: 690
Зарегистрирован: 27 мар 2013, 23:12

Re: Урок 6. Подключение семисегментного LED индикатора к Ард

Сообщение -=dp=- » 09 мар 2018, 18:00

Теперь будем объединять сегменты в цифры:

цифре 1 будет соответствовать:

digitalWrite(led8, HIGH);
digitalWrite(led2, HIGH);

Ставим задержку для отображения 1 секунду.

int i = 1000;
delay(i);

Затем устанавливаем все выходы контроллера Ардуино в низкий уровень, это необходимо для очистки индикатора.

digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);

Затем отобразим цифру 2 :

digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, HIGH);

Опять ставим задержку, но уже не создаем переменную, так как она у нас уже есть:

delay(i);

И так далее.

Должен получиться вот такой код:

Код: выделить все
//  Урок 6. Подключение семисегментного LED индикатора к Ардуино
const int led2 =  2;
const int led3 =  3;
const int led4 =  4;
const int led5 =  5;
const int led6 =  6;
const int led7 =  7;
const int led8 =  8;

void setup() {
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
}

void loop() {
 int i = 1000;
 // 0 
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 1 
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 2 
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led3, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 3 
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);


// 4 
    digitalWrite(led6, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 5 
    digitalWrite(led7, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);

delay(i);
   
//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 6 
    digitalWrite(led7, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led5, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 7 
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 8 
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);   

// 9 
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);

delay(i);

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

}




Загружаем код в плату Ардуино и после успешной загрузки кода, у нас будут на LED индикаторе отображаться цифры от 0 до 9 с интервалом 1 секунду.




Вернуться в Обучение Ардуино

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0