Страница 1 из 1

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

Добавлено: Пт май 03, 2024 16:06:46
Ariadna-on-Line
Вопрос к гуру. Как синтаксически правильно оформить в отдельную процедуру - передачу произвольного имени блока данных ( картинки), ну и код этой работы ессно. Вот пример картинки и работающий код вывода именно этой картинки. А мне нужно, чтоб принимало любое имя. Как-то мне не даются пойнтеры...)))
Код (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( конкретное имя картинки);      // Команда вывода произвольной картинки

С уважением.
ПС. О блин. А я и забыл что в Радиокоте тоже есть фишки типа "кода" как в Амперке.

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

Добавлено: Пт май 03, 2024 16:17:08
OKF
А ты можешь (хи-хи хихи), хотя бы код нормально вставить, или совсем дебил? Давай посмеёмся вместе.)))

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

Добавлено: Пт май 03, 2024 16:49:10
Ariadna-on-Line
Если нечего ответить - шли бы мимо.

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

Добавлено: Пт май 03, 2024 17:16:41
Martian

Код: Выделить всё

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
Ariadna-on-Line
Не совсем понял. Вы имеете в виду что код функции должен быть таким -

Код: Выделить всё

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
Ariadna-on-Line
Все оказалось -проще чем казалось. Вот картинки -

Код: Выделить всё

Код (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);

Тема исчерпана.