Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 89 additions & 66 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@ EpdLib provides classes for interfacing with the screen (`Screen`), building lay

EpdLib supports almost all of WaveShare's EPD screens. See the [Supported Screens](#supported-screens) below.

* 7-Color screens are supported in full color
* HD Screens are supported in 8 bit gray and support partial refresh (~1 second)
* All 2 and 3 color screens are supported in 1 bit (black and white) only

## Changes

See the [ChangeLog](./changes.md) for details
Expand All @@ -29,6 +25,7 @@ See the [ChangeLog](./changes.md) for details
## Dependencies

Python Modules:

* Pillow: System dependencies for Pillow:
* libopenjp2-7
* libtiff5
Expand All @@ -38,7 +35,6 @@ Python Modules:
* this is for interacting with waveshare epaper displays and is not strictly needed to use the Block and Layout objects.
* IT8951 (IT8951 based panels): see [notes](#notes) below for installation instructions


## Modules:

* [Block](./docs/Block.md) - image and text blocks that can be used to create a layout
Expand All @@ -47,67 +43,94 @@ Python Modules:

## Supported Screens


|Screen |Supported |Mode |
|:-----------------|:--------------|:-------------|
|00. epd13in3k |True |"1" 1 bit |
|01. epd1in02 |True |"1" 1 bit |
|02. epd1in54 |True |"1" 1 bit |
|03. epd1in54_V2 |True |"1" 1 bit |
|04. epd1in54b |True |"1" 1 bit |
|05. epd1in54b_V2 |True |"1" 1 bit |
|06. epd1in54c |True |"1" 1 bit |
|07. epd1in64g |True |"1" 1 bit |
|08. epd2in13 |True |"1" 1 bit |
|09. epd2in13_V2 |True |"1" 1 bit |
|10. epd2in13_V3 |True |"1" 1 bit |
|11. epd2in13_V4 |True |"1" 1 bit |
|12. epd2in13b_V3 |True |"1" 1 bit |
|13. epd2in13b_V4 |True |"1" 1 bit |
|14. epd2in13bc |True |"1" 1 bit |
|15. epd2in13d |False |Unsupported |
|16. epd2in13g |True |"1" 1 bit |
|17. epd2in36g |True |"1" 1 bit |
|18. epd2in66 |True |"1" 1 bit |
|19. epd2in66b |True |"1" 1 bit |
|20. epd2in66g |True |"1" 1 bit |
|21. epd2in7 |True |"1" 1 bit |
|22. epd2in7_V2 |True |"1" 1 bit |
|23. epd2in7b |True |"1" 1 bit |
|24. epd2in7b_V2 |True |"1" 1 bit |
|25. epd2in9 |True |"1" 1 bit |
|26. epd2in9_V2 |True |"1" 1 bit |
|27. epd2in9b_V3 |True |"1" 1 bit |
|28. epd2in9b_V4 |True |"1" 1 bit |
|29. epd2in9bc |True |"1" 1 bit |
|30. epd2in9d |False |Unsupported |
|31. epd3in0g |True |"1" 1 bit |
|32. epd3in52 |True |"1" 1 bit |
|33. epd3in7 |False |Unsupported |
|34. epd4in01f |True |"RGB" 7 Color |
|35. epd4in2 |False |Unsupported |
|36. epd4in26 |True |"1" 1 bit |
|37. epd4in2_V2 |False |Unsupported |
|38. epd4in2b_V2 |True |"1" 1 bit |
|39. epd4in2bc |True |"1" 1 bit |
|40. epd4in37g |True |"1" 1 bit |
|41. epd5in65f |True |"RGB" 7 Color |
|42. epd5in83 |True |"1" 1 bit |
|43. epd5in83_V2 |True |"1" 1 bit |
|44. epd5in83b_V2 |True |"1" 1 bit |
|45. epd5in83bc |True |"1" 1 bit |
|46. epd7in3f |True |"RGB" 7 Color |
|47. epd7in3g |True |"1" 1 bit |
|48. epd7in5 |True |"1" 1 bit |
|49. epd7in5_HD |True |"1" 1 bit |
|50. epd7in5_V2 |True |"1" 1 bit |
|51. epd7in5_V2_old|True |"1" 1 bit |
|52. epd7in5b_HD |True |"1" 1 bit |
|53. epd7in5b_V2 |True |"1" 1 bit |
|54. epd7in5bc |True |"1" 1 bit |
|55. All HD IT8951 |True |"L" 8 bit |

Add your enthusiasm to standardize the `epd1in02` screen to [this Pull Request](https://github.com/waveshare/e-Paper/pull/283).
Generally, the following features are available:

| Screen Type* | Basic Support | Color | Grayscale | Partial Refresh |
|---------------------------------|---------------|-------|-----------|-----------------|
| 16 Gray Scale (HD IT8951) | ✅ | ➖ | ✅ | ✅ (~1 second) |
| E6 Full Color | ✅ | ❌ | ➖ | ➖ |
| 7-Color | ✅ | ✅ | ➖ | ➖ |
| 4-Color | ✅ | ❌ | ➖ | ➖ |
| 3-Color | ✅ | ❌ | ➖ | ➖ |
| Black & White | ✅ | ➖ | ➖ | ❌ |
| Black & White, <br>4 Gray Scale | ✅ | ➖ | ✅ | ❌ |

\* Please see [Waveshare's website](https://www.waveshare.com/2.7inch-e-Paper-HAT.htm#tab-wiki) for a list of available
devices and their types.

✅ = Supported by epdlib
❌ = Not supported by epdlib
➖ = Not available on this screen type

### Screen List

|Screen |Supported |Mode |
|:-------------------|:---------|:-------------------|
|00. epd13in3b |True |"1" 1 bit b/w |
|01. epd13in3k |True |"L" 2 bit grayscale |
|02. epd1in02 |True |"1" 1 bit b/w |
|03. epd1in54 |True |"1" 1 bit b/w |
|04. epd1in54_V2 |True |"1" 1 bit b/w |
|05. epd1in54b |True |"1" 1 bit b/w |
|06. epd1in54b_V2 |True |"1" 1 bit b/w |
|07. epd1in54c |True |"1" 1 bit b/w |
|08. epd1in64g |True |"1" 1 bit b/w |
|09. epd2in13 |True |"1" 1 bit b/w |
|10. epd2in13_V2 |True |"1" 1 bit b/w |
|11. epd2in13_V3 |True |"1" 1 bit b/w |
|12. epd2in13_V4 |True |"1" 1 bit b/w |
|13. epd2in13b_V3 |True |"1" 1 bit b/w |
|14. epd2in13b_V4 |True |"1" 1 bit b/w |
|15. epd2in13bc |True |"1" 1 bit b/w |
|16. epd2in13d |True |"1" 1 bit b/w |
|17. epd2in13g |True |"1" 1 bit b/w |
|18. epd2in15b |True |"1" 1 bit b/w |
|19. epd2in15g |True |"1" 1 bit b/w |
|20. epd2in36g |True |"1" 1 bit b/w |
|21. epd2in66 |True |"1" 1 bit b/w |
|22. epd2in66b |True |"1" 1 bit b/w |
|23. epd2in66g |True |"1" 1 bit b/w |
|24. epd2in7 |True |"L" 2 bit grayscale |
|25. epd2in7_V2 |True |"L" 2 bit grayscale |
|26. epd2in7b |True |"1" 1 bit b/w |
|27. epd2in7b_V2 |True |"1" 1 bit b/w |
|28. epd2in9 |True |"1" 1 bit b/w |
|29. epd2in9_V2 |True |"L" 2 bit grayscale |
|30. epd2in9b_V3 |True |"1" 1 bit b/w |
|31. epd2in9b_V4 |True |"1" 1 bit b/w |
|32. epd2in9bc |True |"1" 1 bit b/w |
|33. epd2in9d |True |"1" 1 bit b/w |
|34. epd3in0g |True |"1" 1 bit b/w |
|35. epd3in52 |True |"1" 1 bit b/w |
|36. epd3in7 |False |Unsupported |
|37. epd4in01f |True |"RGB" Color |
|38. epd4in2 |True |"L" 2 bit grayscale |
|39. epd4in26 |True |"L" 2 bit grayscale |
|40. epd4in2_V2 |True |"L" 2 bit grayscale |
|41. epd4in2b_V2 |False |Unsupported |
|42. epd4in2b_V2_old |False |Unsupported |
Comment on lines +110 to +111
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These require .so files from Waveshare, which don't come with the Python package.

|43. epd4in2bc |True |"1" 1 bit b/w |
|44. epd4in37g |True |"1" 1 bit b/w |
|45. epd5in65f |True |"RGB" Color |
|46. epd5in79 |True |"L" 2 bit grayscale |
|47. epd5in79b |True |"1" 1 bit b/w |
|48. epd5in79g |True |"1" 1 bit b/w |
|49. epd5in83 |True |"1" 1 bit b/w |
|50. epd5in83_V2 |True |"1" 1 bit b/w |
|51. epd5in83b_V2 |True |"1" 1 bit b/w |
|52. epd5in83bc |True |"1" 1 bit b/w |
|53. epd7in3e |True |"1" 1 bit b/w |
|54. epd7in3f |True |"RGB" Color |
|55. epd7in3g |True |"1" 1 bit b/w |
|56. epd7in5 |True |"1" 1 bit b/w |
|57. epd7in5_HD |True |"1" 1 bit b/w |
|58. epd7in5_V2 |True |"L" 2 bit grayscale |
|59. epd7in5_V2_old |True |"1" 1 bit b/w |
|60. epd7in5b_HD |True |"1" 1 bit b/w |
|61. epd7in5b_V2 |True |"1" 1 bit b/w |
|62. epd7in5b_V2_old |True |"1" 1 bit b/w |
|63. epd7in5bc |True |"1" 1 bit b/w |
|64. All HD IT8951 |True |"L" 8 bit grayscale |

The `epd3in7` is an oddball that has several issues:

Expand Down
7 changes: 7 additions & 0 deletions changes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 0.??? - ???

**Screen**

* Implement support for monochrome screens with 4 grays
* Replace explicit `mode` with autodetection based on screen type

## 0.6.5.0 - 2024-03-20

**Block**
Expand Down
2 changes: 1 addition & 1 deletion docs/Screen.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ $ python -m Screen
* `resolution` (list): X x Y pixels
* `clear_args` (dict): kwargs dict of any additional kwargs that are needed for clearing a display
* `buffer_no_image` (PIL:Image): "blank" image for clearing bi-color panels (empty for all others)
* `vcom (float): negative vcom voltage from panel ribon cable
* `vcom (float)`: negative vcom voltage from panel ribon cable
* `HD` (bool): True for IT8951 panels
* `rotation` (int): rotation of screen (0, -90, 90, 180)
* `mirror` (bool): mirror the output
Expand Down
Loading