Матрешка Z, Эксперимент 13. Секундомер. Вопрос по коду.

Тема в разделе "Arduino & Shields", создана пользователем a1112, 1 окт 2016.

  1. a1112

    a1112 Нуб

    Вот кусок кода, который мне не понятен.
    Код (C++):
    byte numberSegments[10] = {
    0b00111111, 0b00001010, 0b01011101, 0b01011110, 0b01101010,
    0b01110110, 0b01110111, 0b00011010, 0b01111111, 0b01111110,
    };
    То что создается массив понятно, объясните как закодированы цифры, например,
    Код (C++):
    0b00011010
    .
    Я правильно понял что тут закодированы пины, а не сегменты?
    В статье на вики https://ru.wikipedia.org/wiki/Двоичный_код цифры в двоичном коде состоят из 4 знаков, а тут 8.
    Разжуйте пожалуйста подробно, что тут и к чему.
     
  2. AlexU

    AlexU Гуру

    Закодированы пины, но со смещением:
    Код (C++):
    0b00011010
    читать справа налево -- первый пин + смещение "выключен", второй пин + смещение - "включен", третий пин + смещение "выключен", четвёртый и пятый пины + смещение - "включены", остальные "выключены".
    Смещение определено макросом:
    Код (C++):
    #define FIRST_SEGMENT_PIN 2
     
    Последнее редактирование: 1 окт 2016
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

    Двоичный код состоит из 0 и 1, и сколько там знаков - не имеет значения. 4 были взяты для простоты понимания.
    1 байт состоит из 8 битов, поэтому число в двоичном коде состоит из восьми элементов 0 или 1 (префикс 0b просто указывает компилятора что это именно двоичное представление числа).
     
  4. a1112

    a1112 Нуб

    AlexU, Спасибо. В конспекте хакера не корректно пояснен код.