Arduino Nano + 2.2TFT + SD

Тема в разделе "Arduino & Shields", создана пользователем CheckA, 16 июн 2016.

  1. CheckA

    CheckA Нуб

    Здравствуйте, подключил такой дисплей (http://wiki.amperka.ru/продукты:tft-lcd-240x320) через резисторный делитель, все нормально, прочитал что уровни на sd 5 вольт, так как есть r1, r2, r3 сопротивления на плате, подключил напрямую, но скетч не выполняется, зависает так понял на инициализации sd (удалял строчку в скетче). Подскажите как заставить его работать? Флэшка FAT32 изображение в raw, строчки неудачи инициализации и тд не показывает, просто белый экран после заливки черным. удаляю инициализацию, выводит строчку соответственно об удачной инициализации. пины использую

    SCK 8

    MISO 13

    MOSI 9

    RESET 11

    DC 10

    CSTFT 12

    CSSD 7

    на пинах из вики для SPI на ARDUINO NANO дисплей не хочет работать, пины в библиотеке SdFatConfig.h прописал соответственно

    Установка конфигурации на 2 тоже не решает проблему? эту строку (#define SD_SPI_CONFIGURATION 2)надо я так понял добавить в скетч, а не редактировать в файле библиотеки


    #define SD_SPI_CONFIGURATION 0
    //------------------------------------------------------------------------------
    /**
    * If SD_SPI_CONFIGURATION is defined to be two, these definitions
    * will define the pins used for software SPI.
    *
    * The default definition allows Uno shields to be used on other boards.
    */
    /** Software SPI Master Out Slave In pin */
    uint8_t const SOFT_SPI_MOSI_PIN = 9;
    /** Software SPI Master In Slave Out pin */
    uint8_t const SOFT_SPI_MISO_PIN = 13;
    /** Software SPI Clock pin */
    uint8_t const SOFT_SPI_SCK_PIN = 8;

    Код (C++):

    #include <SPI.h>
    // расширенная библиотека для работы с SD-картой
    #include <SdFat.h>
    #include <SdFatConfig.h>
    // библиотека для работы с дисплеем
    #include <UTFT.h>
    // библиотека для вывода изображений на дисплей с SD-карты
    #include <UTFT_SdRaw.h>

    // пин ChipSelect к которому подключена SD-карта
    #define SD_SPI_CONFIGURATION 2
    #define SD_CHIP_SELECT  7

    // создаём объект работы с SD-картой
    SdFat sd;

    // создаём объект класса UTFT
    // и передаём идентификатор модели дисплея и номера управляющих пинов
    UTFT myGLCD(TFT01_22SP, 9, 8, 12, 11, 10);

    // объявления встроенного шрифта
    extern uint8_t BigFont[];

    // создаём объект для работы и вывода изображений на дисплей
    UTFT_SdRaw myFiles(&myGLCD);

    void setup()
    {
      // инициализируем дисплей с вертикальной ориентацией
      myGLCD.InitLCD();
      // очищаем экран
      myGLCD.clrScr();
      // выбираем большой шрифт
      myGLCD.setFont(BigFont);

      // ждём успешной инициализации SD-карты
      while (!sd.begin(SD_CHIP_SELECT)) {
        // устанавливаем красный цвет «чернил» для печати и рисования
        myGLCD.setColor(VGA_RED);
        // печатаем строку в указанной строке позиции
        myGLCD.print("SD Card failed!", CENTER, 100);
        delay(1000);
      }

      // устанавливаем зелёный цвет «чернил» для печати и рисования
      myGLCD.setColor(VGA_GREEN);
      // печатаем строку в указанной строке позиции
      myGLCD.print("SD Card initialised", CENTER, 100);
      // ждём 1 секунду
      delay(1000);

      // выводим изображение с SD-карты на дисплей
      myFiles.load(0, 0, 320, 240, "Arduino.raw");
    }

    void loop()
    {
    }
     
  2. CheckA

    CheckA Нуб

    все исправился, надо было менять в библиотеке значение, теперь останавливается на SD card initialised изображение не выводит, менял карты памяти пока безрезультатно
     
    Последнее редактирование: 16 июн 2016
  3. ИгорьК

    ИгорьК Гуру

    А в какой файловой системе они отформатированы? Надо - FAT16. Проверьте.
     
  4. CheckA

    CheckA Нуб

    пробовал fat fat32 и rufus'ом
     
  5. ИгорьК

    ИгорьК Гуру

    FAT16
     
  6. CheckA

    CheckA Нуб

    Не помогло((( изображение беру в примере, в итоге скетч такой

    Код (C++):

    #include <SPI.h>
    // расширенная библиотека для работы с SD-картой
    #include <SdFat.h>
    #include <SdFatConfig.h>
    // библиотека для работы с дисплеем
    #include <UTFT.h>
    // библиотека для вывода изображений на дисплей с SD-карты
    #include <UTFT_SdRaw.h>

    // пин ChipSelect к которому подключена SD-карта
    #define SD_CHIP_SELECT  7

    // создаём объект работы с SD-картой
    SdFat sd;

    // создаём объект класса UTFT
    // и передаём идентификатор модели дисплея и номера управляющих пинов
    UTFT myGLCD(TFT01_22SP, 9, 8, 12, 11, 10);

    // объявления встроенного шрифта
    extern uint8_t BigFont[];

    // создаём объект для работы и вывода изображений на дисплей
    UTFT_SdRaw myFiles(&myGLCD);

    void setup()
    {
      // инициализируем дисплей с вертикальной ориентацией
      myGLCD.InitLCD();
      // очищаем экран
      myGLCD.clrScr();
      // выбираем большой шрифт
      myGLCD.setFont(BigFont);

      // ждём успешной инициализации SD-карты
      while (!sd.begin(SD_CHIP_SELECT)) {
        // устанавливаем красный цвет «чернил» для печати и рисования
        myGLCD.setColor(VGA_RED);
        // печатаем строку в указанной строке позиции
        myGLCD.print("SD Card failed!", CENTER, 100);
        delay(1000);
      }

      // устанавливаем зелёный цвет «чернил» для печати и рисования
      myGLCD.setColor(VGA_GREEN);
      // печатаем строку в указанной строке позиции
      myGLCD.print("SD Card initialised", CENTER, 100);
      // ждём 1 секунду
      delay(1000);

      // выводим изображение с SD-карты на дисплей
      myFiles.load(0, 0, 240, 240, "1.raw", 1, 1);
    }

    void loop()
    {
    }
     
  7. CheckA

    CheckA Нуб

    SdInfo дает
    SdFormatter пишет тоже самое
    SdFat version: 20150324

    Disabling SPI device on pin 12

    Assuming the SD chip select pin is: 7
    Edit SD_CHIP_SELECT to change the SD chip select pin.

    type any character to start

    cardBegin failed
    SD errorCode: 0X8
    SD errorData: 0X2

    type any character to start

    cardBegin failed
    SD errorCode: 0X8
    SD errorData: 0X4
     
    Последнее редактирование: 17 июн 2016
  8. ZAZ-965

    ZAZ-965 Гуру

    CheckA, карточка SD какого объема? Библиотека стабильнее работает с картами SD std 1-2Gb
     
    Последнее редактирование: 17 июн 2016
  9. CheckA

    CheckA Нуб

    Карта старая maxflash 133xSD 2Gb, пробовал с зеркалки, там скоростная, тотже результат
     
  10. CheckA

    CheckA Нуб

    попробовал microsd через переходник опять таже песня... кто работал с картой на таком дисплее?
     
  11. aleksis-76

    aleksis-76 Нерд

    если вы увидели myGLCD.print("SD Card initialised", CENTER, 100); значит карта все таки инициализировалась(sd.begin вернула истину).
     
  12. CheckA

    CheckA Нуб

    Да, если запустить без карты показывает что ошибка, подключаешь карту пишет все ок, но изображение на дисплей не выводит, пробовал сам делать raw, из примера загружать, переименовывать, кроме изображения на карте ничего нет, если инициализировалась, то на подключение spi можно не грешить? Тогда становиться все еще запутанней))) может есть что в конфигурациях библиотеке, почему sdinfo тоже выдает ошибки?
     
  13. aleksis-76

    aleksis-76 Нерд

    вроде как сначала надо открыть файл
    if (!SD.begin(10)) {

    Serial.println("initialization failed!");

    return;

    }

    Serial.println("initialization done.");

    // открываем файл для считывания данных:

    myFile = SD.open("test.txt");

    if (myFile) {

    Serial.println("test.txt:");

    // считываем все данные из файла:

    while (myFile.available()) {

    Serial.write(myFile.read());

    }

    // закрываем файл:

    myFile.close();

    } else {

    // если файл не открылся, отображаем сообщение об ошибке:

    Serial.println("error opening test.txt");

    }

    }
     
  14. aleksis-76

    aleksis-76 Нерд

    да что то я погорячился вышеприведенного делать не надо оно есть в библиотеке,а дисплей то инициализируется.кстати а что возвращает SD.open("ваш файл");
     
  15. CheckA

    CheckA Нуб

    в монитор ничего не выводит, или я не то что-то делаю, какое значение sd.open возвращает?
    Serial.begin(9600);
    File dataFile = SD.open("1.raw", FILE_READ);
    Serial.println(dataFile);

    dataFile.close();
    а вот, это выдало 0.
    кстати когда переместил часть с выводом изображения в loop он чтото начал выводить(очень много малениких картинок которых требовалось, но должна была быть одна большая) и потом опять белый экран, после первого раза ничего не выводит
     
  16. CheckA

    CheckA Нуб

    кто - нибудь работал с таким дисплеем? может на sd тоже 3.3 логика?
     
  17. aleksis-76

    aleksis-76 Нерд

  18. CheckA

    CheckA Нуб

    Дак я сверху писал про это. седня соберу согласователь на платке, то уже в проводах запутаешься, все навесу
     
  19. CheckA

    CheckA Нуб

    переделал на делитель 1к8 и 3к3 (все контакты и дисплея и карты) вообще неадекватно ведет себя, с картой (в любом форматировании) сразу белый экран, без карты "ошибка инициализации". фотки не лезут в аттач http://rgho.st/7DvTtzZqr
     
    Последнее редактирование: 20 июн 2016
  20. aleksis-76

    aleksis-76 Нерд

    интересно,без инициализации карты дисплей нормально работает?а сколько свободной оперативки остается после компиляции?у вас по моему экран не инициализировался