1. Tải lên GIF hoặc Tìm kiếm
- Nhấn nút "Chọn tệp" để tải lên file GIF từ máy tính.
- Hoặc sử dụng ô tìm kiếm Giphy để chọn GIF online.
- Bật tùy chọn "Hiển thị xem trước" để xem kết quả trước khi chuyển đổi.
2. Điều chỉnh cài đặt output
- Đặt kích thước hiển thị (Rộng x Cao) phù hợp với màn hình OLED/LCD của bạn.
- Chọn chế độ quét điểm ảnh (Horizontal/Vertical/Horizontal với bytes).
3. Tùy chỉnh hình ảnh
- Điều chỉnh ngưỡng (Threshold) để chuyển ảnh màu sang đen trắng.
- Chọn tỉ lệ (Scale) để ảnh vừa với kích thước hiển thị mong muốn.
- Bật/tắt đảo ngược màu (Âm bản) nếu cần.
- Lật hoặc xoay ảnh nếu cần thiết.
4. Định dạng code
- Đặt tên biến cho mảng dữ liệu (ví dụ: `myAnimation`).
- Chọn định dạng output phù hợp (Arduino, C/C++, ESP8266/ESP32).
5. Chuyển đổi và sử dụng
- Nhấn "Chuyển đổi GIF" để tạo mã C/C++.
- Sao chép mã và dán vào project của bạn.
- Sử dụng hàm ví dụ (hoặc tương tự) để hiển thị GIF:
// Cấu trúc dữ liệu (ví dụ)
typedef struct {
const uint8_t * const *frames; // Mảng con trỏ tới các khung hình
const uint16_t *delays; // Mảng thời gian delay cho mỗi khung (ms)
uint16_t width; // Chiều rộng ảnh (pixels)
uint16_t height; // Chiều cao ảnh (pixels)
uint8_t frame_count; // Tổng số khung hình
} AnimatedGIF;
// Hàm hiển thị ví dụ (cần thư viện màn hình phù hợp, ví dụ Adafruit_SSD1306)
// void displayGIF(const AnimatedGIF* gif, Adafruit_SSD1306& display) {
// for (uint8_t f = 0; f < gif->frame_count; f++) {
// display.clearDisplay();
// // Vẽ khung hình hiện tại lên buffer của màn hình
// // Cách vẽ phụ thuộc vào định dạng ('horizontal', 'vertical', 'horizontal_bytes')
// // Ví dụ cho 'horizontal':
// int bytesPerRow = (gif->width + 7) / 8;
// for (int y = 0; y < gif->height; y++) {
// for (int x = 0; x < gif->width; x++) {
// int byteIndex = y * bytesPerRow + (x / 8);
// int bitIndex = 7 - (x % 8); // MSB first
// if (pgm_read_byte(&gif->frames[f][byteIndex]) & (1 << bitIndex)) {
// display.drawPixel(x, y, SSD1306_WHITE); // Hoặc màu phù hợp
// }
// }
// }
// display.display(); // Gửi buffer lên màn hình
// delay(pgm_read_word(&gif->delays[f])); // Delay giữa các khung
// }
// }
// Cách gọi:
// extern const AnimatedGIF myGif; // Khai báo biến từ file .h
// displayGIF(&myGif, display); // Gọi hàm hiển thị