Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Waveshare Red-Black-White Screen #22

Open
holmesha opened this issue Feb 10, 2022 · 6 comments
Open

Waveshare Red-Black-White Screen #22

holmesha opened this issue Feb 10, 2022 · 6 comments

Comments

@holmesha
Copy link

holmesha commented Feb 10, 2022

Hello, I already have the Waveshare red/black/white e-ink screen. Any idea on how to modify the code to account for the different screen? I can't seem to figure out how to get it to even turn on. Can I add the appropriate screen in myself on the screen configuration? EPD2in13bc I think is the one I need.

@dr-mod
Copy link
Owner

dr-mod commented Feb 12, 2022

Hi @holmesha , to add support for the EPD2in13bc screen, you can take a look at https://github.com/dr-mod/zero-btc-screen/blob/main/presentation/screens/epd2in13bv3.py they should be very similar, it might just boil down to substituting the driver class.

@cricktor
Copy link

cricktor commented Mar 4, 2022

I have the same red/black/white e-paper screen from Waveshare as @holmesha. I'm no fluent Python programmer but was able to get the screen properly working in black/white currently.

Basic steps taken:
Copy epd2in13bv3.py to epd2in13bc.py and apply following changes:

--- presentation/screens/epd2in13bv3.py 2022-01-22 14:26:20.000000000 +0100
+++ presentation/screens/epd2in13bc.py  2022-01-25 16:34:01.185380751 +0100
@@ -2,25 +2,26 @@

 from PIL import Image, ImageDraw, ImageFont
 try:
-    from waveshare_epd import epd2in13b_V3
+    from waveshare_epd import epd2in13bc
 except ImportError:
     pass
 from data.plot import Plot
 from presentation.observer import Observer
+from logs import logger

 SCREEN_HEIGHT = 104
 SCREEN_WIDTH = 212

 FONT_SMALL = ImageFont.truetype(
-    os.path.join(os.path.dirname(__file__), os.pardir, 'Roses.ttf'), 7)
+    os.path.join(os.path.dirname(__file__), os.pardir, 'Roses.ttf'), 8)
 FONT_LARGE = ImageFont.truetype(
     os.path.join(os.path.dirname(__file__), os.pardir, 'PixelSplitter-Bold.ttf'), 22)

-class Epd2in13bv3(Observer):
+class Epd2in13bc(Observer):

     def __init__(self, observable, mode):
         super().__init__(observable=observable)
-        self.epd = epd2in13b_V3.EPD()
+        self.epd = epd2in13bc.EPD()

         self.epd.init()
         self.image_black = Image.new('1', (SCREEN_WIDTH, SCREEN_HEIGHT), 255)

Edit file configuration.cfg:

diff --git a/configuration.cfg b/configuration.cfg
index 4e67afe..6d734e6 100644
--- a/configuration.cfg
+++ b/configuration.cfg
@@ -2,13 +2,14 @@
 console_logs             : false
 #logs_file                : /tmp/zero-btc-screen.log
 dummy_data               : false
-refresh_interval_minutes : 15
+refresh_interval_minutes : 5
 currency                : BTC

 # Enabled screens or devices
 screens : [
-    epd2in13v2
+#    epd2in13v2
 #    epd2in13bv3
+    epd2in13bc
 #    picture
 #    inkyWhatRBW
   ]
@@ -20,6 +21,9 @@ screens : [
 mode : candle

 [epd2in13bv3]
+mode  : candle
+
+[epd2in13bc]
 mode  : line

 [picture]

Add black/white/red screen driver:

diff --git a/presentation/screens/__init__.py b/presentation/screens/__init__.py
index 53b7a12..58e4497 100644
--- a/presentation/screens/__init__.py
+++ b/presentation/screens/__init__.py
@@ -1 +1 @@
-from . import epd2in13v2, epd2in13bv3, picture, inkywhatrbw
+from . import epd2in13v2, epd2in13bv3, epd2in13bc, picture, inkywhatrbw

More changes are required to display e.g. "loosing" candles in red color. I haven't implemented this, yet. On Reddit one guy did this, but he hadn't replied to me after I asked for some code snippets. Apparently he didn't provide a push request here, too.

@holmesha
Copy link
Author

holmesha commented Mar 4, 2022

Thanks so much for digging into my question! I'm new to all of this and the code has been a bit of a struggle so far.

@cricktor
Copy link

cricktor commented Mar 10, 2022

At the moment I can't assist further to add the red color where appropriate. I need to get more used to Python first.
As far as I've seen in the example code of Waveshare, everything in red color has to be drawn into a separate image buffer and then the buffers for b&w and red are handed over to be displayed in the correct order. No rocket science involved...

@scarolan
Copy link

scarolan commented May 23, 2022

epd2in13bv3.py works fine for me out of the box with the 2.13" Red/White/Black E-Ink Waveshare display hat, but it only displays in black and white.

+1 for red color support.

@vitalized
Copy link

I also have the Waveshare Three-colour 2.13" E-Ink Display pHAT - Red/Black/White. I don't have any Python coding skills, so another +1 for red colour support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants