Загрузка данных


#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#define OLED_CS     10
#define OLED_DC     9
#define OLED_RESET  8

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &SPI, OLED_DC, OLED_RESET, OLED_CS);

const char* coinFrames[8][8] = {
  { "       .-@@@-.       ", "     .:#@@@@@#:.     ", "    .:@@@@@@@@@:.    ", "    :@@@#@@@#@@@:    ", "    :@@@#@@@#@@@:    ", "    .:@@@@@@@@@:.    ", "     .:#@@@@@#:.     ", "       .-@@@-.       " },
  { "        .-@@-.       ", "      .:##@@##:.     ", "     .:@@@@@@@@:.    ", "     :@@@#@@#@@@:    ", "     :@@@#@@#@@@:    ", "     .:@@@@@@@@:.    ", "      .:##@@##:.     ", "        .-@@-.       " },
  { "         .-@-.       ", "       .:#@@@#:.     ", "      .:@@@@@@@:.    ", "      :@@@#@@@#:     ", "      :@@@#@@@#:     ", "      .:@@@@@@@:.    ", "       .:#@@@#:.     ", "         .-@-.       " },
  { "          .-.        ", "        .:@@@@:.     ", "        :@@@@@:      ", "        :@@#@@:      ", "        :@@#@@:      ", "        :@@@@@:      ", "        .:@@@@:.     ", "          .-.        " },
  { "           .         ", "          :@:        ", "          :#:        ", "          :#:        ", "          :#:        ", "          :#:        ", "          :@:        ", "           .         " },
  { "          .-.        ", "        .:@@@@:.     ", "        :@@@@@:      ", "        :@@#@@:      ", "        :@@#@@:      ", "        :@@@@@:      ", "        .:@@@@:.     ", "          .-.        " },
  { "         .-@-.       ", "       .:#@@@#:.     ", "      .:@@@@@@@:.    ", "      :@@@#@@@#:     ", "      :@@@#@@@#:     ", "      .:@@@@@@@:.    ", "       .:#@@@#:.     ", "         .-@-.       " },
  { "        .-@@-.       ", "      .:##@@##:.     ", "     .:@@@@@@@@:.    ", "     :@@@#@@#@@@:    ", "     :@@@#@@#@@@:    ", "     .:@@@@@@@@:.    ", "      .:##@@##:.     ", "        .-@@-.       " }
};

const int numFrames = 8;
int currentFrame = 0;
unsigned long lastUpdate = 0;
const int frameDelay = 80;

void setup() {
  Serial.begin(115200);
  
  // Инициализация экрана
  if(!display.begin(SSD1306_SWITCHCAPVCC)) {
    Serial.println(F("ОШИБКА: Экран не найден! Проверь провода."));
    for(;;); // Зависаем, если экран не подключен
  }
  
  Serial.println(F("Экран успешно запущен. Начинаем анимацию."));
  
  display.clearDisplay();
  display.setTextSize(1);      
  display.setTextColor(SSD1306_WHITE);
  display.setTextWrap(false);
}

void loop() {
  if (millis() - lastUpdate > frameDelay) {
    lastUpdate = millis();
    
    // Выводим в монитор порта номер кадра (для проверки)
    Serial.print("Рисуем кадр: ");
    Serial.println(currentFrame);
    
    display.clearDisplay();
    
    for (int i = 0; i < 8; i++) {
      display.setCursor(0, i * 8);
      display.print(coinFrames[currentFrame][i]);
    }
    
    display.display();
    
    currentFrame++;
    if (currentFrame >= numFrames) {
      currentFrame = 0;
    }
  }
  
  // Небольшая пауза, чтобы плата не зависала
  delay(10); 
}