Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

АРДУИНЩИКИ ПОМОГИТЕ НОВИЧКУ((

я очень хочу изучить работу SD карт на ардуино уно, а конкретнее прочитать бинарный набор данных для картинки с файла .txt ( олед дисплей 128х64 черно-белый ) и вывести саму картинку на дисплей. навалял кода и даже нейросеть не смогла помочь. вот мой код ( можете предложить свой вариант )

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int chipSelect = 10;
void setup() {
  Serial.begin(9600);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  if (!SD.begin(chipSelect)) {
    Serial.println("SD card initialization failed!");
    while (1);
  }

  File myFile = SD.open("myfile.txt", FILE_READ);
  char fileContent = "";
  if (myFile) {
    Serial.println("myfile.txt:");
    // Читаем файл, пока есть доступные данные
    while (myFile.available()) {
      fileContent += (char)myFile.read(); // Читаем и выводим один байт
    }
    myFile.close();
    static const unsigned char image_data[] = {fileContent};
    display.clearDisplay();
    display.setTextSize(1);  // Увеличиваем размер текста
    display.setTextColor(WHITE);
    display.setCursor(0,0); 
    display.println("mini pc");
    display.setCursor(0,10);
    display.println("by Kirill velikiy");
    // Draw the bitmap
    display.drawBitmap(0, 0, image_data, SCREEN_WIDTH, SCREEN_HEIGHT, SSD1306_WHITE); // Используем SCREEN_WIDTH и SCREEN_HEIGHT

    // Display the image
    display.display();
    Serial.print(fileContent);
  } else {
    Serial.println("error opening myfile.txt");
  }
  
}

void loop() {}

и еще пример того что написано в текстовом файле
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

... и дофига такого же

По дате
По рейтингу
Аватар пользователя
Просветленный
3нед

23 и 28 строчки.

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

Аватар пользователя
Знаток
3нед

Нихера ты умный. Научи а? Хоть чему-то. А то я нихера не понял из того что ты написал.