Помогите чайнику с drawBitmap

Тема в разделе "Arduino & Shields", создана пользователем Skiminok, 20 май 2019.

  1. Skiminok

    Skiminok Нуб

    Всем привет.
    Помогите пожалуйста разобраться как правильно сделать следующее.

    Код (C++):
    tft.drawBitmap(0, 0, image1, 12, 21 ILI9341_WHITE, ILI9341_BLACK);
    Изображение выводится.
    Но у меня есть другие изображения (image1......9) как мне вывести нужное изображение в зависимости от того что мне пришло с датчика?

    Я пытаюсь сделать следующее.
    Код (C++):

    String val1 = "image";
    String val2 = val1 + razr[0];
    tft.drawBitmap(0, 0, val2, 12, 21, ILI9341_WHITE, ILI9341_BLACK);
     
    Мне выдает ошибку:
    Код (Text):

    no matching function for call to 'Adafruit_ILI9341::drawBitmap(int, int, String&, int, int, int, int)'
     
    Подскажите пожалуйста как сделать правильно???
     
  2. Asper Daffy

    Asper Daffy Гуру

    Правильно - почитать литературу, но ты ж не будешь ...

    Шо за tft у тебя, давай ссылку на библиотеку.
     
  3. Skiminok

    Skiminok Нуб

    Библиотеки Adafruit_GFX и Adafruit_ILI9341.
    Я бы прочитал если-бы сказали что именно искать.
    А не так как обычно вот тебе список энного числа учебников перечитай их все и там найдешь ответ.
     
  4. Вам не нужен ответ, вам нужно знание языка. Так что читать надо целиком. Тип image1 какой?
     
  5. Skiminok

    Skiminok Нуб

    unsigned char
     
  6. b707

    b707 Гуру

    самое простое - для каждого image свой блок if
    Код (C++):
    if (val == 1) { // с датчика пришло 1
    tft.drawBitmap(0, 0, image1, 12, 21 ILI9341_WHITE, ILI9341_BLACK);
    }

    if (val == 2) { // с датчика пришло 2 - выводим image2
    tft.drawBitmap(0, 0, image2, 12, 21 ILI9341_WHITE, ILI9341_BLACK);

    // и так для всех картинок с 1 по 9
    }
    все остальные пути для вас будут сложными.
     
  7. Skiminok

    Skiminok Нуб

    Я сделал через switch.
    Хотел узнать как это можно сделать по другому.
    Не записывая огромный код из switch или if.
     
  8. b707

    b707 Гуру

    положить ссылки на image в массив и выбирать оттуда по индексу
    Код (C++):

    // массив "имаджей"
    unsigned char* images[] = {NULL, image1, image2, image3};

    // выводим нужную картинку по индексу. val - номер нужного имаджа
    tft.drawBitmap(0, 0, images[val], 12, 21 ILI9341_WHITE, ILI9341_BLACK);
     
    Update - поправил тип массива на unsigned char* - это может быть существенно
     
    Последнее редактирование: 20 май 2019
    Skiminok нравится это.
  9. Skiminok

    Skiminok Нуб

    Спасибо огромное за помощь.
     
  10. Asper Daffy

    Asper Daffy Гуру

    Я просил дать ссылку на библиотеку, чтобы мог посмотреть типы параметров. А Вы мне что дали?
    Тебе нужно читать общий учебник типа K&R от начала и до конца. Глянуть что-то конкретное может человек, имеющий базовые знания. У тебя их нет.

    Давай ссылку на библиотеку по которой описана tft если хочешь конкретного ответа.
     
  11. нет