Міністерство освіти і науки України
Національний університет “Львівська політехніка”
/
ЛАБОРАТОРНА РОБОТА № 5
з дисципліни:
"Сенсори та інтерфейси систем управління"
Львів – 2018
Лабораторна робота №5
Тема: Управління роботою семи сегментного індикатора.
Мета: Навчитись писати скетчі Arduino для управління роботою семи сегментного індикатора.
Теоретична частина:
Семисегментний індикатор, як зрозуміло з його назви, складається з семи елементів індикації (сегментів), що включаються і виключаються окремо. Включаючи їх в різних комбінаціях, з них можна скласти спрощені зображення арабських цифр. Часто семисегментний індикатори роблять в курсивному зображенні, що підвищує читаність.
Сегменти позначаються буквами від A до G; восьмий сегмент - десяткова кома, призначена для відображення дрібних чисел.
Зрідка на семисегментний індикаторі відображають літери.
Світлодіодні індикатори мають гранично просту форму, так як в них застосовуються світлодіоди, відлиті у формі сегментів, і чим менше різних типів світлодіодів, тим дешевше пристрій.
При виборі індикатора варто враховувати, що індикатори можуть бути із загальним катодом або із загальним анодом. По суті - це просто полярність. А ось при підключенні, менше проблем якщо загальний все-таки катод.
Якщо загальний - катод, то його зазвичай чіпляють на землю, і можна регулювати яскравість кожного сегмента окремо, змінюючи струм на кожному окремому аноді. А якщо загальний - анод, то на нього подають напругу, і доводиться включати сегменти, інвертуючи подачу сигналу на катоди. Так, сегмент буде включений, якщо на ніжках не подається сигнал.
Загалом, цим можна і знехтувати, підключаючи до Ардуіно. Зазвичай яскравість окремого сегмента зовсім не суттєва.
Хід роботи:
Розташуємо всі необхідні компоненти:
/
Додаємо код виконання:
import muvium.compatibility.arduino.*;
public class LED_Button extends Arduino{
int segA = 2;
int segB = 3;
int segC = 4;
int segD = 5;
int segE = 6;
int segF = 7;
int segG = 8;
int DP = 9;
public void setup(){
// Your setup code goes here
for (int pin = 2; pin <= 9; pin++)
pinMode(pin, OUTPUT);
}
public void loop(){
for (int digit = 0; digit <= 9; digit++) {
writeDigit(digit);
delay(1000);
}
}
void writeDigit(int digit)
{
switch(digit)
{
case 0:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
break;
case 1:
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 2:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 3:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 4:
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 5:
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 6:
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 7:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 8:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 9:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
}
}
}
Переглянемо результати:
/
/
Висновки: На даній лабораторній роботі я навчилася писати скетчі Arduino для управління роботою семи сегментного індикатора.