Menu
CoddyTech

Pola Digit dalam Byte

Termasuk bagian Layar dan Sensor dalam perjalanan Arduino di Coddy. Pelajaran 2 dari 24.

Tujuh baris digitalWrite() untuk setiap digit berarti banyak kode. Simpan setiap digit sebagai pola: satu bit untuk satu segmen, 1 berarti menyala dan 0 berarti mati.

byte adalah bilangan bulat dari 0 sampai 255 yang terdiri dari delapan bit. Tulis dalam biner dengan 0b di depannya. Baca bit dari kanan: bit terakhir adalah segmen a, bit sebelumnya b, dan seterusnya sampai g.

//           gfedcba
byte one = 0b0000110;  // b dan c: a 1

Sepuluh pola muat dalam sebuah array, jadi digits[3] adalah pola untuk angka 3. bitRead(), dari penghitung biner, membaca satu bit darinya, mulai dari kanan dan menghitung dari 0:

bitRead(0b0000110, 0)  // 0: segmen a mati
bitRead(0b0000110, 1)  // 1: segmen b menyala

Sebuah fungsi dapat menelusuri tujuh bit dengan for loop dan mengatur setiap pin segmen, sehingga menggambar digit apa pun cukup dengan satu pemanggilan: showDigit(7);

challenge icon

Tantangan

Sedang

Kode awal memiliki semua pola kecuali 4 dan 7, dan loop() menampilkan 1, 4, dan 7.

  • lengkapi 4 (segmen b, c, f, g) dan 7 (a, b, c)
  • tulis showDigit(n): untuk setiap i dari 0 hingga 6, atur segmentPins[i] menjadi LOW saat bit i dari digits[n] bernilai 1, dan HIGH saat nilainya 0

Tekan Jalankan, lalu Periksa.

Coba sendiri

const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8};  // a, b, c, d, e, f, g

// Satu pola untuk setiap digit, baca dari kanan: bit terakhir adalah segmen a.
//                     gfedcba
const byte digits[10] = {
  0b0111111,  // 0
  0b0000110,  // 1
  0b1011011,  // 2
  0b1001111,  // 3
  0b0000000,  // 4: isi
  0b1101101,  // 5
  0b1111101,  // 6
  0b0000000,  // 7: isi
  0b1111111,  // 8
  0b1101111   // 9
};

void showDigit(int n) {
  // Nyalakan segmen digits[n], matikan segmen lainnya
}

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);
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Layar dan Sensor

Latihan sendiri: Playground Arduino