במהלך הסדרה עברתי על המון רכיבים שניתן לחבר ל Arduino ושכחתי מתצוגת ה 7 Segment הותיקה שנתקלתי בה כלכך הרבה פעמים בעבר שזה יהיה עוול לא לכתוב עליה משהו בקצרה, היא מאוד פרימיטיבית אבל שימושית בפרוייקטים שצריכים תצוגה מינימלית, היא זולה, פשוטה ואמינה, ניתן לרכוש אותה ב DX בשקלים בודדים.
דרישות
- (Arduino (any kind will do the job
- 7 Segments
- Ohm Resistor 330
- Breadboard
- Wires
צורת העבודה מאוד בזבזנית ונאלץ להיפרד מ 8 חיבורים דיגיטליים ב Arduino על מנת שנוכל להשתמש בה כהלכה, כל רגל מייצגת Segment בודד וניתן לשלוט עליו בנפרד, על מנת לצמצם את כמות הרגליים מומלץ להשתמש ב Shift Register.
הרגל ה 8 היא עבור הנקודה שלא חלק מה Segments |
קוד
//array of numbers, each number contain
//array of the 7 segment pins status,
//0 for low , 1 for high
byte numbers[12][8] ={
{1,0,0,0,0,1,0,0},//0
{1,0,1,1,1,1,1,0},//1
{1,1,0,0,1,0,0,0},//2
{1,0,0,1,1,0,0,0},//3
{1,0,1,1,0,0,1,0},//4
{1,0,0,1,0,0,0,1},//5
{1,0,0,0,0,0,0,1},//6
{1,0,1,1,1,1,0,0},//7
{1,0,0,0,0,0,0,0},//8
{1,0,0,1,0,0,0,0}, //9
{0,1,1,1,1,1,1,1} ,//.
{1,1,1,1,1,1,1,1} //clear
} ;
//set pins as outputs
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
}
//change the segments by number
void draw(byte num)
{
//starting pin
byte pin = 2;
for(byte seg = 0; seg < 8; ++seg)
{
//write the segment status
digitalWrite(pin,numbers[num][seg]);
//go to the next pin
++pin;
}
}
void loop() {
int counter = 0;
while(counter < 11)
{
delay(500);
draw(counter);
counter = counter + 1;
}
draw(10);
delay(500);
draw(11);
delay(100);
draw(10);
delay(500);
while(counter >= -1)
{
delay(500);
draw(counter);
counter = counter - 1;
}
draw(10);
delay(500);
draw(11);
delay(100);
draw(10);
delay(500);
}
//array of the 7 segment pins status,
//0 for low , 1 for high
byte numbers[12][8] ={
{1,0,0,0,0,1,0,0},//0
{1,0,1,1,1,1,1,0},//1
{1,1,0,0,1,0,0,0},//2
{1,0,0,1,1,0,0,0},//3
{1,0,1,1,0,0,1,0},//4
{1,0,0,1,0,0,0,1},//5
{1,0,0,0,0,0,0,1},//6
{1,0,1,1,1,1,0,0},//7
{1,0,0,0,0,0,0,0},//8
{1,0,0,1,0,0,0,0}, //9
{0,1,1,1,1,1,1,1} ,//.
{1,1,1,1,1,1,1,1} //clear
} ;
//set pins as outputs
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
}
//change the segments by number
void draw(byte num)
{
//starting pin
byte pin = 2;
for(byte seg = 0; seg < 8; ++seg)
{
//write the segment status
digitalWrite(pin,numbers[num][seg]);
//go to the next pin
++pin;
}
}
void loop() {
int counter = 0;
while(counter < 11)
{
delay(500);
draw(counter);
counter = counter + 1;
}
draw(10);
delay(500);
draw(11);
delay(100);
draw(10);
delay(500);
while(counter >= -1)
{
delay(500);
draw(counter);
counter = counter - 1;
}
draw(10);
delay(500);
draw(11);
delay(100);
draw(10);
delay(500);
}
קיים מערך שמכיל בתוכו 10 מערכים נוספים שבכל אחד מהם יש ערך עבור כל Segment, לצורך הדוגמה המערך {1,0,0,0,0,0,0,0} מייצג את הספירה 8 כי כל ה Segments דולקים למעט ה Segment הנוסף של הנקודה בצד.
מבנה סופי
מספר הולך, מספר בא. |
סרטון הדגמה
סיכום
היו זמנים שהיא היתה נחשבת לפורצת דרך אבל עם הזמן השימוש בה ירד לטובת תצוגות הרבה יותר מתוחכמות (וטוב שכך!) אבל עדיין ניתן למצוא אותה במוצרים שונים ולא נראה שהיא הולכת להעלם בקרוב.
תצוגה בגרוש.
אין תגובות:
הוסף רשומת תגובה