+1 голос
При компилировании программы примера 13 в процедуре void loop() выдается ошибка

- "namberSegments" was not declared in

 "int mask=numberSegments[number];

- 'FIRST_SEGMEN_PIN' was not declared in "digitalWrite(i+FIRST_SEGMENTS_PIN,enableSegment);
(6 баллов) 3

1 Ответ

+2 голосов
 
Лучший ответ

Ошибок нет, все компилируется. В чем-то ошиблись значит.


Вот код.

    #define FIRST_SEGMENT_PIN   2
    #define SEGMENT_COUNT       7
     
    // префикс «0b» означает, что целое число за ним записано в
    // в двоичном коде. Единицами мы обозначим номера сегментов
    // индикатора, которые должны быть включены для отображения
    // арабской цифры. Всего цифр 10, поэтому в массиве 10 чисел.
    // Нам достаточно всего байта (англ. byte, 8 бит) для хранения
    // комбинации сегментов для каждой из цифр.
    byte numberSegments[10] = {
      0b00111111, 0b00001010, 0b01011101, 0b01011110, 0b01101010,
      0b01110110, 0b01110111, 0b00011010, 0b01111111, 0b01111110,
    };
     
    void setup()
    {
      for (int i = 0; i < SEGMENT_COUNT; ++i)
        pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);
    }
     
    void loop()
    {
      // определяем число, которое собираемся отображать. Пусть им
      // будет номер текущей секунды, зацикленный на десятке
      int number = (millis() / 1000) % 10;
      // получаем код, в котором зашифрована арабская цифра
      int mask = numberSegments[number];
      // для каждого из 7 сегментов индикатора...
      for (int i = 0; i < SEGMENT_COUNT; ++i) {
        // ...определяем: должен ли он быть включён. Для этого
        // считываем бит (англ. read bit), соответствующий текущему
        // сегменту «i». Истина — он установлен (1), ложь — нет (0)
        boolean enableSegment = bitRead(mask, i);
        // включаем/выключаем сегмент на основе полученного значения
        digitalWrite(i + FIRST_SEGMENT_PIN, enableSegment);
      }
    }

(1.6 тыс. баллов) 2 9 33
выбран
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. Aromik

    69 балл(ов)

  2. Un_ka

    54 балл(ов)

  3. parovoZZ

    12 балл(ов)

  4. sser

    6 балл(ов)

  5. Тёмик

    5 балл(ов)

  6. NesteruS

    5 балл(ов)

Награды месяца
1-е место: OLED-дисплей (Troyka-модуль)
2-е место: Графический экран 128×64
3-е место: Текстовый дисплей 16×2 (Troyka-модуль)

...