diff --git a/examples/pcf8591/index.html b/examples/pcf8591/index.html
new file mode 100755
index 0000000..9136381
--- /dev/null
+++ b/examples/pcf8591/index.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ i2c-PCF8591
+
+
+
+
+
+
+
+ PCF8591
+
+
+ initializing...
+
+ DAC Voltage (Range: 0V - 3.3V)
+ V
+
+
+
+
diff --git a/examples/pcf8591/main.js b/examples/pcf8591/main.js
new file mode 100644
index 0000000..f5b007a
--- /dev/null
+++ b/examples/pcf8591/main.js
@@ -0,0 +1,31 @@
+import PCF8591 from "https://unpkg.com/@chirimen/pcf8591?module";
+
+main();
+
+async function main() {
+ const adcDisplay = document.getElementById("adcDisplay");
+ const dacVoltage = document.getElementById("dacVoltage");
+ const i2cAccess = await navigator.requestI2CAccess();
+ const port = i2cAccess.ports.get(1);
+ const pcf8591 = new PCF8591(port, 0x48);
+ await pcf8591.init();
+ await pcf8591.setDAC(3.3);
+
+ //DAC control
+ document
+ .getElementById("dacSetButton")
+ .addEventListener("click", () => pcf8591.setDAC(dacVoltage.value));
+
+ while (true) {
+ let output = "";
+
+ // PCF8591 has 4 channels
+ for (let channel = 0; channel < 4; channel++) {
+ const voltage = await pcf8591.readADC(channel);
+ output += `CH${channel}: ${voltage.toFixed(3)}V
`;
+ }
+ adcDisplay.innerHTML = output;
+
+ await sleep(500);
+ }
+}
diff --git a/examples/pcf8591/package.json b/examples/pcf8591/package.json
new file mode 100644
index 0000000..a2cee61
--- /dev/null
+++ b/examples/pcf8591/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "i2c-pcf8591-example",
+ "version": "1.0.0",
+ "private": true
+}
diff --git a/examples/pcf8591/schematic.png b/examples/pcf8591/schematic.png
new file mode 100644
index 0000000..206b22a
Binary files /dev/null and b/examples/pcf8591/schematic.png differ
diff --git a/node-examples/pcf8591/main.js b/node-examples/pcf8591/main.js
new file mode 100644
index 0000000..4f051b1
--- /dev/null
+++ b/node-examples/pcf8591/main.js
@@ -0,0 +1,29 @@
+const { requestI2CAccess } = require("node-web-i2c");
+const PCF8591 = require("@chirimen/pcf8591");
+const { promisify } = require("util");
+const sleep = promisify(setTimeout);
+
+main();
+
+async function main() {
+ const i2cAccess = await requestI2CAccess();
+ const port = i2cAccess.ports.get(1);
+ const pcf8591 = new PCF8591(port, 0x48);
+ await pcf8591.init();
+
+ // Set DAC voltage (Range: 0V - 3.3V)
+ await pcf8591.setDAC(3.3);
+
+ while (true) {
+ let output = "";
+
+ // PCF8591 has 4 channels
+ for (let channel = 0; channel < 4; channel++) {
+ const voltage = await pcf8591.readADC(channel);
+ output += `CH${channel}:${voltage.toFixed(3)}V `;
+ }
+ console.log(output);
+
+ await sleep(500);
+ }
+}
diff --git a/node-examples/pcf8591/package.json b/node-examples/pcf8591/package.json
new file mode 100644
index 0000000..ac6630d
--- /dev/null
+++ b/node-examples/pcf8591/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "i2c-pcf8591-node-example",
+ "version": "1.0.0",
+ "private": true,
+ "dependencies": {
+ "@chirimen/pcf8591": "latest",
+ "node-web-i2c": "latest"
+ }
+}
diff --git a/node-examples/pcf8591/readme.md b/node-examples/pcf8591/readme.md
new file mode 100644
index 0000000..15b0e22
--- /dev/null
+++ b/node-examples/pcf8591/readme.md
@@ -0,0 +1,5 @@
+# PCF8591 8bit AD,DA コンバーター
+
+## 配線図
+
+
diff --git a/node-examples/pcf8591/schematic.png b/node-examples/pcf8591/schematic.png
new file mode 100644
index 0000000..206b22a
Binary files /dev/null and b/node-examples/pcf8591/schematic.png differ