Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Как передать в процедуру имя массива данных

Пт май 03, 2024 16:06:46

Вопрос к гуру. Как синтаксически правильно оформить в отдельную процедуру - передачу произвольного имени блока данных ( картинки), ну и код этой работы ессно. Вот пример картинки и работающий код вывода именно этой картинки. А мне нужно, чтоб принимало любое имя. Как-то мне не даются пойнтеры...)))
Код (C++):
Код:
const uint8_t clock_B[] PROGMEM = {0x3c, 0x52, 0x91, 0x91, 0x8f, 0x81, 0x42, 0x3c};
//----------
void max7219_showBitmap( ???? ) {     // Тут надо что-то вписать.

    for (uint8_t x = 0; x <= 7; x++)  {
    uint8_t datas = pgm_read_byte(&clock_B[x]);
    max7219_word(x+1, datas, num);
    }
}
//----------
void setup ()  {

      max7219_showBitmap( конкретное имя картинки);      // Команда вывода произвольной картинки


С уважением.
ПС. О блин. А я и забыл что в Радиокоте тоже есть фишки типа "кода" как в Амперке.
Последний раз редактировалось Ariadna-on-Line Пт май 03, 2024 16:45:46, всего редактировалось 2 раз(а).

Re: Как передать в процедуру имя массива данных

Пт май 03, 2024 16:17:08

А ты можешь (хи-хи хихи), хотя бы код нормально вставить, или совсем дебил? Давай посмеёмся вместе.)))

Re: Как передать в процедуру имя массива данных

Пт май 03, 2024 16:49:10

Если нечего ответить - шли бы мимо.

Re: Как передать в процедуру имя массива данных

Пт май 03, 2024 17:16:41

Код:
void max7219_showBitmap(unsigned char * Ukazatel_na_dannie) {....


неплохо бы ещё передать размер данных. но может и не надо, это зависит от того, что требует алгоритм, нам неизвестный

Добавлено after 7 minutes 1 second:
забавно, в коде уже есть решение: pgm_read_byte(&clock_B[x]);
так что да, смешно.
И ещё: в Си нет процедур, есть функции только. Это очень большое различие, не синонимы, нельзя путать.

Re: Как передать в процедуру имя массива данных

Пт май 03, 2024 19:54:39

Не совсем понял. Вы имеете в виду что код функции должен быть таким -
Код:
void max7219_showBitmap(unsigned char *frame, uint8_t num) {

    for (uint8_t x = 0; x <= 7; x++)  {
    uint8_t datas = pgm_read_byte(&frame[x]);
    max7219_word(x+1, datas, num);
  }
}
А вызов функции -
Код:
    max7219_showBitmap(*clock_B, num);
Результат - на экран выводятся картинки, но из другого массива. Уже ближе )))))))

Re: Как передать в процедуру имя массива данных

Сб май 04, 2024 08:43:26

Все оказалось -проще чем казалось. Вот картинки -
Код:
Код (C++):
const uint8_t clock_B[] PROGMEM = {0x3c, 0x52, 0x91, 0x91, 0x8f, 0x81, 0x42, 0x3c};
const uint8_t smile_B[] PROGMEM = {0x00, 0x66, 0x66, 0x00, 0x00, 0x81, 0x42, 0x3c};

Вот функция вывода картинки
Код:
Код (C++):
//----------
void max7219_showBitmap(uint8_t *frame, uint8_t num) {

    for (uint8_t x = 0; x <= 7; x++)  {
    uint8_t datas = pgm_read_byte(&frame[x]);
    max7219_word(x+1, datas, num);
  }
}
//----------

Вот вызовы функции с передачей имен картинок
Код:
Код (C++):
    max7219_showBitmap(clock_B, num);
    delay(4000);
    max7219_showBitmap(smile_B, num);
    delay(4000);

Тема исчерпана.
Ответить