From 98cf0a42d2614dd2726542e8ce941e94a894a18e Mon Sep 17 00:00:00 2001 From: n loewen Date: Wed, 9 Aug 2023 18:06:34 +0100 Subject: [PATCH] Initial commit --- .gitignore | 2 ++ diagram.jpg | Bin 0 -> 34699 bytes example--fill-display-program.txt | 1 + readme.md | 44 ++++++++++++++++++++++++++ square-wave-from-binary.js | 51 ++++++++++++++++++++++++++++++ 5 files changed, 98 insertions(+) create mode 100644 .gitignore create mode 100644 diagram.jpg create mode 100644 example--fill-display-program.txt create mode 100644 readme.md create mode 100644 square-wave-from-binary.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d0ee45 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.vscode +.DS_Store \ No newline at end of file diff --git a/diagram.jpg b/diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f295c6c0d947f4603983e7b595cea2d39b2399dc GIT binary patch literal 34699 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 E06t5j;{X5v literal 0 HcmV?d00001 diff --git a/example--fill-display-program.txt b/example--fill-display-program.txt new file mode 100644 index 0000000..2f66a26 --- /dev/null +++ b/example--fill-display-program.txt @@ -0,0 +1 @@ +0000001111111110000001010000000100000101000000010000010100000001000001110000000100000111000000010000001100000001000000010000000000000011111111100000011000000000000001100000000000000110000000000000100000000000000010000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..55206d6 --- /dev/null +++ b/readme.md @@ -0,0 +1,44 @@ +# Create square wave patterns from binary strings + +This script turns a binary string into a square-wave pattern. + +It is intended for creating embroidery patterns based on programs for my paper computer. + +The output is formatted as if the data is being sent over an 8-bit data bus — see the [reference image below](#format-reference-image). + +## Use + +``` +./square-wave-from-binary.js bin.txt +``` + +The input must be a text file containing nothing but 0s and 1s (no spaces, newlines, etc). It must be an even number of 8-bit bytes in length. + +## Example output + +``` +01234567 01234567 01234567 01234567 +▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ + +▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ + +▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ + +▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ + +▄▀▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▀▄▄▄▄▄▄ ▀▄▀▄▄▄▄▄ + +▄▀▀▄▀▄▀▄ ▀▄▀▄▄▄▄▄ ▄▀▀▄▀▄▀▄ ▄▄▄▄▄▄▄▄ + +▀▀▄▄▄▄▄▄ ▀▄▀▄▀▄▄▄ ▀▀▀▄▀▄▀▄ ▄▄▄▄▄▄▄▄ + +▀▄▀▀▀▀▀▀ ▀▀▀▀▀▀▀▄ ▀▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ + +01234567 01234567 01234567 01234567 +``` + +## Format reference image + +![](https://www.nutsvolts.com/uploads/wygwam/NV_1007_Martin_Figure09.jpg) + +(From [Nuts and Volts](https://www.nutsvolts.com/uploads/wygwam/NV_1007_Martin_Figure09.jpg).) diff --git a/square-wave-from-binary.js b/square-wave-from-binary.js new file mode 100644 index 0000000..c4817f9 --- /dev/null +++ b/square-wave-from-binary.js @@ -0,0 +1,51 @@ +#!/usr/bin/env node + +// Input file must contain a binary string with no spaces, linebreaks, etc. + +const fs = require('fs'); +const filename = process.argv[2]; +const inputFile_str = fs.readFileSync(filename, 'utf8'); + +const create_square_wave_string = (s) => { + s = s.replace(/1/g, '▀'); + return s = s.replace(/0/g, '▄'); +} + +const number_hex_string = (quantity) => { + let output = ''; + let current_digit = 0; + for (let i = 0; i < quantity; i++) { + current_digit = i % 8; + output = output + current_digit; + } + return output; +} + +const binary_string_to_bus_strings = (input) => { + let output = ['','','','','','','','']; + let input_bytes = input.match(/.{1,8}/g); + + input_bytes.forEach( (byte) => { + let byte_array = byte.split(''); + for (let i = 0; i < 8; i++) { + output[i] = output[i] + byte_array[i]; + } + }); + + + // Print output + let nums = number_hex_string(output[0].length); + let spaced_nums = nums.match(/.{1,8}/g).join(' '); + console.log(); + console.log(spaced_nums); + + output.forEach( (s) => { + let spaced = s.match(/.{1,8}/g).join(' '); + console.log(create_square_wave_string(spaced)); + console.log(); + }); + console.log(spaced_nums); + console.log(); +} + +binary_string_to_bus_strings(inputFile_str); \ No newline at end of file