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

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1486
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение 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( конкретное имя картинки);      // Команда вывода произвольной картинки

С уважением.
ПС. О блин. А я и забыл что в Радиокоте тоже есть фишки типа "кода" как в Амперке.
Последний раз редактировалось Ariadna-on-Line Пт май 03, 2024 16:45:46, всего редактировалось 2 раза.
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1430
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

А ты можешь (хи-хи хихи), хотя бы код нормально вставить, или совсем дебил? Давай посмеёмся вместе.)))
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1486
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение Ariadna-on-Line »

Если нечего ответить - шли бы мимо.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

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

void max7219_showBitmap(unsigned char * Ukazatel_na_dannie) {....

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

Добавлено after 7 minutes 1 second:
забавно, в коде уже есть решение: pgm_read_byte(&clock_B[x]);
так что да, смешно.
И ещё: в Си нет процедур, есть функции только. Это очень большое различие, не синонимы, нельзя путать.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1486
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение 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);
Результат - на экран выводятся картинки, но из другого массива. Уже ближе )))))))
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1486
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение 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);

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

Вернуться в «Arduino»