Bu yazımızda Arduino ile 7 segment gösterge kullanacağız. 7 segment display projelerde sıklıkla kullanılmaktadır. Genellikle rakam göstermek için kullanılır. RGB LED’lerde olduğu gibi ortak anot ve ortak katot olmak üzere iki tip 7 segment gösterge mevcuttur. Ortak anotta LED’lerin (4) ucu ortak iken ortak katotta (-) uçları ortaktır. İki tip için de LED’ler direnç ile arduino dijital pinlerine bağlanır. Ortak anot için dijital “0” ilgili LED’i yakarken ortak katot için dijital “1” LED’i yakmaktadır. Aşağıdaki resimde daha net anlaşılabilir:
7 segment gösterge kullandığımız Arduino – Hafıza Oyunu projemize buradan ulaşabilirsiniz.
MALZEME LİSTESİ
- 1 x Arduino (Yazımızda UNO Kullandık)
- 1 x 7 Segment Gösterge (Yazımızda ortak katot kullandık)
- 7 x 330Ω Direnç (7 segment için)
Devre Şeması
Devremizi kurduktan sonra kodlara geçebiliriz.
Arduino Uno Kodları
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
#define a 2 //7 segment LED Display'in a çubuğu #define b 3 //7 segment LED Display'in b çubuğu #define c 4 //7 segment LED Display'in c çubuğu #define d 5 //7 segment LED Display'in d çubuğu #define e 6 //7 segment LED Display'in e çubuğu #define f 7 //7 segment LED Display'in f çubuğu #define g 8 //7 segment LED Display'in g çubuğu void setup() { for (int i = 2; i < 9 ; i++) //LED bağlı olan pinler for döngüsü içerisinde çıkış olarak ayarlanır { pinMode(i, OUTPUT); } } void loop() { for(int i = 0; i<10 ; i++) //7 segment LED'e sırasıyla rakamlar yazılır { seven_segment(i); //Yazma fonksiyonu delay(500); //Delay } } //7 segment display yazma fonksiyonu void seven_segment(uint8_t rakam) { switch (rakam) {//Her rakam için switch-case yapısı case 0: //0 rakamı için durum digitalWrite(a, 1); digitalWrite(b, 1); digitalWrite(c, 1); digitalWrite(d, 1); digitalWrite(e, 1); digitalWrite(f, 1); digitalWrite(g, 0); break; case 1: //1 rakamı için durum digitalWrite(a, 0); digitalWrite(b, 1); digitalWrite(c, 1); digitalWrite(d, 0); digitalWrite(e, 0); digitalWrite(f, 0); digitalWrite(g, 0); break; case 2: //2 rakamı için durum digitalWrite(a, 1); digitalWrite(b, 1); digitalWrite(c, 0); digitalWrite(d, 1); digitalWrite(e, 1); digitalWrite(f, 0); digitalWrite(g, 1); break; case 3: //3 rakamı için durum digitalWrite(a, 1); digitalWrite(b, 1); digitalWrite(c, 1); digitalWrite(d, 1); digitalWrite(e, 0); digitalWrite(f, 0); digitalWrite(g, 1); break; case 4: //4 rakamı için durum digitalWrite(a, 0); digitalWrite(b, 1); digitalWrite(c, 1); digitalWrite(d, 0); digitalWrite(e, 0); digitalWrite(f, 1); digitalWrite(g, 1); break; case 5: //5 rakamı için durum digitalWrite(a, 1); digitalWrite(b, 0); digitalWrite(c, 1); digitalWrite(d, 1); digitalWrite(e, 0); digitalWrite(f, 1); digitalWrite(g, 1); break; case 6: //6 rakamı için durum digitalWrite(a, 1); digitalWrite(b, 0); digitalWrite(c, 1); digitalWrite(d, 1); digitalWrite(e, 1); digitalWrite(f, 1); digitalWrite(g, 1); break; case 7: //7 rakamı için durum digitalWrite(a, 1); digitalWrite(b, 1); digitalWrite(c, 1); digitalWrite(d, 0); digitalWrite(e, 0); digitalWrite(f, 0); digitalWrite(g, 0); break; case 8: //8 rakamı için durum digitalWrite(a, 1); digitalWrite(b, 1); digitalWrite(c, 1); digitalWrite(d, 1); digitalWrite(e, 1); digitalWrite(f, 1); digitalWrite(g, 1); break; case 9: //9 rakamı için durum digitalWrite(a, 1); digitalWrite(b, 1); digitalWrite(c, 1); digitalWrite(d, 1); digitalWrite(e, 0); digitalWrite(f, 1); digitalWrite(g, 1); break; } } |
Kod içerisinde 7 segment göstergeyi kullanabilmek için “seven_segment()” fonksiyonu yazılmıştır. Fonksiyon içerisinde her rakam için harflere göre LED’lerin durumları girilmiştir. Durumları ayrıca aşağıdaki resimde de görebilirsiniz:
Siz de Arduino projelerinizde 7 segment göstergeyi rahatlıkla kullanabilirsiniz. Sorunuz olursa yorumlarda belirtebilirsiniz. İyi Eğlenceler!!