diff --git a/src/glcd-128x64-element.stories.ts b/src/glcd-128x64-element.stories.ts
new file mode 100644
index 0000000..f5c87a5
--- /dev/null
+++ b/src/glcd-128x64-element.stories.ts
@@ -0,0 +1,79 @@
+import { html } from 'lit';
+import { storiesOf } from '@storybook/web-components';
+import './glcd-128x64-element';
+
+const logoBitmap = new Uint8Array([
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 63, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 248, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143,
+ 255, 255, 159, 240, 31, 252, 63, 255, 127, 255, 255, 255, 255, 255, 191, 7, 231, 254, 7, 240, 15,
+ 240, 7, 254, 63, 243, 195, 255, 207, 255, 14, 3, 195, 254, 7, 241, 143, 192, 3, 254, 31, 225, 195,
+ 255, 143, 254, 14, 35, 129, 252, 3, 241, 143, 128, 1, 254, 31, 225, 195, 255, 135, 254, 14, 51, 0,
+ 252, 99, 241, 143, 0, 1, 254, 31, 195, 225, 255, 7, 254, 30, 51, 24, 252, 99, 240, 15, 3, 224,
+ 254, 31, 131, 225, 255, 7, 254, 62, 35, 24, 252, 99, 248, 30, 15, 240, 254, 31, 131, 225, 255, 7,
+ 252, 62, 3, 24, 252, 3, 248, 30, 31, 248, 254, 63, 7, 225, 254, 7, 252, 63, 3, 8, 254, 3, 248, 60,
+ 31, 248, 126, 63, 7, 241, 254, 7, 252, 63, 7, 129, 255, 7, 240, 252, 127, 252, 126, 62, 31, 240,
+ 254, 7, 252, 127, 255, 193, 255, 135, 240, 252, 127, 252, 126, 60, 31, 240, 254, 3, 252, 127, 223,
+ 225, 255, 199, 241, 248, 127, 252, 126, 56, 63, 240, 252, 3, 248, 127, 159, 241, 255, 195, 241,
+ 248, 255, 252, 126, 48, 127, 248, 252, 3, 248, 127, 31, 241, 255, 227, 241, 248, 255, 252, 126,
+ 16, 127, 248, 124, 35, 248, 255, 31, 248, 255, 227, 227, 240, 255, 252, 126, 0, 255, 248, 124, 99,
+ 240, 254, 31, 248, 255, 227, 227, 240, 255, 252, 126, 1, 255, 248, 120, 99, 240, 254, 31, 248,
+ 255, 243, 227, 240, 255, 252, 126, 3, 255, 252, 120, 99, 241, 254, 31, 248, 255, 225, 227, 241,
+ 255, 252, 124, 99, 255, 252, 120, 99, 241, 254, 31, 248, 255, 225, 199, 241, 255, 252, 124, 99,
+ 255, 252, 120, 99, 225, 254, 31, 252, 127, 193, 199, 241, 255, 252, 124, 99, 255, 252, 56, 225,
+ 227, 254, 31, 252, 127, 129, 199, 241, 255, 252, 124, 3, 255, 252, 48, 225, 227, 254, 63, 252,
+ 127, 0, 199, 241, 255, 252, 126, 3, 255, 252, 48, 241, 227, 254, 63, 252, 126, 8, 143, 241, 255,
+ 252, 126, 1, 255, 254, 48, 241, 195, 254, 63, 254, 60, 24, 143, 241, 255, 252, 126, 1, 255, 254,
+ 49, 241, 199, 254, 63, 254, 60, 56, 15, 241, 255, 248, 126, 32, 255, 254, 33, 241, 199, 254, 63,
+ 254, 56, 124, 15, 240, 255, 248, 126, 48, 127, 254, 1, 241, 135, 254, 63, 254, 16, 252, 31, 240,
+ 255, 248, 254, 56, 63, 254, 3, 240, 143, 254, 63, 254, 1, 248, 15, 248, 255, 240, 254, 56, 63,
+ 254, 3, 240, 143, 254, 63, 254, 1, 248, 15, 248, 127, 225, 254, 60, 31, 254, 3, 240, 15, 254, 63,
+ 254, 3, 248, 15, 248, 63, 225, 254, 62, 15, 255, 7, 248, 15, 254, 63, 254, 3, 249, 143, 252, 31,
+ 193, 254, 63, 7, 255, 7, 248, 31, 254, 63, 252, 3, 249, 207, 252, 15, 131, 254, 63, 3, 255, 7,
+ 248, 31, 254, 63, 252, 99, 248, 143, 254, 0, 3, 254, 63, 129, 255, 7, 248, 31, 254, 63, 252, 99,
+ 248, 15, 254, 0, 7, 254, 63, 192, 255, 7, 248, 63, 254, 63, 252, 35, 248, 15, 255, 0, 15, 254, 63,
+ 224, 255, 7, 248, 63, 254, 63, 252, 3, 252, 31, 255, 128, 31, 254, 63, 240, 255, 135, 252, 63,
+ 254, 63, 254, 7, 254, 63, 255, 224, 127, 254, 63, 253, 255, 143, 252, 63, 254, 63, 254, 7, 255,
+ 255, 255, 255, 255, 255, 63, 255, 255, 255, 254, 127, 254, 63, 255, 31, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+]);
+
+function toImageData(bitmap: Uint8Array, width: number, height: number) {
+ const result = new ImageData(width, height);
+ for (let y = 0; y < height; y++) {
+ for (let x = 0; x < width; x++) {
+ const pixIndex = Math.floor((y * width + x) / 8);
+ const pixValue = bitmap[pixIndex] & (1 << (7 - (x % 8))) ? 0xff : 0;
+ const pixOffset = (y * width + x) * 4;
+ result.data.fill(pixValue, pixOffset, pixOffset + 3);
+ result.data[pixOffset + 3] = 0xff;
+ }
+ }
+ return result;
+}
+
+storiesOf('GLCD12864', module)
+ .addParameters({ component: 'wokwi-glcd-128x64' })
+ .add('Default', () => html`