İçindekiler:

Projenize E-Mürekkep Ekran Nasıl Eklenir: 12 Adım (Resimlerle)
Projenize E-Mürekkep Ekran Nasıl Eklenir: 12 Adım (Resimlerle)

Video: Projenize E-Mürekkep Ekran Nasıl Eklenir: 12 Adım (Resimlerle)

Video: Projenize E-Mürekkep Ekran Nasıl Eklenir: 12 Adım (Resimlerle)
Video: laz ve ekibinin hile kullandığının kanıtı 😞#laz 2024, Temmuz
Anonim
Projenize E-Mürekkep Ekranı Nasıl Eklenir
Projenize E-Mürekkep Ekranı Nasıl Eklenir
Projenize E-Mürekkep Ekranı Nasıl Eklenir
Projenize E-Mürekkep Ekranı Nasıl Eklenir

Pek çok proje, çevresel veriler gibi bir tür verinin izlenmesini içerir ve genellikle kontrol için bir Arduino kullanır. Benim durumumda, su yumuşatıcımdaki tuz seviyesini izlemek istedim. Verilere ev ağınız üzerinden erişmek isteyebilirsiniz, ancak aynı şekilde verileri ölçüldüğü yerde görüntülemek de isteyebilirsiniz. Veya daha uygun bir yerde her zaman açık, uzaktan bağlı bir ekrana sahip olabilirsiniz.

Artık kullanabileceğiniz, hepsi oldukça ucuz, ancak farklı avantaj ve dezavantajlara sahip birkaç çeşit ekran var:

  • Alfanümerik LCD ekran en ucuz ama aynı zamanda en sınırlı olanıdır.
  • Bir OLED ekran grafikleri görüntüleyebilir ancak ucuz olanlar çok küçüktür. İkinci fotoğraf, E-Ink'in yanında 128x64 piksel OLED ekranı gösteriyor.
  • Bir E-Mürekkep (veya E-Kağıt) ekranı biraz daha büyüktür ve bu nedenle okunması daha kolaydır ve ekranın kapatıldığında bile korunması avantajına sahiptir! Ancak ekranın yeniden çizilmesi birkaç saniye sürer.

E-Mürekkep ekranı uygulamam için ideal görünüyordu çünkü Arduino'yu sadece birkaç saatte bir uyanacak, bir okuma yapacak ve uyumadan önce gösterecek şekilde programlayabiliyordum. O zaman, ekranı yeniden çizmenin birkaç saniye sürmesinin hiçbir önemi yoktur.

Böyle bir uygulamada ortalama akım tüketimi o kadar düşük olacak şekilde düzenlenebilir ki 9V lityum duman dedektörü pili 10 yıl dayanabilecek hale getirilebilir! Dahası, bu ekranlardan bazıları üç renk gösterecektir: beyaz, siyah ve kırmızı (veya sarı). Kırmızı renkte bir uyarı veya uyarı görüntülemek istiyorsanız idealdir.

Gereçler

Bulduğum en ucuz E-Mürekkep ekranları, birçok eBay satıcısında da bulunan BuyDisplay tarafından satılmaktadır. Ne yazık ki, belgeler arzulanan çok şey bırakıyor, bu yüzden bir eğitim yazmayı kendime görev edindim - okumaya devam edin!

Gereksinimlerinize ve bütçenize bağlı olarak çeşitli boyut seçeneklerine sahipsiniz:

  • 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)

(Aralık, son baktığımdan bu yana genişledi, bu yüzden bunu okuduğunuzda daha da genişlemiş olabilir.)

2 renkli (siyah/beyaz) veya 3 renkli (siyah/kırmızı/beyaz veya siyah/sarı/beyaz) olarak mevcutturlar. Bu Eğitilebilir Tablo, kırmızı olanı kullandığınızı varsayar, ancak sarı sürümü seçtiyseniz, baştan sona "kırmızı" için "sarı" okuyun.

Bir SPI (4 telli) sürümü seçin. 1.54 modelini kullandım, çok güzel bir boyut.

1. Adım: Ekranınızı Bağlama

Ekranınızı Bağlama
Ekranınızı Bağlama

Bu ekranlar 2x4 pin başlığı ile birlikte gelir. Pin numaraları, üst sıra boyunca 7, 5, 3 ve 1 pinleri (soldan sağa) ve alt sıra boyunca 8, 6, 4, 2 olmak üzere açıkça etiketlenmiştir.

Ekranınız, bağlantıyı kolaylaştıran 8 yönlü bir yama kablosuyla gelebilir. (Yama kablomda 2 kırmızı ve 2 kahverengi kablo var. Değiştirilemezler!

Aşağıdaki tablo, çoğu Arduino türü (Uno, Pro Mini, Pro Micro ve Nano dahil) için geçerli olan bağlantıları vermektedir.

E-mürekkep Modülü Arduino
Toplu iğne İsim Toplu iğne İsim
1 VDD Vcc 3.3/5V
2 VSS Gnd Gnd
3 Seri Veri Girişi 11 MOSI
4 Seri Saat Girişi 13 SCK
5 /Çip Seçimi 10
6 Veri/Instr 9
7 Sıfırla 8
8 Cihaz Meşgul 7

2. Adım: Sağlanan Yazılımı İndirin

Sağlanan yazılımı bu adımda açıklandığı gibi kullanabilir veya bir sonraki adımda geliştirilmiş kitaplığımı kullanabilirsiniz.

Cihazınızı BuyDisplay.com'da bulun. Sayfanın alt kısmına doğru "Arduino Kütüphanesi ve 4 kablolu SPI için Örnek" indirilen bir ZIP dosyası bulacaksınız. İndirmek ve Windows Gezgini'nde açmak için buna tıklayın.

Windows Gezgini bunu tek bir üst düzey klasör "Libraries-Examples_ER-EPM0154-1R" içeriyormuş gibi gösterecektir. (Sizinki 1.54" model değilse, ad biraz farklı olacaktır.)

Bu üst düzey klasörü Arduino kitaplıkları klasörünüze kopyalayın. Klasörü yeniden adlandırmak için sağ tıklayın ve addan "Libraries-Examples_" öğesini silin.

(Arduino kitaplıkları klasörünüzü bulmak için, Arduino IDE'de Dosya… Tercihler'e tıklayın ve Sketchbook Konumunu not edin. Buna gidin ve çizim klasörleriniz arasında Arduino "kütüphaneleri" klasörünü bulacaksınız.)

Bu klasörü açın ve içindeki "Kütüphaneler" klasörünü açın. Bu klasördeki tüm dosyaları bir üst klasöre ("ER-EPM0154-1R") sürükleyip bırakın. (Artık boş) "Kütüphaneler" klasörünü silin.

Artık dosyaları ve örnek bir çizimi Arduino kütüphanesi olarak yüklediniz. Ekranınız 1.54 değilse, tek fark ER-ERM*-1.h'de GENİŞLİK ve YÜKSEKLİK tanımlayan iki satır gibi görünüyor.

Arduino IDE'de Dosya… Exampes'e tıklayın ve ekranınızı Arduino'nuza bağladığınız anda derleyip çalıştırabilmeniz gereken demo taslağı için ER-EPM0154-1R'ye gidin.

Adım 3: Demoyu Çalıştırma

Demoyu Çalıştırma
Demoyu Çalıştırma
Demoyu Çalıştırmak
Demoyu Çalıştırmak

Arduino IDE'de Dosya… Örnekler… ER-EPM0154-1R'ye tıklayın.

Arduino'nuzu bir USB kablosuyla veya normalde yaptığınız şekilde bilgisayarınıza bağlayın.

Araçlar altında, Anakart, İşlemci ve Bağlantı Noktasını ayarlayın.

Sketch altında, Yükle'ye tıklayın.

Yükleme tamamlandıktan sonra hafif bir gecikme olacak ve ilk resmi boyarken gecikme birkaç kez yanıp sönecektir. Demodan geçerken izleyin.

4. Adım: Gelişmiş Kitaplığı Kullanma

Gelişmiş kitaplığımı https://github.com/p-leriche/E-ink_ER-EPM adresinden github'dan indirebilirsiniz.

not Kitaplığımın herhangi bir boyutta uyumlu ekranla çalışacağına yüksek derecede güvenim var, ancak aslında yalnızca 1.54 modeliyle test ettim. Farklı bir model kullanıyorsanız, lütfen sondaki yorumlarda bana bildirin. Çalıştığını doğrulamak için bu Eğitilebilir Yazının.

Zip dosyasını indirin ve kaydedin. Arduino IDE'de Sketch… Include Library… Add. ZIP Library'ye tıklayın ve kaydedilen zip dosyasını seçin.

Kitaplığım birkaç küçük geliştirme içeriyor:

  • Farklı Arduino pin numaralarının kullanılmasına izin verir (MOSI hariç).
  • Aynı kitaplık her boyuttaki cihaz için kullanılabilir.
  • Yeni %50 gölgeli dolgu ve benekli dolgu (rastgele piksel kümesi) sağlanır.

Kütüphane standart bir Arduino sıkıştırılmış (zip) dosyası olarak gelir. İndirilenler klasörünüze (veya tercih ettiğiniz yere) indirin ve Arduino IDE'de Sketch… Include Library … Add ZIP Library'ye tıklayın.

Örnekler altında, şimdi E-ink_ER-EPM'yi bulacaksınız. 3 örnek skeç vardır:

  • ER_EPM154-1R-Test: Satıcı tarafından sağlanan orijinal tanıtım
  • E-ink_demo: Sonraki adımlarda geliştirilen taslak
  • E-ink_rotate: Görüntü döndürmenin bir gösterimi.

Adım 5: Kendiniz Programlayın

Ne yazık ki, satıcı tarafından sağlanan kodla ilgili hiçbir belge yoktur ve örnek kod yeterince yorumlanmamıştır. Bu, kullanılması gerekenden daha zor hale getirir ve bu Eğitilebilir Yazının asıl amacı bunu doğru yapmaktır.

Temel konseptler

Bir Arduino'nun kullanılabilir RAM miktarı sınırlı olduğundan, kitaplık, bir seferde ekranın küçük bölümlerini çizmenize veya yazmanıza izin verir ve bunları ayrı ayrı cihazın dahili belleğine yükler. Yalnızca ihtiyacınız olan tüm bölümleri yükledikten sonra, ona bellekte ne olduğunu göstermesini söylersiniz.

Ekranın bu bölümleri "Paint" nesneleri olarak bilinir. Sadece bir tanesine ihtiyacınız var ve ekranın her bölümü için yüksekliğini, genişliğini ve dönüşünü tanımlıyorsunuz. Tamamlandığında, yüklemek için ekrandaki konumu ve siyah beyaz mı yoksa kırmızı beyaz mı olacağını belirleyerek onu yüklersiniz.

Ekranın sol üst köşesinde yatay (x) ve dikey (y) koordinatları (0, 0) bulunur, sol alt köşesi (0, 151) ve sağ üst köşesi (151, 0)'dir.

başlatma

Arduino IDE'de te E-ink_demo taslağını açın ve kitaplığın nasıl kullanılacağını açıkladığım gibi izleyin.

Çizimin üstünde, her zaman gerekli olan aşağıdaki satırları göreceksiniz:

#include <SPI.h #include "ER-ERM0154-1.h" #include "imagedata.h" #include "epdpaint.h" #define RENKLİ 0 #define RENKSİZ 1 Epd epd;

#include satırları gerekli kitaplıkları çeker. SPI.h standart bir Arduino kütüphanesidir, ancak diğerleri e-ink kütüphanesinin bir parçasını oluşturur.

RENKSİZ (beyaz) pikseller ve RENKLİ (siyah veya kırmızı olanlar) için adlar tanımlarız. (Avrupalı arkadaşlarıma not: COLOR'un Amerikan yazımı kullanılmıştır.)

Epd epd'si; line, üzerinde görüntüleyeceğimiz elektronik kağıt cihaz nesnesini oluşturur. Bu, setup() ve loop() fonksiyonlarını birleştirmek için taslağın başlangıcında burada olmalıdır.

Farklı boyutta bir ekranınız varsa, EPD satırını şu şekilde değiştirebilirsiniz:

epd epd(GENİŞLİK, YÜKSEKLİK);

(#define ifadelerinde daha önce WIDTH ve HEIGHT tanımlı.)

Aynı şekilde, varsayılan olmayan pin numaralarını aşağıdakilerle belirtebilirsiniz:

Epd epd(GENİŞLİK, YÜKSEKLİK, BUSY_PIN, RESET_PIN, DC_PIN, CS_PIN);

setup() içerisinde cihazı aşağıdaki gibi başlatmamız gerekiyor:

Seri.başlangıç(9600)

if (epd. Init() != 0) { Serial.print("e-Kağıt başlatma başarısız"); dönüş; }

(Aslında, epd. Init() hiçbir zaman bir hata döndürmez, ancak gelecekteki bir geliştirme, bir ekranın yokluğunu veya çalışmayan bir ekranı algılayabilir.)

Adım 6: Metin Yazma

Yazma metni
Yazma metni

E-ink_demo'da dikkatinizi loop()'a çevirin. Önce ekranı temizleyelim:

epd. ClearFrame()

(Kendi resminizi göstermek üzereyseniz bu aslında gerekli değildir.)

Herhangi bir şey (metin veya grafik) çizmeden önce, üzerine çizim yapacağımız bir Paint nesnesi oluşturmamız gerekir:

imzasız karakter görüntüsü[1024]

Boya boya(resim, 152, 18); //genişlik 8'in katı olmalıdır

Bu, bir miktar alan (1024 bayt) ayırır ve onu ikinci satır tarafından kapatılan Paint nesnesine tahsis eder. Bu, geçici olarak 152 piksel genişliğinde ve 18 piksel derinliğinde yapılandırılmıştır. Daha sonra gerektiğinde yeniden kullanmak üzere yeniden yapılandırabiliriz, ancak unutmayın: bayt başına 8 piksel depolandığından ve baytları bölemediğimizden genişlik 8'in katları olmalıdır. (Aslında gerekirse toplayacaktır, ancak ekranınız olması gerektiği gibi görünmediğinde kafa karıştırıcı olabilir.

Şimdi boya nesnesini RENKSİZ (beyaz) olarak temizlemeliyiz, sonra (x, y) = (22, 2) konumunda 16 piksel yüksekliğinde bir yazı tipi kullanarak "e-ink Demo" yazıyoruz ve RENKLİ (karşı göstermek için) RENKSİZ arka plan.

boya. Temizle(RENKSİZ)

paint. DrawStringAt(12, 2, "e-kağıt Demosu", &Font16, RENKLİ);

Koordinatların (22, 2) dizenin ilk karakterinin sol üst köşesi olduğuna ve tüm ekranın değil, boya nesnesinin sol üst köşesine göre 22 piksel içeride ve 2 piksel aşağıda olduğuna dikkat edin.. Metin en iyi, boya nesnesinin üstünden en az bir piksel aşağıda görünür.

Aşağıdaki yazı tipleri mevcuttur:

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

Şimdi sadece boya nesnesini ("boya") cihaza ("epd") göndermemiz gerekiyor:

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

SetPartialWindowBlack, boya nesnesinin görüntü ve genişlik ve derinlik özelliklerini kullanarak epd nesnesine uyguladığımız bir yöntemdir. Bu görüntüyü (x, y) = (0, 3) noktasındaki cihaza yazmasını söylüyoruz. Ve RENKLİ piksellerin siyah olması gerektiğini söylüyoruz.

Bu çok zor değildi, değil mi? Bir tane daha deneyelim.

boya. Temizle(RENKLİ);

paint. DrawStringAt(20, 2, "(Renk üzerine beyaz)", &Font12, RENKSİZ); epd. SetPartialWindowRed(paint. GetImage(), 0, 24, paint. GetWidth(), paint. GetHeight());

Aynı boya nesnesini, aynı genişlik ve yükseklikte tekrar kullanıyoruz ama bu sefer onu RENKLİ olarak temizleyip, RENKLENDİRİLMEMİŞ bir dize yazalım. Ve bir değişiklik için, RENKLİ pikselleri kırmızı yapacağız ve ilkinin hemen altındaki (0, 24) cihaza yazacağız.

İki boya nesnesini cihazın hafızasına yazdık ancak henüz göstermesini söylemedik. Bunu aşağıdaki ifadeyle yapıyoruz:

epd. DisplayFrame();

(E-ink_demo taslağında aslında bunu biraz daha çizdikten sonra sona bırakıyoruz, ancak isterseniz buraya ekleyebilirsiniz, ardından gecikme (10000); el işlerinize hayran kalmanız için size zaman tanımak için.

Adım 7: Çizgiler ve Dikdörtgenler Çizme

Çizgi ve Dikdörtgen Çizme
Çizgi ve Dikdörtgen Çizme

Şimdi çizgileri ve dikdörtgenleri nasıl çizeceğimizi görelim. Aynı boya nesnesini kullanacağız, ancak onu 40 piksel genişliğinde ve 36 piksel yüksekliğinde yeniden yapılandırmamız gerekiyor. UNCOLORED olarak temizleyeceğiz.

boya. SetWidth(40);

boya. SetHeight(36); boya. Temizle(RENKSİZ);

Her zamanki gibi boya nesnesine göre sol üst köşesi (5, 3) ve sağ alt köşesi (35, 33) olan (RENKLİ) bir dikdörtgen çizeceğiz. Ayrıca köşegenlerini (5, 3) ile (35, 33) ve (35, 3) ile (5, 33) arasında doğrular olarak çizeceğiz. Son olarak (32, 42)'deki ekrana tüm boya nesnesini (kırmızı) yazacağız.

//ÜST SIRA:

// Dikdörtgen boya. Temizle(RENKSİZ); paint. DrawRectangle(5, 3, 35, 33, RENKLİ;) paint. DrawLine(5, 3, 35, 33, RENKLİ); paint. DrawLine(35, 3, 5, 33, RENKLİ); epd. SetPartialWindowRed(paint. GetImage(), 32, 42, paint. GetWidth(), paint. GetHeight());

Geldiği gibi kütüphane de doldurulmuş bir dikdörtgen sağladı, ama hey, gölgeli bir tane istedim, bu yüzden yeni bir yöntem ekledim. Biri gölgeli, diğeri dolgulu iki dikdörtgen daha yapacağız ve bunları siyah ve kırmızı değiştirerek birincinin sağına yerleştireceğiz.

// Gölgeli Dikdörtgen boya. Temizle(RENKSİZ); paint. DrawShadedRectangle(5, 3, 35, 33); epd. SetPartialWindowBlack(paint. GetImage(), 72, 42, paint. GetWidth(), paint. GetHeight()); // Dolgulu Dikdörtgen boya. Temizle(RENKSİZ); paint. DrawFilledRectangle(5, 3, 35, 33, RENKLİ); epd. SetPartialWindowRed(paint. GetImage(), 112, 42, paint. GetWidth(), paint. GetHeight());

Adım 8: Daireler Çizmek

Daire Çizimi
Daire Çizimi

Daireler çizmek kadar kolaydır. İki köşenin koordinatları yerine, merkezin ve yarıçapın koordinatlarını vermeliyiz. Boya nesnesini temizleyeceğiz, ardından (20, 15)'e (boya nesnesine göre) ve yarıçapı 15'e bir daire koyacağız. Ve gölgeli ve dolu bir daire için tekrarlayın.

//İKİNCİ SIRA

// Daire boya. Temizle(RENKSİZ); paint. DrawCircle(20, 18, 15, RENKLİ); epd. SetPartialWindowBlack(paint. GetImage(), 32, 78, paint. GetWidth(), paint. GetHeight()); // Shaded Circle paint. Clear(RENKSİZ); paint. DrawShadedCircle(20, 18, 15); epd. SetPartialWindowRed(paint. GetImage(), 72, 78, paint. GetWidth(), paint. GetHeight()); //Dolu daire boya. Temizle(RENKSİZ); paint. DrawFilledCircle(20, 18, 15, RENKLİ); epd. SetPartialWindowBlack(paint. GetImage(), 112, 78, paint. GetWidth(), paint. GetHeight());

Adım 9: RENKLİ BİR Bckground üzerinde RENKSİZ

RENKLİ BİR Bckground üzerinde RENKSİZ
RENKLİ BİR Bckground üzerinde RENKSİZ

Burada meşhur oluyoruz! Bu yüzden, rulo halindeyken, metnin ikinci satırında yaptığımız gibi, bu sefer RENKLİ bir boya nesnesi üzerinde RENKLİ OLMAYAN 3 daire daha yapalım.

//ÜÇÜNCÜ SIRA

// Daire boya. Temizle(RENKLİ); paint. DrawCircle(20, 18, 15, RENKSİZ); epd. SetPartialWindowRed(paint. GetImage(), 32, 114, paint. GetWidth(), paint. GetHeight()); // Shaded Circle boya. Clear(RENKLİ) boya. DrawShadedCircle(20, 18, 15); epd. SetPartialWindowBlack(paint. GetImage(), 72, 114, paint. GetWidth(), paint. GetHeight()); //Dolu daire boya. Temizle(RENKLİ); paint. DrawFilledCircle(20, 18, 15, RENKSİZ); epd. SetPartialWindowRed(paint. GetImage(), 112, 114, paint. GetWidth(), paint. GetHeight());

Gölgeli dolguya ek olarak, rastgele pikselleri renklendiren benekli bir dolgu da vardır. Yani yukarıdaki gölgeli daire yerine koyabilirdik

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

Son parametre (25) yoğunluktur, yani renklendirilecek piksellerin yüzdesidir. Atlanırsa, %50 olduğu varsayılır.

Ayrıca, yoğunluğu belirten isteğe bağlı bir ekstra parametreye sahip bir DrawSpeckledRectangle vardır.

Adım 10: Döndürme

döndürme
döndürme
döndürme
döndürme

Çizebileceğimiz her şeyi 90, 180 veya 270 derece döndürebiliriz. (Döndürmeleri saat yönünde sayıyoruz.)

Bir paint nesnesine bir ROTATE özelliği uygulayabiliriz, ancak döndürülen şeyin paint nesnesi değil, ona yazdığınız her şey olduğunu anlamak önemlidir. Yani dikey metin istiyorsanız, boya nesnenizi yatay yerine dikey yönde uzun ve ince olarak yapılandırmanız gerekir.

Bu nedenle, metninizin yukarıdan aşağıya (soldan sağa yerine) okunacak şekilde saat yönünde 90 derece döndürülmesini istiyorsanız, yazdığınız herhangi bir şey için boya nesnesinin sağ üst köşesi (0, 0) olacaktır. veya o köşeden aşağı doğru ölçülen x ve o köşeden sola doğru y olacak şekilde çizin.

Muhtemelen ekranın sol tarafında bir boşluk bıraktığımızı fark etmişsinizdir. Öyleyse oraya 270 derece döndürülmüş, yani aşağıdan yukarıya doğru bir metin yazalım. Bu, (0, 0) sol alt köşeye koyacaktır.

Bir boyama nesnesini nasıl döndürürseniz döndürün, döndürmenin yalnızca üzerine piksel çizdiğinizde geçerli olduğunu unutmayın. Cihaza yazmaya geldiğinizde yine SetPartialWindow'a vermeniz gereken sol üst köşenin koordinatlarıdır.

Özetlemek gerekirse, paint nesnemizi genişlik 32 ve yükseklik 110 olacak şekilde yapılandıralım ve ona bir ROTATE_270 özelliği vereceğiz. Bütün bunları yazmadan veya ona bir şey çizmeden önce yapmamız gerekmiyor.

paint. SetWidth(32);

boya. SetHeight(110); paint. SetRotate(ROTATE_270);

RENKLİ olarak temizleyeceğiz ve ona RENKLENDİRİLMEMİŞ bir dize yazacağız, ardından (0, 42)'ye yerleştireceğiz. (Bu, sol üst köşedir, unutmayın. İçindeki piksellerin dönüşünü unutun.)

boya. Temizle(RENKLİ); paint. DrawStringAt(8, 8, "Yana!", &Font16, RENKSİZ); epd. SetPartialWindowBlack(paint. GetImage(), 0, 42, paint. GetWidth(), paint. GetHeight());

Son olarak cihaza verdiğimiz tüm pikselleri göstermesini söylememiz gerekiyor. Ve eğer bir süreliğine değiştirmek istemiyorsak ve pil gücünden tasarruf etmek istiyorsak, onu uyku moduna alabiliriz ve neden Arduino'yu da uyku moduna geçirmeyelim, başka bir tane alma ve gösterme zamanı geldiğinde uyandırılmak için. ölçüm.

epd. DisplayFrame();

epd. Sleep();

İkinci bir örnek çizim, 90, 180 ve 270 derece döndürmeyi gösterir. Şimdiye kadar kendi başınıza takip edebilmelisiniz.

Adım 11: Bitmap'lerin Çizilmesi

Bitmap Çizimi
Bitmap Çizimi

Satıcının demosu, birkaç bitmap görüntüsünün görüntülenmesini içerir. Bunlar, indirilebilen bir araç kullanılarak kolayca oluşturulabilir.

www.buydisplay.com/image2lcd

Bir.exe yükleme dosyası ve bir lisans anahtarı içeren bir metin dosyası içeren bir zip dosyası olarak gelir. Genişletin ve ardından yüklemek için.exe dosyasına çift tıklayın.

Açıkça, E-mürekkep pikselleri yalnızca açık veya kapalı olabileceğinden ve bu nedenle gri düzeylerini temsil edemediğinden, görüntüleyebilecekleriniz konusunda oldukça ciddi kısıtlamalar vardır. Ancak bir görüntünün üzerine dikdörtgen bir boya nesnesi bindirmek mümkündür. Bir logo, semboller veya sabit bir metni süslü bir yazı tipinde görüntülemek isteyebilirsiniz; bunun üzerine çubuk veya pasta grafiği gibi değişken metin veya grafikleri yerleştirebilirsiniz, belki de sıvı seviyesi gibi bir şeyi belirtir.

Resminizi aşina olduğunuz çizim yazılımı ile oluşturabilir veya bir çizim veya çizimde tarayabilirsiniz, ancak her iki durumda da onu sadece 2 seviyeye indirebilmeniz gerekir..gif,-j.webp

Image2Lcd'yi başlatın. Alt kısımda bir Kayıt sekmesi göreceksiniz. Buna tıklayın ve indirdiğiniz zip dosyasına bir metin dosyasında gelen kayıt kodunu girin. Bu, görüntüdeki bir kaplamayı kaldıracaktır.

Image2Lcd'de görüntü dosyanızı açın. Sol bölmede, sahip olduğunuzdan emin olun.

  • Çıktı dosya türü: C dizisi
  • Tarama modu: Yatay Tarama
  • BitsPixel: Tek renkli
  • Maksimum Genişlik ve Yükseklik: ekranınızın boyutu ve
  • Baş verilerini dahil et işareti kaldırılmalıdır.

İşlem yapmak için Maks Genişlik ve Yükseklik'in yanındaki düğmeye tıklayın. İşlemin sonucu gösterilecektir. En iyi sonuçları elde etmek için Parlaklık ve Kontrast kaydırıcılarını ayarlamanız gerekebilir.

Parlaklık kaydırıcısının üzerindeki Ters rengi onay kutusuna tıklayın, onu negatif bir görüntü haline getirin, bu bir nedenden dolayı gereklidir, ardından Arduino taslağınızı içeren klasörde imagedata.cpp olarak kaydetmek için Kaydet'e tıklayın. Arduino IDE ile taslağı bir sonraki açışınızda, onu yeni bir sekme olarak görmelisiniz.

Adım 12: Bitmap'inizi Görüntüleme

Bitmap'inizi Görüntüleme
Bitmap'inizi Görüntüleme

Arduino taslağınızın ana dosyasında, üstteki #include satırlarının hemen ardından şunu ekleyin:

#include "imagedata.h"

Yeni bir sekme oluşturun (sekmeler satırının sonundaki aşağı oka tıklayın) ve buna imagedata.h adını verin. İçine aşağıdaki 2 satırı ekleyin:

extern const imzasız karakter IMAGE_BLACK;

harici const imzasız karakter IMAGE_RED;

imagedata.cpp dosyanızda ilk satır

const imzasız karakter gImage_image[2888] = {

(1,54” ekranı kullanmıyorsanız köşeli parantez içindeki sayı farklı olacaktır.) Bunu şununla değiştirin.

const unsigned char IMAGE_BLACK PROGMEM = {

Bu siyah beyaz bir görüntü içindir. Kırmızı ve beyaz istiyorsanız, olarak değiştirin

const unsigned char IMAGE_RED PROGMEM = {

Bu satırın hemen önüne ekleyin

#Dahil etmek

#include "imagedata.h"

Artık resminizi göstermeye hazırsınız. Ana dosyanızdaki loop() içinde, ekleyin

epd. ClearFrame();

epd. DisplayFrame(IMAGE_BLACK, NULL);

Veya oluşturduğunuz kırmızı bir görüntüyse, ikinci satır şu şekilde olmalıdır:

epd. DisplayFrame(NULL, IMAGE_RED);

Aslında Image2Lcd ile kırmızı ve siyah kısımları ayrı ayrı dönüştürerek ve her ikisini de görüntüleyerek kırmızı ve siyah birleşik bir görüntü oluşturabilirsiniz.

epd. DisplayFrame(IMAGE_BLACK, IMAGE_RED);

Ancak hem siyah beyaz görüntüde siyah hem de kırmızı beyaz görüntüde kırmızı olarak belirtilen pikseller kırmızı çıkacaktır.

Son olarak, daha önce öğrendiğimiz herhangi bir metin veya grafik işleviyle görüntünüzü kaplayabilirsiniz. Twitter tanıtıcımı eklemek istedim, bu yüzden ekledim

Boya boya(resim, 20, 152); //genişlik 8'in katı olmalıdır

paint. SetRotate(ROTATE_270); boya. Temizle(RENKSİZ); paint. DrawStringAt(20, 2, "@pleriche", &Font16, RENKLİ); epd. SetPartialWindowRed(paint. GetImage(), 0, 0, paint. GetWidth(), paint. GetHeight()); epd. SetPartialWindowRed(paint. GetImage(), 0, 0, paint. GetWidth(), paint. GetHeight()); epd. DisplayFrame();

Önerilen: