Baytlardaki Rakam Desenleri
Coddy'nin Arduino Journey'sinin Ekranlar ve Sensörler bölümünün bir parçası. Ders 2 / 24.
Her rakam için yedi digitalWrite() satırı oldukça fazla kod demek. Her rakamı bir desen olarak sakla: her bit bir segmenti temsil eder; 1 yanık, 0 sönük demektir.
byte, sekiz bitten oluşan ve 0 ile 255 arasında bir tam sayıdır. Önüne 0b koyarak ikili biçimde yaz. Bitleri sağdan oku: son bit a segmentidir, ondan önceki b segmentidir ve bu şekilde g segmentine kadar devam eder.
// gfedcba
byte one = 0b0000110; // b ve c: birer 1On desen bir diziye sığar; böylece digits[3], 3'ün desenidir. İkili sayaçtan gelen bitRead(), sağdan başlayıp 0'dan sayarak bir bitini okur:
bitRead(0b0000110, 0) // 0: segment a sönük
bitRead(0b0000110, 1) // 1: segment b yanıyorBir fonksiyon, yedi biti for döngüsüyle dolaşıp her segment pinini ayarlayabilir; böylece herhangi bir rakamı çizmek için tek bir çağrı yeterlidir: showDigit(7);
Görev
OrtaBaşlangıç kodunda 4 ve 7 dışındaki tüm desenler var ve loop() 1, 4 ve 7'yi gösteriyor.
- 4'ü (segmentler
b,c,f,g) ve 7'yi (a,b,c) tamamla showDigit(n)fonksiyonunu yaz: 0'dan 6'ya kadar heriiçin,digits[n]içindekiibiti 1 olduğundasegmentPins[i]değeriniLOW, 0 olduğundaHIGHyap
Run'a, ardından Check'e bas.
Kendin dene
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // a, b, c, d, e, f, g
// Her rakam için bir desen; sağdan sola okuyun: en sağdaki bit, a segmentidir.
// gfedcba
const byte digits[10] = {
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b0000000, // 4: doldurun
0b1101101, // 5
0b1111101, // 6
0b0000000, // 7: doldurun
0b1111111, // 8
0b1101111 // 9
};
void showDigit(int n) {
// digits[n] için segmentleri yakın, diğerlerini söndürün
}
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
showDigit(1);
delay(1000);
showDigit(4);
delay(1000);
showDigit(7);
delay(1000);
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Ekranlar ve Sensörler bölümündeki tüm dersler
1Yedi Segmentli Göstergeler
Yedi Segmentli GöstergeBaytlardaki Rakam DesenleriGöstergede SaymaSıfıra Geri SayımZar AtıcıKendi başına pratik yap: Arduino playground