🔢 درس 66: بیت‌ها و عملگرهای بیتی

یک بایت را روی ۸ LED ببین و با &، |، ^ و شیفت بازی کن.

سطح: پیشرفته · زمان: حدود 20 دقیقه · مفاهیم: بیت، بایت، bitRead

قدم‌های این درس

  1. کامپیوتر فقط ۰ و ۱ می‌فهمد
  2. قدم ۱ — هشت LED، هشت بیت
  3. قدم ۲ — bitRead و شیفت
  4. اشتباه رایج: بیت ۸ که وجود ندارد
  5. چالش: شمارنده‌ی دودویی

نمونه‌ای از کد این درس

const int ledPins[8] = {2, 3, 4, 5, 6, 7, 8, 9};  // bit 0 .. bit 7

// show one byte: LED i shows bit i
void showByte(byte value) {
  for (int i = 0; i < 8; i++) {
    digitalWrite(ledPins[i], bitRead(value, i));
  }
}

byte pattern = 1;    // 00000001

void setup() {
  for (int i = 0; i < 8; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  Serial.begin(9600);

  byte a = B11001100;
  byte b = B10101010;
  Serial.print("a & b = "); Serial.println(a & b, BIN);   // 10001000
  Serial.print("a | b = "); Serial.println(a | b, BIN);   // 11101110
  Serial.print("a ^ b = "); Serial.println(a ^ b, BIN);   // 1100110
}

void loop() {
  showByte(pattern);
  Serial.print(pattern);
  Serial.print(" = ");
  Serial.println(pattern, BIN);

  pattern = (pattern << 1) & 0xFF;   // shift left, keep 8 bits
  if (pattern == 0) {
    pattern = 1;                     // fell off the end: start again
  }
  delay(300);
}

چرا این درس؟

دوره‌ی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیه‌ساز انجام می‌دهی — مدار واقعی می‌چینی، کد واقعی اجرا می‌کنی و نتیجه را همان لحظه می‌بینی. این درس روی درس‌های قبلی ساخته شده، پس اگر تازه شروع کرده‌ای از درس ۱ بیا!

این درس را رایگان در شبیه‌ساز شروع کن 🎓

درس‌های دیگر دوره

🌡️

درس 65: ترموستات با هیسترزیس

⏱️

درس 67: کرنومتر دقیق با millis