Daftar Isi:

Cara Menambahkan Tampilan E-Ink ke Proyek Anda: 12 Langkah (dengan Gambar)
Cara Menambahkan Tampilan E-Ink ke Proyek Anda: 12 Langkah (dengan Gambar)

Video: Cara Menambahkan Tampilan E-Ink ke Proyek Anda: 12 Langkah (dengan Gambar)

Video: Cara Menambahkan Tampilan E-Ink ke Proyek Anda: 12 Langkah (dengan Gambar)
Video: Cara Menambahkan Gambar atau Foto ke Slide Microsoft Powerpoint | Tutorial Powerpoint 2024, Juli
Anonim
Cara Menambahkan Tampilan E-Ink ke Proyek Anda
Cara Menambahkan Tampilan E-Ink ke Proyek Anda
Cara Menambahkan Tampilan E-Ink ke Proyek Anda
Cara Menambahkan Tampilan E-Ink ke Proyek Anda

Banyak proyek melibatkan pemantauan beberapa jenis data, seperti data lingkungan, sering kali menggunakan Arduino untuk kontrol. Dalam kasus saya, saya ingin memantau kadar garam dalam pelembut air saya. Anda mungkin ingin mengakses data melalui jaringan rumah Anda, tetapi Anda juga mungkin ingin menampilkannya di tempat yang diukur. Atau Anda dapat memiliki layar yang selalu terhubung dari jarak jauh di lokasi yang lebih nyaman.

Saat ini ada beberapa jenis tampilan yang bisa Anda gunakan, semuanya cukup murah, namun memiliki kelebihan dan kekurangan yang berbeda-beda:

  • Layar LCD alfanumerik adalah yang termurah tetapi juga paling terbatas.
  • Layar OLED dapat menampilkan grafik tetapi yang murah sangat kecil. Foto kedua menunjukkan layar OLED 128x64 piksel di sebelah layar E-Ink.
  • Tampilan E-Ink (atau E-Paper) agak lebih besar dan karenanya lebih mudah dibaca, dan memiliki keuntungan bahwa tampilan tetap dipertahankan meskipun dimatikan! Tapi butuh beberapa detik untuk menggambar ulang tampilan.

Tampilan E-Ink tampak ideal untuk aplikasi saya karena saya dapat memprogram Arduino untuk bangun hanya setiap beberapa jam, membaca dan menampilkannya sebelum kembali tidur. Maka tidak ada konsekuensi bahwa dibutuhkan beberapa detik untuk menggambar ulang tampilan.

Dalam aplikasi seperti itu, konsumsi arus rata-rata dapat diatur sedemikian rendah sehingga baterai detektor asap lithium 9V dapat dibuat untuk bertahan selama 10 tahun! Terlebih lagi, beberapa tampilan ini akan menampilkan tiga warna: putih, hitam, dan merah (atau kuning). Ideal jika Anda ingin menampilkan peringatan atau peringatan dengan warna merah.

Perlengkapan

Tampilan E-Ink termurah yang saya temukan dijual oleh BuyDisplay, juga tersedia dari banyak penjual eBay. Sayangnya dokumentasi meninggalkan banyak hal yang diinginkan jadi saya mengambil sendiri untuk menulis tutorial - baca terus!

Tergantung pada kebutuhan dan anggaran Anda, Anda memiliki pilihan berbagai ukuran:

  • 1,54" (152x152 = 23, 104 piksel)
  • 2,13" (212x104 = 22, 048 piksel)
  • 2,6" (296x152 = 44.992 piksel)
  • 2,7" (176x264 = 46.464 piksel)
  • 2,9" (296x128 = 37, 888 piksel)
  • 4.2" (400x300 = 120.000 piksel)
  • 5,83"(640x480 = 307,200 piksel)
  • 7,5" (880x528 = 464.640 piksel)

(Rentang telah diperluas sejak terakhir kali saya melihat, jadi mungkin telah berkembang lebih jauh pada saat Anda membaca ini.)

Tersedia dalam 2 warna (hitam/putih) atau 3 warna (hitam/merah/putih atau hitam/kuning/putih). Instruksi ini mengasumsikan Anda menggunakan yang merah, tetapi jika Anda telah memilih versi kuning, cukup baca "kuning" untuk "merah".

Pilih versi SPI (4-kawat). Saya menggunakan model 1,54 , yang merupakan ukuran yang sangat bagus.

Langkah 1: Menghubungkan Tampilan Anda

Menghubungkan Tampilan Anda
Menghubungkan Tampilan Anda

Tampilan ini dilengkapi dengan header pin 2x4. Nomor pin diberi label dengan jelas, pin 7, 5, 3 dan 1 (dari kiri ke kanan) di sepanjang baris atas dan 8, 6, 4, 2 di sepanjang bagian bawah.

Layar Anda mungkin dilengkapi dengan kabel patch 8 arah, yang memudahkan koneksi. (Kabel patch saya memiliki 2 kabel merah dan 2 kabel coklat. Mereka tidak dapat dipertukarkan!

Tabel berikut memberikan koneksi, yang berlaku untuk sebagian besar jenis Arduino (termasuk Uno, Pro Mini, Pro Micro, dan Nano).

Modul tinta elektronik Arduino
Pin Nama Pin Nama
1 VDD Vcc 3.3/5V
2 VSS Gnd Gnd
3 Data Serial Masuk 11 MOSI
4 Jam Serial Dalam 13 SCK
5 /Pilihan Chip 10
6 Data/Instr 9
7 Mengatur ulang 8
8 Perangkat Sibuk 7

Langkah 2: Unduh Perangkat Lunak yang Disediakan

Anda dapat menggunakan perangkat lunak yang disediakan seperti yang dijelaskan dalam langkah ini, atau Anda dapat menggunakan perpustakaan saya yang disempurnakan di langkah berikutnya kecuali satu.

Temukan perangkat Anda di BuyDisplay.com. Di bagian bawah halaman, Anda akan menemukan file ZIP unduhan "Perpustakaan Arduino dan Contoh untuk SPI 4-kawat". Klik ini untuk mengunduh dan membuka di Windows Explorer.

Windows Explorer akan menunjukkan ini sebagai berisi satu folder tingkat atas "Libraries-Examples_ER-EPM0154-1R". (Namanya akan sedikit berbeda jika milik Anda bukan model 1,54".)

Salin folder tingkat atas ini ke folder perpustakaan Arduino Anda. Klik kanan untuk mengganti nama folder, dan hapus "Libraries-Examples_" dari namanya.

(Untuk menemukan folder perpustakaan Arduino Anda, di Arduino IDE, klik File… Preferences, dan catat Lokasi Sketchbook. Buka ini, dan Anda akan menemukan folder "libraries" Arduino di antara folder sketsa Anda.)

Buka folder ini dan buka folder "Libraries" di dalamnya. Seret dan jatuhkan semua file dalam folder ini ke folder induk satu tingkat ke atas ("ER-EPM0154-1R"). Hapus folder "Perpustakaan" (sekarang kosong).

Anda sekarang telah menginstal file dan sketsa contoh sebagai perpustakaan Arduino. Perhatikan bahwa jika tampilan Anda bukan yang 1,54 , satu-satunya perbedaan tampaknya adalah dua baris dalam ER-ERM*-1.h yang menentukan WIDTH dan HEIGHT.

Di Arduino IDE, klik File… Exampes dan gulir ke bawah ke ER-EPM0154-1R untuk sketsa demo, yang seharusnya dapat Anda kompilasi dan jalankan segera setelah Anda menghubungkan layar ke Arduino Anda.

Langkah 3: Menjalankan Demo

Menjalankan Demo
Menjalankan Demo
Menjalankan Demo
Menjalankan Demo

Di Arduino IDE, klik File… Contoh… ER-EPM0154-1R.

Hubungkan Arduino Anda ke komputer Anda dengan kabel USB, atau seperti yang biasa Anda lakukan.

Di bawah Alat, atur Board, Processor, dan Port.

Di bawah Sketsa, klik Unggah.

Akan ada sedikit penundaan setelah pengunggahan selesai, dan sepuluh penundaan akan berkedip beberapa kali saat melukis gambar pertama. Tonton saat melewati demo.

Langkah 4: Menggunakan Perpustakaan yang Disempurnakan

Anda dapat mengunduh perpustakaan saya yang disempurnakan dari github di

N. B. Saya sangat yakin bahwa perpustakaan saya akan bekerja dengan layar yang kompatibel dengan ukuran apa pun, tetapi saya sebenarnya hanya mengujinya dengan model 1,54 . Jika Anda menggunakan yang berbeda, beri tahu saya di komentar di akhir dari Instruksi ini, untuk mengonfirmasi bahwa itu berhasil. Tetapi jika tidak, saya akan melakukan yang terbaik untuk membuat Anda maju.

Unduh dan simpan file zip. Di Arduino IDE, klik Sketsa… Sertakan Perpustakaan… Tambahkan Perpustakaan. ZIP dan pilih file zip yang disimpan.

Pustaka saya berisi beberapa peningkatan kecil:

  • Ini memungkinkan nomor pin Arduino yang berbeda untuk digunakan (kecuali untuk MOSI).
  • Pustaka yang sama dapat digunakan untuk perangkat ukuran apa pun.
  • Isi berbayang 50% baru, dan isian berbintik (set piksel acak) disediakan.

Pustaka hadir sebagai file terkompresi (zip) Arduino standar. Unduh ke folder Unduhan Anda (atau di tempat yang Anda inginkan), dan di Arduino IDE, klik Sketsa… Sertakan Perpustakaan… Tambahkan Perpustakaan ZIP.

Di bawah Contoh, Anda sekarang akan menemukan E-ink_ER-EPM. Ada 3 contoh sketsa:

  • ER_EPM154-1R-Test: Demonstrasi asli yang disediakan vendor
  • E-ink_demo: Sketsa dikembangkan di langkah selanjutnya
  • E-ink_rotate: Demonstrasi rotasi gambar.

Langkah 5: Memprogramnya Sendiri

Sayangnya tidak ada dokumentasi dengan kode yang disediakan vendor, juga tidak ada contoh kode yang dikomentari secara memadai. Ini membuatnya lebih sulit daripada yang seharusnya digunakan, dan tujuan utama dari Instructable ini adalah untuk memperbaikinya.

Konsep dasar

Karena Arduino terbatas dalam jumlah RAM yang tersedia, perpustakaan memungkinkan Anda untuk menggambar atau menulis di bagian kecil layar sekaligus, mengunggahnya satu per satu ke memori internal perangkat. Hanya setelah Anda mengunggah semua bagian yang Anda butuhkan, Anda memintanya untuk menampilkan apa yang ada di memori.

Bagian layar ini dikenal sebagai objek "Cat". Anda hanya memerlukan satu, dan untuk setiap bagian layar Anda menentukan tinggi, lebar, dan rotasinya. Setelah selesai, Anda mengunggahnya, menentukan posisi di layar untuk memuatnya dan apakah harus hitam putih atau merah putih.

Sudut kiri atas layar memiliki koordinat horizontal (x) dan vertikal (y) (0, 0), kiri bawah (0, 151) dan kanan atas (151, 0).

inisialisasi

Buka sketsa E-ink_demo di Arduino IDE dan ikuti seperti yang saya jelaskan cara menggunakan perpustakaan.

Di bagian atas sketsa Anda akan melihat baris berikut, yang selalu dibutuhkan:

#include <SPI.h #include "ER-ERM0154-1.h" #include "imagedata.h" #include "epdpaint.h" #define COLORED 0 #define UNCOLORED 1 Epd epd;

Garis #include menarik pustaka yang diperlukan. SPI.h adalah perpustakaan Arduino standar tetapi yang lain merupakan bagian dari perpustakaan e-ink.

Kami mendefinisikan nama untuk piksel UNCOLORED (putih) dan COLORED (hitam atau merah). (Catatan untuk rekan-rekan Eropa saya: ejaan Amerika COLOR digunakan.)

Epdnya; line menciptakan objek perangkat kertas elektronik, yang akan kita tampilkan. Ini harus ada di sini di awal sketsa agar tersedia untuk fungsi setup() dan loop().

Jika Anda memiliki tampilan ukuran yang berbeda, Anda dapat mengganti garis EPD dengan:

Epd epd(LEBAR, TINGGI);

(setelah sebelumnya mendefinisikan WIDTH dan HEIGHT dalam pernyataan #define.)

Dengan cara yang sama Anda dapat menentukan nomor pin non-default dengan:

Epd epd(LEBAR, TINGGI, BUSY_PIN, RESET_PIN, DC_PIN, CS_PIN);

Dalam setup() kita perlu menginisialisasi perangkat sebagai berikut:

Serial.begin(9600)

if (epd. Init() != 0) { Serial.print("Init e-Paper gagal"); kembali; }

(Faktanya, epd. Init() tidak pernah mengembalikan kesalahan, tetapi peningkatan di masa mendatang mungkin mendeteksi tidak adanya tampilan, atau tampilan yang tidak berfungsi.)

Langkah 6: Menulis Teks

Menulis Teks
Menulis Teks

Di E-ink_demo, alihkan perhatian Anda ke loop(). Pertama, mari kita bersihkan tampilannya:

epd. ClearFrame()

(Ini sebenarnya tidak diperlukan jika Anda akan menampilkan gambar Anda sendiri.)

Sebelum kita dapat menggambar apa pun (baik teks atau grafik), kita perlu membuat objek Paint untuk menggambar:

gambar karakter yang tidak ditandatangani[1024]

Cat cat(gambar, 152, 18); //lebar harus kelipatan 8

Ini mencadangkan beberapa ruang (1024 byte) dan mengalokasikannya ke objek Paint, yang dibatasi oleh baris kedua. Ini dikonfigurasi untuk sementara sebagai lebar 152 piksel dan kedalaman 18 piksel. Kita dapat mengonfigurasi ulang nanti untuk digunakan kembali jika diperlukan, tetapi perhatikan: lebarnya harus kelipatan 8 karena 8 piksel disimpan per byte dan kita tidak dapat membagi byte. (Ini sebenarnya akan membulatkannya jika perlu, tetapi kemudian dapat membingungkan ketika tampilan Anda tidak terlihat sebagaimana mestinya.

Sekarang kita harus mengosongkan objek paint menjadi UNCOLORED (putih), lalu pada posisi (x,y) = (22, 2) kita tulis "e-ink Demo" menggunakan font tinggi 16 piksel, dan COLORED (untuk menunjukkan Latar belakang TIDAK BERWARNA.

cat. Jelas (TIDAK BERWARNA)

paint. DrawStringAt(12, 2, "Demo e-paper", &Font16, COLORED);

Perhatikan bahwa koordinat (22, 2) adalah sudut kiri atas dari karakter pertama dari string, dan 22 piksel ke dalam dan 2 piksel ke bawah relatif terhadap sudut kiri atas objek cat, bukan seluruh tampilan. Teks terlihat paling baik setidaknya satu piksel dari atas objek cat.

Font berikut tersedia:

Font8 - 5x8 pikselFont12 - 7x12 pikselFont16 - 11x16 pikselFont20 - 14x20 pikselFont24 - 17x24 piksel

Kami sekarang hanya perlu mengirim objek cat ("cat") ke perangkat ("epd"):

epd. SetPartialWindowBlack(paint. GetImage(), 0, 3, paint. GetWidth(), paint. GetHeight());

SetPartialWindowBlack adalah metode yang kami terapkan pada objek epd, menggunakan gambar dan properti lebar dan kedalamannya dari objek cat. Kami menyuruhnya untuk menulis gambar ini ke perangkat di (x, y) = (0, 3). Dan kami mengatakan piksel WARNA harus hitam.

Itu tidak terlalu sulit, bukan? Mari kita coba yang lain.

cat. Jelas(BERWARNA);

paint. DrawStringAt(20, 2, "(Putih pada warna)", &Font12, UNCOLORED); epd. SetPartialWindowRed(paint. GetImage(), 0, 24, paint. GetWidth(), paint. GetHeight());

Kami menggunakan kembali objek cat yang sama, dan lebar dan tinggi yang sama, tapi kali ini, mari kita hapus ke COLORED dan tulis string UNCOLORED padanya. Dan untuk perubahan, kami akan membuat piksel WARNA merah dan menulisnya ke perangkat di (0, 24), tepat di bawah yang pertama.

Kami telah menulis dua objek cat ke memori perangkat tetapi belum menyuruhnya untuk menampilkannya. Kami melakukan ini dengan pernyataan berikut:

epd. DisplayFrame();

(Dalam sketsa E-ink_demo kami benar-benar meninggalkan ini sampai akhir, setelah menggambar beberapa hal lagi, tetapi Anda dapat memasukkannya di sini jika Anda suka, mybe diikuti oleh delay(10000); untuk memberi Anda waktu untuk mengagumi hasil karya Anda.

Langkah 7: Menggambar Garis dan Persegi Panjang

Menggambar Garis dan Persegi Panjang
Menggambar Garis dan Persegi Panjang

Mari kita lihat cara menggambar garis dan persegi panjang. Kita akan menggunakan objek cat yang sama, tetapi kita perlu mengkonfigurasi ulang sebagai lebar 40 piksel dan tinggi 36 piksel. Kami akan menghapusnya ke UNCOLORED.

cat. SetWidth(40);

cat. SetHeight(36); cat. Jelas (TIDAK ADA WARNA);

Kita akan menggambar persegi panjang (BERWARNA) dengan sudut kiri atas (5, 3) dan kanan bawah (35, 33), relatif terhadap objek cat, seperti biasa. Kami juga akan menggambar diagonalnya sebagai garis dari (5, 3) ke (35, 33) dan dari (35, 3) ke (5, 33). Terakhir, kita akan menulis seluruh objek cat (merah) ke layar di (32, 42).

//BARIS TERATAS:

// Cat persegi panjang. Hapus(TIDAK WARNA); paint. DrawRectangle(5, 3, 35, 33, COLORED;) paint. DrawLine(5, 3, 35, 33, COLORED); cat. DrawLine(35, 3, 5, 33, WARNA); epd. SetPartialWindowRed(paint. GetImage(), 32, 42, paint. GetWidth(), paint. GetHeight());

Perpustakaan, seperti yang datang, juga menyediakan persegi panjang yang diisi, tapi hei, saya ingin yang teduh, jadi saya menambahkan metode baru. Kami akan membuat dua persegi panjang lagi, satu berbayang dan satu terisi, dan menempatkannya di sebelah kanan yang pertama, bergantian hitam dan merah.

// Cat Persegi Panjang Berbayang. Hapus(TIDAK WARNA); cat. DrawShadedRectangle(5, 3, 35, 33); epd. SetPartialWindowBlack(paint. GetImage(), 72, 42, paint. GetWidth(), paint. GetHeight()); // Cat Rectangle yang terisi. Clear(UNCOLORED); cat. DrawFilledRectangle(5, 3, 35, 33, COLORED); epd. SetPartialWindowRed(paint. GetImage(), 112, 42, paint. GetWidth(), paint. GetHeight());

Langkah 8: Menggambar Lingkaran

Menggambar Lingkaran
Menggambar Lingkaran

Lingkaran sama mudahnya untuk digambar. Alih-alih koordinat dua sudut, kita harus memberikan koordinat pusat, dan jari-jarinya. Kami akan menghapus objek cat kemudian menempatkan lingkaran pada (20, 15) (relatif terhadap objek cat) dan radius 15. Dan ulangi untuk lingkaran yang diarsir dan diisi.

//BARIS KEDUA

// Lingkari cat. Hapus(TIDAK WARNA); cat. DrawCircle(20, 18, 15, WARNA); epd. SetPartialWindowBlack(paint. GetImage(), 32, 78, paint. GetWidth(), paint. GetHeight()); // Cat Lingkaran Berbayang. Hapus(TIDAK WARNA); cat. DrawShadedCircle(20, 18, 15); epd. SetPartialWindowRed(paint. GetImage(), 72, 78, paint. GetWidth(), paint. GetHeight()); //cat lingkaran yang terisi. Hapus(TIDAK WARNA); cat. DrawFilledCircle(20, 18, 15, COLORED); epd. SetPartialWindowBlack(paint. GetImage(), 112, 78, paint. GetWidth(), paint. GetHeight());

Langkah 9: UNCOLORED pada Bckground COLORED

UNCOLORED pada Bckground COLORED
UNCOLORED pada Bckground COLORED

Kami mulai terkenal di sini! Jadi saat kita sedang berguling, mari buat 3 lingkaran lagi pada baris di bawah ini, kali ini UNCOLORED pada objek cat COLORED, seperti yang kita lakukan dengan teks baris kedua.

//baris KETIGA

// Lingkari cat. Hapus(COLORED); cat. DrawCircle(20, 18, 15, UNCOLORED); epd. SetPartialWindowRed(paint. GetImage(), 32, 114, paint. GetWidth(), paint. GetHeight()); // Shaded Circle paint. Clear(COLORED) paint. DrawShadedCircle(20, 18, 15); epd. SetPartialWindowBlack(paint. GetImage(), 72, 114, paint. GetWidth(), paint. GetHeight()); //Mengisi cat lingkaran. Hapus(COLORED); cat. DrawFilledCircle(20, 18, 15, UNCOLORED); epd. SetPartialWindowRed(paint. GetImage(), 112, 114, paint. GetWidth(), paint. GetHeight());

Selain isian berbayang, ada juga isian berbintik, yang mewarnai piksel acak. Jadi alih-alih lingkaran yang diarsir di atas, kita bisa menempatkan

cat. DrawSpeckledCircle(20, 18, 15, 25);

Parameter terakhir (25) adalah kerapatan, yaitu persentase piksel yang akan diwarnai. Jika dihilangkan, 50% diasumsikan.

Ada juga DrawSpeckledRectangle, dengan parameter tambahan opsional yang menentukan kepadatan.

Langkah 10: Rotasi

Rotasi
Rotasi
Rotasi
Rotasi

Apa pun yang bisa kita gambar, kita bisa memutar hingga 90, 180 atau 270 derajat. (Kami menghitung rotasi searah jarum jam.)

Kita dapat menerapkan properti ROTATE ke objek paint, tetapi penting untuk dipahami bahwa bukan objek paint yang diputar tetapi semua yang Anda tulis padanya. Jadi jika Anda menginginkan teks vertikal, Anda perlu mengonfigurasi objek cat Anda sepanjang dan tipis dalam arah vertikal, bukan horizontal.

Jadi jika Anda ingin teks Anda diputar 90 derajat searah jarum jam sehingga terbaca dari atas ke bawah (bukan kiri ke kanan), sudut kanan atas objek cat akan menjadi (0, 0) untuk keperluan apa pun yang Anda tulis atau menggambar di dalamnya, dengan x diukur dari sudut itu ke bawah, dan y dari sudut itu ke kiri.

Anda mungkin memperhatikan bahwa kami meninggalkan ruang di sisi kiri layar. Jadi mari kita menulis beberapa teks di sana diputar 270 derajat, yaitu membaca dari bawah ke atas. Ini akan menempatkan (0, 0) di sudut kiri bawah.

Perhatikan bahwa bagaimanapun Anda memutar objek cat, rotasi hanya berlaku saat Anda menggambar piksel ke atasnya. Ketika Anda datang untuk menulisnya ke perangkat itu masih koordinat sudut kiri atas yang harus Anda berikan ke SetPartialWindow.

Jadi untuk rekap, mari konfigurasikan objek paint kita agar memiliki lebar 32 dan tinggi 110, dan kita akan memberinya properti ROTATE_270. Bukan berarti kita harus melakukan semua ini sebelum menulis atau menggambar sesuatu padanya.

cat. SetWidth(32);

cat. SetHeight(110); cat. SetRotate(ROTATE_270);

Kami akan menghapusnya ke COLORED dan menulis string UNCOLORED padanya, lalu menempatkannya di (0, 42). (Itu sudut kiri atas, ingat. Lupakan rotasi piksel di dalamnya.)

cat. Jelas(BERWARNA); paint. DrawStringAt(8, 8, "Sideways!", &Font16, UNCOLORED); epd. SetPartialWindowBlack(paint. GetImage(), 0, 42, paint. GetWidth(), paint. GetHeight());

Terakhir, kita perlu memberi tahu perangkat untuk menampilkan semua piksel yang telah kita berikan. Dan jika kita tidak ingin mengubahnya untuk sementara waktu dan ingin menghemat daya baterai, kita dapat menidurkannya, dan mengapa tidak menidurkan Arduino juga, untuk dibangunkan saat waktunya mengambil dan menampilkan yang lain. pengukuran.

epd. DisplayFrame();

epd. Tidur();

Contoh sketsa kedua menunjukkan rotasi melalui 90, 180 dan 270 derajat. Sekarang Anda harus bisa mengikutinya sendiri.

Langkah 11: Menggambar Bitmap

Menggambar Bitmap
Menggambar Bitmap

Demo vendor mencakup tampilan beberapa gambar bitmap. Ini mudah dibuat menggunakan alat yang dapat diunduh dari

www.buydisplay.com/image2lcd

Itu datang sebagai file zip yang berisi file instalasi.exe dan file teks yang berisi kunci lisensi. Perluas kemudian klik dua kali pada file.exe untuk menginstalnya.

Jelas, ada batasan yang cukup ketat pada apa yang dapat Anda tampilkan karena piksel E-ink hanya dapat hidup atau mati sehingga tidak dapat mewakili tingkat abu-abu. Tetapi dimungkinkan untuk melapisi objek cat persegi panjang ke dalam gambar. Anda mungkin ingin menampilkan logo, simbol, atau teks tetap dalam font mewah, di mana Anda dapat melapisi teks atau grafik variabel seperti diagram batang atau pai, mungkin menunjukkan sesuatu seperti level cairan.

Anda dapat membuat gambar Anda dengan perangkat lunak menggambar apa pun yang Anda kenal, atau Anda dapat memindai dalam sketsa atau gambar, tetapi dalam kedua kasus tersebut Anda harus dapat menguranginya menjadi hanya 2 level. Simpan sebagai.gif,-j.webp

Luncurkan Image2Lcd. Di sepanjang bagian bawah, Anda akan melihat tab Daftar. Klik ini dan masukkan kode registrasi yang datang dalam file teks dalam file zip yang Anda unduh. Ini akan menghapus overlay pada gambar.

Di Image2Lcd, buka file gambar Anda. Di panel sebelah kiri, pastikan Anda memiliki

  • Jenis file keluaran: C array
  • Mode pemindaian: Pemindaian Horizontal
  • BitsPixel: Monokrom
  • Lebar dan Tinggi Maks: ukuran layar Anda, dan
  • Sertakan data kepala harus dicentang.

Klik tombol di sebelah Max Width and Height untuk memproses. Hasil pemrosesan akan ditampilkan. Anda mungkin harus menyesuaikan penggeser Kecerahan dan Kontras untuk mendapatkan hasil terbaik.

Klik kotak centang Warna terbalik di atas penggeser Kecerahan, menjadikannya gambar negatif, yang karena alasan tertentu diperlukan, lalu klik Simpan untuk menyimpannya sebagai imagedata.cpp di folder yang berisi sketsa Arduino Anda. Lain kali Anda membuka sketsa dengan Arduino IDE, Anda akan melihatnya sebagai tab baru.

Langkah 12: Menampilkan Bitmap Anda

Menampilkan Bitmap Anda
Menampilkan Bitmap Anda

Di file utama sketsa Arduino Anda, segera ikuti #include baris di atas, masukkan:

#sertakan "imagedata.h"

Buat tab baru (klik panah bawah di akhir baris tab) dan beri nama imagedata.h. Masukkan 2 baris berikut di dalamnya:

extern const unsigned char IMAGE_BLACK;

extern const unsigned char IMAGE_RED;

Dalam file imagedata.cpp Anda, baris pertama akan dimulai dengan

const unsigned char gImage_image[2888] = {

(Angka dalam tanda kurung siku akan berbeda jika Anda tidak menggunakan layar 1,54”.) Ganti dengan

const unsigned char IMAGE_BLACK PROGMEM = {

Ini untuk gambar hitam putih. Jika Anda ingin merah putih, ubah menjadi

const unsigned char IMAGE_RED PROGMEM = {

Tepat sebelum baris ini, tambahkan

#termasuk

#sertakan "imagedata.h"

Anda sekarang siap untuk menampilkan gambar Anda. Di loop() di file utama Anda, tambahkan

epd. ClearFrame();

epd. DisplayFrame(IMAGE_BLACK, NULL);

Atau, jika itu adalah gambar merah yang Anda buat, baris kedua seharusnya

epd. DisplayFrame(NULL, IMAGE_RED);

Bahkan Anda dapat membuat gambar merah dan hitam gabungan dengan mengonversi bagian merah dan hitam secara terpisah dengan Image2Lcd, dan menampilkan keduanya dengan

epd. DisplayFrame(IMAGE_BLACK, IMAGE_RED);

Namun, piksel apa pun yang ditetapkan sebagai hitam pada gambar hitam putih, dan merah pada gambar merah putih, akan menjadi merah.

Terakhir, Anda dapat melapisi gambar Anda dengan salah satu fungsi teks atau grafik yang telah kita pelajari sebelumnya. Saya ingin menambahkan pegangan Twitter saya, jadi saya menambahkan

Cat cat(gambar, 20, 152); //lebar harus kelipatan 8

cat. SetRotate(ROTATE_270); cat. Jelas (TIDAK ADA WARNA); paint. DrawStringAt(20, 2, "@pleriche", &Font16, COLORED); epd. SetPartialWindowRed(paint. GetImage(), 0, 0, paint. GetWidth(), paint. GetHeight()); epd. SetPartialWindowRed(paint. GetImage(), 0, 0, paint. GetWidth(), paint. GetHeight()); epd. DisplayFrame();

Direkomendasikan: