ritaconscience
Full Member
Offline
Activity: 279
Merit: 109
reputation on reddit (for trades): bit.ly/3ja8HFK
|
|
October 27, 2019, 03:47:10 AM Last edit: October 27, 2019, 08:24:25 PM by ritaconscience |
|
I'm not going to be an artist (you can probably guess where I'm going after reading the rest of my entry) Here's my entry. I'm going to upload a video of it soon(because it also spins). (it looks like the forum isn't letting me post pictures) How did I do it? My oscilloscope has an X-Y feature, so I took a picture of the Bitcoin logo and resized it to 32x32. Then I built a simple 5-bit digital to analog converter out of a couple of resistors. Then, I took all the coordinates on my 32x32 picture and I had the Arduino send them to the DAC. Here's the code for it if you want to try it yourself. #define x1 12 #define x2 11 #define x4 10 #define x8 9 #define x16 8 #define y1 6 #define y2 5 #define y4 4 #define y8 3 #define y16 2 int spin(double deg, int orig){ return (int)(15.5+(orig-15.5)*sin(deg)); }
void drawCircle(double x){ int delayus = 20; int numPoints = 31; int xcoord[] = {0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,2 ,2 ,2 ,3 ,3 ,4 ,4 ,5 ,5 ,6 ,6 ,7 ,7 ,8 ,9 ,9 ,10,11,12,13,13,14,15}; int ycoord[] = {15,16,16,17,18,19,20,21,21,22,23,23,24,24,25,25,26,26,27,27,28,28,28,29,29,29,29,29,30,30,30}; for (int i = 0; i<numPoints; i++){ setXY(spin(x,xcoord[i]), ycoord[i]); delayMicroseconds(delayus); } for (int i = numPoints-1; i>=0; i--){ setXY(spin(x,31-xcoord[i]), ycoord[i]); delayMicroseconds(delayus); } for (int i = 0; i<numPoints; i++){ setXY(spin(x,31-xcoord[i]), 30-ycoord[i]); delayMicroseconds(delayus); } for (int i = numPoints-1; i>=0; i--){ setXY(spin(x,xcoord[i]), 30-ycoord[i]); delayMicroseconds(delayus); } } void drawBOuter(double x){
int delayus = 20; int numPoints = 100; int xcoord[] = {8 ,9 ,10,11,11,11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10 ,10,9 ,8 ,8 ,9 ,10,11,12,12,12,12,13,14,14,14,14,15,16,16,16,16,17,17,17, 17,18, 19, 19, 20,21,22,22,23,23,23,23,22,22,21,21,21,22,23,23,24,24,24,24,24,23,23,22,22,21,20,19,18,17,17,17,17,17,16,16,16,16,16,15,14,14,14,14,14,13,12,12,12,12,12,11,10,9,8}; int ycoord[] = {8 ,8 ,8 ,8 ,9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 20, 21,21,21,22,22,22,22,22,23,24,25,25,25,24,23,22,22,22,23,24,25,25,24,23, 22,22, 22, 21, 21,21,21,20,20,19,18,17,17,16,16,15,14,14,14,13,13,12,11,10,9 ,9 ,8 ,8 ,7 ,7 ,7 ,7 ,7 ,7 ,6 ,5 ,4 ,3 ,3 ,4 ,5 ,6 ,7 ,7 ,7 ,6 ,5 ,4 ,3 ,3 ,3 ,4 ,5 ,6 ,7 ,7 ,7 ,7,7}; for (int i = 0; i<numPoints; i++){ setXY(spin(x,xcoord[i]), ycoord[i]); delayMicroseconds(delayus); } } void drawBUpperInner(double x){ int delayus = 20; int numPoints = 22; int xcoord[] = {14,15,16,17,18,19, 19, 20,20 , 20, 20, 19, 19, 18 ,17,16,15,14,14,14,14,14}; int ycoord[] = {15,15,15,15,15,15, 16, 16, 17, 18, 19, 19, 20, 20, 20,20,20,20,19,18,17,16}; for (int i = 0; i<numPoints; i++){ setXY(spin(x,xcoord[i]), ycoord[i]); delayMicroseconds(delayus); } } void drawBLowerInner(double x){ int delayus = 20; int numPoints = 26; int xcoord[] = {14,15,16,17,18,19, 19, 20,20, 21, 21, 21, 21, 20, 19, 19, 18 ,17,16,15,14,14,14,14,14,14}; int ycoord[] = {8 ,8 ,8 ,8 ,8 ,8 , 9 , 9, 10, 10, 11, 12, 13, 13, 13, 14, 14, 14,14,14,14,13,12,11,10,9}; for (int i = 0; i<numPoints; i++){ setXY(spin(x,xcoord[i]), ycoord[i]); delayMicroseconds(delayus); } }
void setXY(int x, int y){ digitalWrite(x1, x%2); x=x>>1; digitalWrite(x2, x%2); x=x>>1; digitalWrite(x4, x%2); x=x>>1; digitalWrite(x8, x%2); x=x>>1; digitalWrite(x16, x%2); digitalWrite(y1, y%2); y=y>>1; digitalWrite(y2, y%2); y=y>>1; digitalWrite(y4, y%2); y=y>>1; digitalWrite(y8, y%2); y=y>>1; digitalWrite(y16, y%2); }
void setup() { pinMode(x1, OUTPUT); pinMode(x2, OUTPUT); pinMode(x4, OUTPUT); pinMode(x8, OUTPUT); pinMode(x16, OUTPUT); pinMode(y1, OUTPUT); pinMode(y2, OUTPUT); pinMode(y4, OUTPUT); pinMode(y8, OUTPUT); pinMode(y16, OUTPUT); } double x = 3.14/2; void loop() {
drawCircle(x);
drawBOuter(x);
drawBUpperInner(x);
drawBLowerInner(x);
x=x+0.03; } The circuit can be found here. It's basically two R2R ladders and an Arduino: Here's my bitcoin address: 3LGFCYRgpqsJXdUjvn5AHhvEetb726YrgL If this gets 10 merits I'm drawing more stuff. Edit: That was quick. What should I draw next? https://www.youtube.com/watch?v=FoGXVam3CNUHere's the video (it's not very good quality because I took it with my phone) Edit 2: I'll have the other drawing done this week. I'm back (as promised). Time for a little more programming and electronics. I increased the resolution by adding more resistors. Now it's 8-bit instead of 5-bit. Drawing all the lines manually would be almost impossible, so I made a program to help. Here it is: https://repl.it/repls/FirmRustySemicolonimport java.awt.*; import java.awt.image.*; import java.io.*; import javax.imageio.*; public class Main{
public static void main(String args[]){ String s = ""; String hex = "0123456789ABCDEF";
try {
//replace filename with image you want to open //Make sure image is 256x256 and black and white BufferedImage img = ImageIO.read(new File("qr.png")); for (int i=0; i<256; i++){ for(int j=0; j<64; j++){ String ans=""; for (int k=0; k<4;k++){ Color x = new Color(img.getRGB(j*4+k,i)); if (x.getBlue()>128){ ans=ans+"1"; } else{ ans=ans+"0"; } } s=s+hex.charAt(Integer.parseInt(ans,2));
} } File result = new File("result.txt"); result.delete(); result.createNewFile(); BufferedWriter writer = new BufferedWriter(new FileWriter("result.txt", true)); writer.write(s); writer.close(); System.out.print("DONE"); System.exit(0); } catch (IOException e) { e.printStackTrace(); }
} } This java code accepts any image that's black and white and 256x256. The threshold is set to 128, so pixels that are more black than white will be converted into just black and vice versa. (There are also image conversion tools that do this, like this: https://pinetools.com/threshold-image). It then makes a hexadecimal string which basically encodes the picture. The hexadecimal string is converted back into the picture by the Arduino. const char data [] PROGMEM = { "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000003FFFFFC07F80000001FFFFFE0003FC0000000000001FFFFFFFF80000000000003FFFFFC07F80000001FFFFFE0003FC0000000000001FFFFFFFF80000000000003FFFFFC07F80000001FFFFFE0003FC0000000000001FFFFFFFF80000000000003FFFFFC07F80000001FFFFFE0003FC0000000000001FFFFFFFF80000000000003FFFFFC07F80000001FFFFFE0003FC0000000000001FFFFFFFF80000000000003FFFFFC07F80000001FFFFFE0003FC0000000000001FFFFFFFF80000000000003FFFFFC07F80000001FFFFFE0003FC0000000000001FFFFFFFF80FFFFFFFFFE03FFFFFC07FFF800000FFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC07FC07FFF8000000001FFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC07FC07FFF8000000001FFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC07FC07FFF8000000001FFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC07FC07FFF8000000001FFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC07FC07FFF8000000001FFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC07FC07FFF8000000001FFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FE07FC07FFF8000000003FFFFFFFC07FFFFFFFFF01FFFFFFFF80FF800001FE03FFFFFFFFF8000FF01FFFE03FFFFFC07F800001FF01FFFFFFFF80FF000001FE03FFFFFFFFF8000FF01FFFE03FFFFFC07F800000FF01FFFFFFFF80FF000001FE03FFFFFFFFF8000FF01FFFE03FFFFFC07F800000FF01FFFFFFFF80FF000001FE03FFFFFFFFF8000FF01FFFE03FFFFFC07F800000FF01FFFFFFFF80FF000001FE03FFFFFFFFF8000FF01FFFE03FFFFFC07F800000FF01FFFFFFFF80FF000001FE03FFFFFFFFF8000FF01FFFE03FFFFFC07F800000FF01FFFFFFFF80FF000001FE03FFFFFFFFF8000FF01FFFE03FFFFFC07F800000FF01FFFFFFFF80FF000001FE03FFFFFFFFF807FFF01FFFFFFFFFFFC07F800000FF01FFFFFFFF80FF000001FE03FC000007F80FF8001FFFFFE03FFFC07F800000FF01FFFFFFFF80FF000001FE03FC000007F80FF8001FFFFFE03FFFC07F800000FF01FFFFFFFF80FF000001FE03FC000007F80FF8001FFFFFE03FFFC07F800000FF01FFFFFFFF80FF000001FE03FC000007F80FF8001FFFFFE03FFFC07F800000FF01FFFFFFFF80FF000001FE03FC000007F80FF8001FFFFFE03FFFC07F800000FF01FFFFFFFF80FF000001FE03FC000007F80FF8001FFFFFE03FFFC07F800000FF01FFFFFFFF80FF000001FE03FC000007F80FF8001FFFFFE03FFFC07F800000FF01FFFFFFFF80FF000001FE03FFFC07FFFFFFFFF00FFFFFC03FFFC07F800000FF01FFFFFFFF80FF000001FE03FFFC07FFFFFFFFF0001FE000003FC07F800000FF01FFFFFFFF80FF000001FE03FFFC07FFFFFFFFF0001FE000003FC07F800000FF01FFFFFFFF80FF000001FE03FFFC07FFFFFFFFF0001FE000003FC07F800000FF01FFFFFFFF80FF000001FE03FFFC07FFFFFFFFF0001FE000003FC07F800000FF01FFFFFFFF80FF000001FE03FFFC07FFFFFFFFF0001FE000003FC07F800000FF01FFFFFFFF80FF000001FE03FFFC07FFFFFFFFF0001FE000003FC07F800000FF01FFFFFFFF80FF000001FE03FFFC07FFFFFFFFF0001FE000007FC07F800000FF01FFFFFFFF80FFFFFFFFFE03FE0007FC000FFFFFFFFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC0007F8000FFFFFFFFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC0007F8000FFFFFFFFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC0007F8000FFFFFFFFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC0007F8000FFFFFFFFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC0007F8000FFFFFFFFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC0007F8000FFFFFFFFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80FFFFFFFFFE03FC03FFFFF80FFFFFFFFFFFFFFFFFC07FFFFFFFFF01FFFFFFFF80000000000003FC07FC07F80FF81FF01FE03FE03FC0000000000001FFFFFFFF80000000000003FC07FC07F80FF81FF01FE03FE03FC0000000000001FFFFFFFF80000000000003FC07FC07F80FF81FF01FE03FE03FC0000000000001FFFFFFFF80000000000003FC07FC07F80FF81FF01FE03FE03FC0000000000001FFFFFFFF80000000000003FC07FC07F80FF81FF01FE03FE03FC0000000000001FFFFFFFF80000000000003FC07FC07F80FF81FF01FE03FE03FC0000000000001FFFFFFFF80000000000003FC07FC07F80FF81FF01FE03FE03FC0000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFF807FFFFF81FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000FFFF81FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000FFFF81FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000FFFF81FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000FFFF81FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000FFFF81FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000FFFF81FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000FFFF81FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000003FE00000007F80FFFFFFFFFF03FE03FE07FC0FF80FF81FFFFFFFFFF8000000001FE00000007F80FFFFFFFFFF01FE03FC07FC07F80FF01FFFFFFFFFF8000000001FE00000007F80FFFFFFFFFF01FE03FC07FC07F80FF01FFFFFFFFFF8000000001FE00000007F80FFFFFFFFFF01FE03FC07FC07F80FF01FFFFFFFFFF8000000001FE00000007F80FFFFFFFFFF01FE03FC07FC07F80FF01FFFFFFFFFF8000000001FE00000007F80FFFFFFFFFF01FE03FC07FC07F80FF01FFFFFFFFFF8000000001FE00000007F80FFFFFFFFFF01FE03FC07FC07F80FF01FFFFFFFFFFFFFFFE00FFFFFC03FFFFFFFFFFFFFFFFFFFFFFFFFFFFC07F80FF01FFFFFFFFFFFFFFFF01FFFFFE03FFFC07F80000001FFFE03FE03FFFC00000FF01FFFFFFFFFFFFFFFF01FFFFFE03FFFC07F80000001FFFE03FE03FFFC00000FF01FFFFFFFFFFFFFFFF01FFFFFE03FFFC07F80000001FFFE03FE03FFFC00000FF01FFFFFFFFFFFFFFFF01FFFFFE03FFFC07F80000001FFFE03FE03FFFC00000FF01FFFFFFFFFFFFFFFF01FFFFFE03FFFC07F80000001FFFE03FE03FFFC00000FF01FFFFFFFFFFFFFFFF01FFFFFE03FFFC07F80000001FFFE03FE03FFFC00000FF01FFFFFFFFFFFFFFFF01FFFFFE03FFFC07F80000001FFFE03FE03FFFC00000FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07FFF800001FFFFFFFE03FFFFFFFFFFFFFFFFFFFFFFF800001FFFFFE03FC07FC07FFF800001FFFFFFFE000007FFFFF80FFFFFFFFFFFF800001FFFFFE03FC07FC07FFF800001FFFFFFFE000007FFFFF80FFFFFFFFFFFF800001FFFFFE03FC07FC07FFF800001FFFFFFFE000007FFFFF80FFFFFFFFFFFF800001FFFFFE03FC07FC07FFF800001FFFFFFFE000007FFFFF80FFFFFFFFFFFF800001FFFFFE03FC07FC07FFF800001FFFFFFFE000007FFFFF80FFFFFFFFFFFF800001FFFFFE03FC07FC07FFF800001FFFFFFFE000007FFFFF80FFFFFFFFFFFF800001FFFFFE03FE07FC07FFF800001FFFFFFFE000007FFFFF80FFFFFFFFFFFF80FF0001FF03FFFFFFFFFFFC000FF0003FFFFFFFC07FFFFF80FFFF01FFFFFFFF80FF0001FE03FFFFFFFFFFF8000FF0001FFFFFFFC07FFFFF80FFFF01FFFFFFFF80FF0001FE03FFFFFFFFFFF8000FF0001FFFFFFFC07FFFFF80FFFF01FFFFFFFF80FF0001FE03FFFFFFFFFFF8000FF0001FFFFFFFC07FFFFF80FFFF01FFFFFFFF80FF0001FE03FFFFFFFFFFF8000FF0001FFFFFFFC07FFFFF80FFFF01FFFFFFFF80FF0001FE03FFFFFFFFFFF8000FF0001FFFFFFFC07FFFFF80FFFF01FFFFFFFF80FF0001FE03FFFFFFFFFFF8000FF0001FFFFFFFC07FFFFF80FFFF01FFFFFFFF80FFFE01FE03FFFFFFFFFFF807FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000FF0000000000000007F80FF81FFFF03FFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FF0000000000000007F80FF81FFFF01FFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FF0000000000000007F80FF81FFFF01FFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FF0000000000000007F80FF81FFFF01FFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FF0000000000000007F80FF81FFFF01FFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FF0000000000000007F80FF81FFFF01FFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FF0000000000000007F80FF81FFFF01FFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFF0001FFFFFC0007FFFFFFFFFFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FF000001FFFFFC0007FFFFFFFFF0001FFFFFE000000000FFFF01FFFFFFFFFF80FF000001FFFFFC0007FFFFFFFFF0001FFFFFE000000000FFFF01FFFFFFFFFF80FF000001FFFFFC0007FFFFFFFFF0001FFFFFE000000000FFFF01FFFFFFFFFF80FF000001FFFFFC0007FFFFFFFFF0001FFFFFE000000000FFFF01FFFFFFFFFF80FF000001FFFFFC0007FFFFFFFFF0001FFFFFE000000000FFFF01FFFFFFFFFF80FF000001FFFFFC0007FFFFFFFFF0001FFFFFE000000000FFFF01FFFFFFFFFF80FF000001FFFFFC0007FFFFFFFFF0001FFFFFE000000000FFFF01FFFFFFFFFF807DFF0001FFFBFFFFFDFFFFEFFFF0001FFFFFE03FFFC07FFFFDFFFFFFFFFFFF8000FF0001FE03FFFFFC00000FFFF0001FFFFFE03FFFC07F8000FFFFFFFFFFFF8000FF0001FE03FFFFFC00000FFFF0001FFFFFE03FFFC07F8000FFFFFFFFFFFF8000FF0001FE03FFFFFC00000FFFF0001FFFFFE03FFFC07F8000FFFFFFFFFFFF8000FF0001FE03FFFFFC00000FFFF0001FFFFFE03FFFC07F8000FFFFFFFFFFFF8000FF0001FE03FFFFFC00000FFFF0001FFFFFE03FFFC07F8000FFFFFFFFFFFF8000FF0001FE03FFFFFC00000FFFF0001FFFFFE03FFFC07F8000FFFFFFFFFFFF807DFFFE01FFFFFFFFFC0007EFFFFFE01FFFFFE03FFFDEFF807DFFFFFFFFFFFF80FFFFFF01FFFE000000000FFFF81FF01FE03FE0007FFF8000FF01FFFFFFFFFF80FFFFFF01FFFE000000000FFFF81FF01FE03FE0007FFF8000FF01FFFFFFFFFF80FFFFFF01FFFE000000000FFFF81FF01FE03FE0007FFF8000FF01FFFFFFFFFF80FFFFFF01FFFE000000000FFFF81FF01FE03FE0007FFF8000FF01FFFFFFFFFF80FFFFFF01FFFE000000000FFFF81FF01FE03FE0007FFF8000FF01FFFFFFFFFF80FFFFFF01FFFE000000000FFFF81FF01FE03FE0007FFF8000FF01FFFFFFFFFF80FFFFFF01FFFE000000000FFFF81FF01FE03FE0007FFF8000FF01FFFFFFFFFF80FFFFFE01FFFFFC03FFF80FFFFFFFFFFFFFFFE03FFFFFFF80FFFFFFFFFFFFFF80000000000003FC07FFF80FFFFFF01FF01FFFE03FFFC07F80FFFF01FFFFFFFF80000000000003FC07FFF80FFFFFF01FF01FFFE03FFFC07F80FFFF01FFFFFFFF80000000000003FC07FFF80FFFFFF01FF01FFFE03FFFC07F80FFFF01FFFFFFFF80000000000003FC07FFF80FFFFFF01FF01FFFE03FFFC07F80FFFF01FFFFFFFF80000000000003FC07FFF80FFFFFF01FF01FFFE03FFFC07F80FFFF01FFFFFFFF80000000000003FC07FFF80FFFFFF01FF01FFFE03FFFC07F80FFFF01FFFFFFFF80000000000003FC07FFFC0FFFFFF01FF03FFFE03FFFC07F80FFFF01FFFFFFFF8000FFFF01FFFFFC03FFFFFFFFFFFFFFFFFFFFFFFFFFC07FFFFFFFFFFFFFFFFF8000FFFF01FFFE00000007F800001FF01FE0003FFFFFC000FF8001FFFFFFFFFF8000FFFF01FFFE00000007F800001FF01FE0003FFFFFC000FF8001FFFFFFFFFF8000FFFF01FFFE00000007F800001FF01FE0003FFFFFC000FF8001FFFFFFFFFF8000FFFF01FFFE00000007F800001FF01FE0003FFFFFC000FF8001FFFFFFFFFF8000FFFF01FFFE00000007F800001FF01FE0003FFFFFC000FF8001FFFFFFFFFF8000FFFF01FFFE00000007F800001FF01FE0003FFFFFC000FF8001FFFFFFFFFF8001FFFF03FFFE0000000FFC00000FF03FE0003FFFFFC000FF8001FFFFFFFFFF80FF01FFFFFE03FC0007FFFFF800001FF0003FFFFFFFC00000FFFFFFFFFFFFFF80FF01FFFFFE03FC0007FFFFF800001FF0003FFFFFFFC00000FFFFFFFFFFFFFF80FF01FFFFFE03FC0007FFFFF800001FF0003FFFFFFFC00000FFFFFFFFFFFFFF80FF01FFFFFE03FC0007FFFFF800001FF0003FFFFFFFC00000FFFFFFFFFFFFFF80FF01FFFFFE03FC0007FFFFF800001FF0003FFFFFFFC00000FFFFFFFFFFFFFF80FF01FFFFFE03FC0007FFFFF800001FF0003FFFFFFFC00000FFFFFFFFFFFFFF80FF01FFFFFE03FC0007FFFFF800001FF0003FFFFFFFC00000FFFFFFFFFFFFFF80FFFFFFFFFFFFFFFC07FFFFF80FFFFFFFE03FFFFFFFFF8000FFFFFFFFFFFFFF80FFFF000003FFFFFC07FFF8000FFFFFFFE000003FFFFF8000FFFF01FFFFFFFF80FFFF000003FFFFFC07FFF8000FFFFFFFE000003FFFFF8000FFFF01FFFFFFFF80FFFF000003FFFFFC07FFF8000FFFFFFFE000003FFFFF8000FFFF01FFFFFFFF80FFFF000003FFFFFC07FFF8000FFFFFFFE000003FFFFF8000FFFF01FFFFFFFF80FFFF000003FFFFFC07FFF8000FFFFFFFE000003FFFFF8000FFFF01FFFFFFFF80FFFF000003FFFFFC07FFF8000FFFFFFFE000003FFFFF8000FFFF01FFFFFFFF80FFFF000003FFFFFC07FFF8000FFFFFFFE000003FFFFF8000FFFF01FFFFFFFF80FFFFFF0001FFFFFFFFFFF80FFFFFFFFFE000003FFFFF8000FFFFFFFFFFFFFF80FF01FF00000003FFFFFFF80FF80000000000000000000000FF01FFFFFFFFFF80FF01FF00000003FFFFFFF80FF80000000000000000000000FF01FFFFFFFFFF80FF01FF00000003FFFFFFF80FF80000000000000000000000FF01FFFFFFFFFF80FF01FF00000003FFFFFFF80FF80000000000000000000000FF01FFFFFFFFFF80FF01FF00000003FFFFFFF80FF80000000000000000000000FF01FFFFFFFFFF80FF01FF00000003FFFFFFF80FF80000000000000000000000FF01FFFFFFFFFF80FF81FF00000007FFFFFFF80FF80000000000000000000000FF81FFFFFFFFFFFFFFFFFFFFFFFFFE07FC07FFFFFFFFF01FFFFFE03FFFFF80FFFFFF01FFFFFFFFFFFFFFFFFFFFFFFC07FC07FFFFFFFFF01FFFFFE03FFFFF80FFFFFF01FFFFFFFFFFFFFFFFFFFFFFFC07FC07FFFFFFFFF01FFFFFE03FFFFF80FFFFFF01FFFFFFFFFFFFFFFFFFFFFFFC07FC07FFFFFFFFF01FFFFFE03FFFFF80FFFFFF01FFFFFFFFFFFFFFFFFFFFFFFC07FC07FFFFFFFFF01FFFFFE03FFFFF80FFFFFF01FFFFFFFFFFFFFFFFFFFFFFFC07FC07FFFFFFFFF01FFFFFE03FFFFF80FFFFFF01FFFFFFFFFFFFFFFFFFFFFFFC07FC07FFFFFFFFF01FFFFFE03FFFFF80FFFFFF01FFFFFFFFFFFFFFFFFFFFFFFC03FC07FFFFFFFFF01FFFFFC03FFFFF80FFFFFFFFFFFFFFFF80000000000003FC000000000FFFF000001FE0003FC07F80FF8001FFFFFFFFFF80000000000003FC000000000FFFF000001FE0003FC07F80FF8001FFFFFFFFFF80000000000003FC000000000FFFF000001FE0003FC07F80FF8001FFFFFFFFFF80000000000003FC000000000FFFF000001FE0003FC07F80FF8001FFFFFFFFFF80000000000003FC000000000FFFF000001FE0003FC07F80FF8001FFFFFFFFFF80000000000003FC000000000FFFF000001FE0003FC07F80FF8001FFFFFFFFFF80000000000003FC000000000FFFF000001FE0003FC07F80FF8001FFFFFFFFFF80FFFFFFFFFE03FFFC000007FFFFF01FFFFFE0003FFFFF807FFF00FFFFFFFFFF80FFFFFFFFFE03FFFC00000FFFF8001FFFFFE0003FFFFF8000FF0001FFFFFFFF80FFFFFFFFFE03FFFC00000FFFF8001FFFFFE0003FFFFF8000FF0001FFFFFFFF80FFFFFFFFFE03FFFC00000FFFF8001FFFFFE0003FFFFF8000FF0001FFFFFFFF80FFFFFFFFFE03FFFC00000FFFF8001FFFFFE0003FFFFF8000FF0001FFFFFFFF80FFFFFFFFFE03FFFC00000FFFF8001FFFFFE0003FFFFF8000FF0001FFFFFFFF80FFFFFFFFFE03FFFC00000FFFF8001FFFFFE0003FFFFF8000FF0001FFFFFFFF80FFFFFFFFFE03FFFC00000FFFF8001FFFFFE0003FFFFF8000FF0001FFFFFFFF80FF000001FE03FE0000000FFFFFFFF000003FE000000000FF8001FFFFFFFFFF80FF000001FE03FC0000000FFFFFFFF000003FE000000000FF8001FFFFFFFFFF80FF000001FE03FC0000000FFFFFFFF000003FE000000000FF8001FFFFFFFFFF80FF000001FE03FC0000000FFFFFFFF000003FE000000000FF8001FFFFFFFFFF80FF000001FE03FC0000000FFFFFFFF000003FE000000000FF8001FFFFFFFFFF80FF000001FE03FC0000000FFFFFFFF000003FE000000000FF8001FFFFFFFFFF80FF000001FE03FC0000000FFFFFFFF000003FE000000000FF8001FFFFFFFFFF80FF000001FE03FC0003FFFFFFFFFFF01FFFFFE03FFF807FFFFF00FFFFFFFFFF80FF000001FE03FC0007FFF8000000001FFFFFE03FFFC07F80FF0001FFFFFFFF80FF000001FE03FC0007FFF8000000001FFFFFE03FFFC07F80FF0001FFFFFFFF80FF000001FE03FC0007FFF8000000001FFFFFE03FFFC07F80FF0001FFFFFFFF80FF000001FE03FC0007FFF8000000001FFFFFE03FFFC07F80FF0001FFFFFFFF80FF000001FE03FC0007FFF8000000001FFFFFE03FFFC07F80FF0001FFFFFFFF80FF000001FE03FC0007FFF8000000001FFFFFE03FFFC07F80FF0001FFFFFFFF80FF000001FE03FC0007FFF8000000001FFFFFE03FFFC07F80FF0001FFFFFFFF80FF000001FE03FC03FFFFFFF800001FFFFFFFFFFFFF807F00FF01FFFFFFFFFF80FF000001FE03FC07FFFFFFF800001FF000003FC0000000000001FFFFFFFFFF80FF000001FE03FC07FFFFFFF800001FF000003FC0000000000001FFFFFFFFFF80FF000001FE03FC07FFFFFFF800001FF000003FC0000000000001FFFFFFFFFF80FF000001FE03FC07FFFFFFF800001FF000003FC0000000000001FFFFFFFFFF80FF000001FE03FC07FFFFFFF800001FF000003FC0000000000001FFFFFFFFFF80FF000001FE03FC07FFFFFFF800001FF000003FC0000000000001FFFFFFFFFF80FF800001FE03FC07FFFFFFF800001FF000003FC0000000000001FFFFFFFFFF80FFFFFFFFFE03FC0007FFF8000FFFF01FE0000000007F8000FF01FFFFFFFFFF80FFFFFFFFFE03FC0007FFF8000FFFF01FE0000000007F8000FF01FFFFFFFFFF80FFFFFFFFFE03FC0007FFF8000FFFF01FE0000000007F8000FF01FFFFFFFFFF80FFFFFFFFFE03FC0007FFF8000FFFF01FE0000000007F8000FF01FFFFFFFFFF80FFFFFFFFFE03FC0007FFF8000FFFF01FE0000000007F8000FF01FFFFFFFFFF80FFFFFFFFFE03FC0007FFF8000FFFF01FE0000000007F8000FF01FFFFFFFFFF80FFFFFFFFFE03FC0007FFF8000FFFF01FE0000000007F8000FF01FFFFFFFFFF80FFFFFFFFFE03FC03FFFFF807FFFFF01FE0003FC0007F8000FFFFFFFFFFFFFF80000000000003FC07FFFFF80FF800000000003FC0007F800000FFFFFFFFFFFF80000000000003FC07FFFFF80FF800000000003FC0007F800000FFFFFFFFFFFF80000000000003FC07FFFFF80FF800000000003FC0007F800000FFFFFFFFFFFF80000000000003FC07FFFFF80FF800000000003FC0007F800000FFFFFFFFFFFF80000000000003FC07FFFFF80FF800000000003FC0007F800000FFFFFFFFFFFF80000000000003FC07FFFFF80FF800000000003FC0007F800000FFFFFFFFFFFF80000000000003FC07FFFFF80FF800000000003FC0007F800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }; String d = "0123456789ABCDEF";
void setXY(int x, int y){ PORTF=(byte)x; PORTK=(byte)y; //Serial.println(String((byte)x)+" "+String((byte)y)); delayMicroseconds(10); PORTF=B0; PORTK=B0;}
void setup() { //Serial.begin(9600); DDRF=B11111111; DDRK=B11111111;} void loop() { for (int i = 0; i<16384; i++){ char dchar=pgm_read_byte_near(data+i); int e = d.indexOf(dchar); if (e/8==1){ setXY((i%64)*4,i/64); } e=e%8; if(e/4==1){ setXY((i%64)*4+1, i/64); } e=e%4; if(e/2==1){ setXY((i%64)*4+2, i/64); } e=e%2; if(e==1){ setXY((i%64)*4+3, i/64); } }} There's a few bugs that I have to iron out when I have more time. The conversion somehow rotates the picture, so if you want it to look perfect, try rotating the image clockwise before using this tool. I haven't tested this extensively, don't be surprised if your picture gets destroyed somehow. To test it out, I had it display my bitcoin QR code, and I tried to see if my camera could scan it. It actually scanned! (You might have to fiddle with the oscilloscope controls a little bit.) Video: https://youtu.be/c5NYTdSe8nESome pictures: (You should be able to change the code so it works with arduino nano/uno) As for art, I'm going to try it with a few bitcoin-related pictures soon. Suggestions welcome. Edit: A much better quality bitcoin (compared to the first one I made which has 64x less resolution) Code to make the picture above: const char data [] PROGMEM = { "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8007FFFFFFFFE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00FFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00FFFF000000FFFF803FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFF8000000001FFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF807FF000000000000FFE01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE01FF8001FFFFFF8000FFC03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80FF8007FF6070FFE001FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE03FC00FFB079E05FFF003FE03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81FE00FEF37F9DEDFC3F007F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE07F007FE73079DEDFB9FE00FE03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81FC03FBE713F9C0DF9FF7C03F81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE07F01F7BE213F9DEDFC3F0F80FE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81FC07B79ECD83FDEC1F9E77F01F81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07F03C133E4FFFFFFF909E367C07E07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0FC0F9D87FFF007C00FC3E86CF01F83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83F039BDF7FFC0000003FFEF6E1C0FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FC0E181F78380000001C1E04E4F03F07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1F03CCC0FC000003C000003CDEF9C0F83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83E0FDEDFE001E00FF0078007DEF0707E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0F81CDC4FC003FFFFFFFFC007FCE7381F07FFFFFFFFFFFFFFFFFFFFFFFFFFFFC1F071C37F8007FFC003FFE001FDEFFE0FC3FFFFFFFFFFFFFFFFFFFFFFFFFFFF87C0E1CFC0007F80000001FE0007CFC383E0FFFFFFFFFFFFFFFFFFFFFFFFFFFF0F83BDEF0077F00FFFFFF00FEE00E7D9C1F07FFFFFFFFFFFFFFFFFFFFFFFFFFC1F067EFC01FF03FF0000FF81FF8031BEF0783FFFFFFFFFFFFFFFFFFFFFFFFFF83C1CFE7001F83F80000001FC1F800DBEF83E1FFFFFFFFFFFFFFFFFFFFFFFFFF0F8399FF007C1F01FFFFFF00F83E00FBEDC1F0FFFFFFFFFFFFFFFFFFFFFFFFFE1F0F93FE01E0F03FE00007FC0F0F80FCD9F0F87FFFFFFFFFFFFFFFFFFFFFFFFC3E1CCE7C078783F000FE000FC1E1E03E13383C3FFFFFFFFFFFFFFFFFFFFFFFF87C3E69809E3C1F01FFFFFF80F8387903F63C1E1FFFFFFFFFFFFFFFFFFFFFFFF0F07F2303F8F0F03FC00003FC0F0F1FC0ECBE0F0FFFFFFFFFFFFFFFFFFFFFFFE1E0C03C07E38783F003FFC00FC1E3C7E079B38787FFFFFFFFFFFFFFFFFFFFFFC3C1E418078E1C1F03FFFFFFC0F87871E01BA7C3C3FFFFFFFFFFFFFFFFFFFFFF8787F7F00E38F0F07F800001FC0F0E1C700F8FE1E1FFFFFFFFFFFFFFFFFFFFFF0F0C13C03CE3C783E007FFE00FC1C38E3C0793F0F0FFFFFFFFFFFFFFFFFFFFFE1E19C9C0718F1E1E03FFFFFFC0F878E38E039318787FFFFFFFFFFFFFFFFFFFFC3C3BEFC1E71C70F07F000000FE0F0E38E703FCCC3C3FFFFFFFFFFFFFFFFFFFFC787BEF838C71C783E01FFFF807C1C38E31C1FDEE1E1FFFFFFFFFFFFFFFFFFFF878FBCF3F39C71E1E07FFC0FFE07870E318F8F9E70F1FFFFFFFFFFFFFFFFFFFF0F0DD907C631C70F07FFF8000FE0F1C39C67E19EF878FFFFFFFFFFFFFFFFFFFE1E1C620F8CE31C383E7FF3FFC07C3C71C631F04CDC787FFFFFFFFFFFFFFFFFFC3C3C3C07318E70E1E03FE7C3FE07871C7398E031BE3C3FFFFFFFFFFFFFFFFFFC787E980E6338C38F079FCF8007E0F1C718C6701F761E1FFFFFFFFFFFFFFFFFF870FEF01CCE638E383FCF9F3FC07C3C718E63380CC30F1FFFFFFFFFFFFFFFFFF0F1C0603998CE38E1E3E73E71FE07871C63399C0599870FFFFFFFFFFFFFFFFFF1E3E44063339CE38F01F378E007E0E1C6318CCE073CC787FFFFFFFFFFFFFFFFE3C3F3C0C666318E3C3CFB71CFE07C38738CE6670326E3C7FFFFFFFFFFFFFFFFC387F9C198CCE738E1FE7B679EFF078E18C6333387B3E1E3FFFFFFFFFFFFFFFFC78FFFC331998463870F3B6F3803E1E38E731999C3DBB0E1FFFFFFFFFFFFFFFF8F18FF9F230301C21C279B6E73E03C38E318CCCCF9E738F1FFFFFFFFFFFFFFFF0E1A3C3E4C06011071F3DB6CE7FF070E39CC60667CFCFC78FFFFFFFFFFFFFFFF1E36183CC8000000C0F9DB69CF83E1E38C6330333C39EC387FFFFFFFFFFFFFFE3C64D83998000001107CDB699F303C38E73990199C1BE63C7FFFFFFFFFFFFFFE3865903330020100403E5B693C7F0F0E719CC80CCC0FE61C3FFFFFFFFFFFFFFC78F1206664060601819E5B6939E3E1C31CC6640666079B1E3FFFFFFFFFFFFFF8709C40CCCC0CCC2307CE5B6933C03C71C673321327073B8F1FFFFFFFFFFFFFF8F1C6C1C9999999CE03E65B69279F0F1C63199919B303FF871FFFFFFFFFFFFFF0E3F3819B33333318C1F25B69273FE1C739CCCC0C9981F9C78FFFFFFFFFFFFFF1E3F98332666666738CF25B692E7C38718C666666CCC1E0C38FFFFFFFFFFFFFE1C7F98766CCCCCCC63E725B692CF90F1CE733303264C1C763C7FFFFFFFFFFFFE387FB864C9999998C7F325B692DF3E3C6319998133661F731C7FFFFFFFFFFFFC38DF73CD9B3333339CF925B692DE7F8E398CCC8199339F331E3FFFFFFFFFFFFC70C773D93266666630FD25B692DCF8E380000640CD93CF878E3FFFFFFFFFFFF871E1E793664CC80CE67D25B692D9F038E000030064D9E79F8F1FFFFFFFFFFFF8E1E487366CD998008F3D25B692DBE78E30000980264DE139C71FFFFFFFFFFFF8E3F70724C99330000F9D25B692DBCFE311FF8C90B364E1E3C71FFFFFFFFFFFF1E3F3066C9B3671F007CD25B692DB9FB9C1FF8648993660CFC38FFFFFFFFFFFF1C60206C9B264F1FF87ED25B692DB3F1C61FF8266C99260DFE38FFFFFFFFFFFE3C71E0C9B26CDF1FFC7ED25B692DA7C4733FF8B026C9B304FE1C7FFFFFFFFFFE38FC40D926C99F3FFC7ED25B692DA78F381FF890326C9306FF1C7FFFFFFFFFFE38FF41936C9B373FFC7ED25B692DA71F8E1FF8C81B26D9824F1C3FFFFFFFFFFC70FFC1B64DB3673FFC7ED25B692DA67FE73FF86049B64983CF8E3FFFFFFFFFFC71FF8326D936473FFC7ED25B692DA647031FF8300D936CC1F98E3FFFFFFFFFFC719F83649364C63FFC7ED25B692DA4820B1FF8B004DB24C1C08F3FFFFFFFFFF8E32FC64DB24D963FFC7ED25B692DA4820B1FF8981649B6C39EC71FFFFFFFFFF8E361CE4926D9363FFC7ED25B692DA4820B3FF8CC136D92739EC71FFFFFFFFFF9E3639EDB649B763FFC7ED25B692DA4820B1FF86C9B249B79DEC79FFFFFFFFFF1E66F9C926DB2763FFC7E1248492424C7091FF820C9B6D939DCE38FFFFFFFFFF1C61F3DB6C936F63FFC00000000000000001FF9A06D92493CE1E38FFFFFFFFFF1C7863926DB64F63FFC00000000000000003FF891249B6DBC7FE3CFFFFFFFFFE3CFF41924926DF63FFFFFFFFFFFFFFFFFFFFFF8C036D924983C31C7FFFFFFFFE38DFC1B6DB649F63FFFFFFFFFFFFFFFFFFFFFF840924924D831B1C7FFFFFFFFE38D2C324936D0C23FFFFFFFFFFFFFFFFFFFFFF8601B6DB6D834B1C7FFFFFFFFE3896832492490C03FFFFFFFFFFFFFFFFFFFFFF8205924924C1691C7FFFFFFFFC71B6836DB6DB0C03FFFFFFFFFFFFFFFFFFFFFF9B04924924C16D8E3FFFFFFFFC7184834924930C03FFFFFFFFFFFFFFFFFFFFFF9926DB6DB6C13F8E3FFFFFFFFC71E1864924930C03FFFFFFFFFFFFFFFFFFFFFF9DB649249241BF8E3FFFFFFFFC71FF06DB6C000003FFFFFFFFFFFFFFFFFFFFFF800001249260E18E3FFFFFFFFC718F06DB68000007FFFFFFFFFFFFFFFFFFFFFF800000B6DA60CCC73FFFFFFFF8E36784924800000FFFFFFFFFFFFFFFFFFFFFFF80000096DB619EC71FFFFFFFF8E3779C92583FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8124979DEC71FFFFFFFF8E3679CB6DE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8324939DEC71FFFFFFFF8E36FBDB6C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8FB6939DFC71FFFFFFFF8E307BDB4C03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8036DBDFFC71FFFFFFFF8E7E33D24FE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8076DB8F0679FFFFFFFF9C73E1924003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8FF25B860638FFFFFFFF1C61E192E003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80024906B638FFFFFFFF1C6CE196FFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8FFE49869638FFFFFFFF1C6CC1B6C003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8FFF49869638FFFFFFFF1C6CC1B68003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80036986F638FFFFFFFF1C6DC1B6800000007FFC00000007FE0000003FF8000000CB6D83FE38FFFFFFFF1C6041B4909000007FFC00000007FC0000003FF000000AE96D83E638FFFFFFFF1C7FC1A4801249247FFC00000007FC0000003FF0000018616D820238FFFFFFFF1C71C1A4801A496C7FFC0013F867FC0041F93FF1A496D0416D83E638FFFFFFFF1CE0C1A4801A496C7FFC02DBF867FC02DBF93FF1A496D0412D83CF38FFFFFFFF1CDE632480124B6C7FFC02DBF967FC00DBF93FF1B492D0412DC79F38FFFFFFFF1CDF672480124B6C7FFC02DA0867FC00DB093FF1B492D0412DEF3F38FFFFFFFF1CDF672480124B6C7FFC02D80067FC02DA013FF1B492D0412DEE0338FFFFFFFF1CCE6724801000007FFCCED80067FC46D8013FF1A49258432DEFFF38FFFFFFFF1CE0E724FFF000007FFCEE180067FC6E18013FF000000FFF2DEFFB38FFFFFFFF1CFFE324FFF000007FFCEE1A0067FC6E1A093FF800000FFF2DC7FB38FFFFFFFF1CFFC124C003FFFFFFFC6E1BF967FC6F1BF93FFFFFFF80432D83F338FFFFFFFF1CDF41A48003FFFFFFFC6E1BD867FC6F1A083FFFFFFF80012D830338FFFFFFFF1CDF41A49FE3FFFFFFFC6E1A0047FC6F18003FFFFFFF8FF96D83FA38FFFFFFFF1C4F41A49003FFFFFFFC6E180047FE6F1C003FFFFFFF80196D83FA38FFFFFFFF1C4F41B493E3FFFFFFFC6E180047FE6F1E003FFFFFFF800B6D83FE38FFFFFFFF1C6041B693E3FFFFFFFE661E0147FE271E087FFFFFFF8FDB6D823E38FFFFFFFF1C7FC1B69203FFFFFFFE661FF947FE371FF87FFFFFFF80DB69830638FFFFFFFF1C7FC1B6D263FFFFFFFE633FF84FFE331FF07FFFFFFF80DB4987B638FFFFFFFF1C7FE196DA63FFFFFFFE23FE004FFF39E0F07FFFFFFF8EDA49873638FFFFFFFF1C7FE192DB63FFFFFFFE30FC000FFF1CC044FFFFFFFF86D249863638FFFFFFFF1C7FE1925B6000007FFE3600020FFF1E0008FFF8000004925B86B638FFFFFFFF1C6D33D2496000003FFF37FE061FFF8FC078FFF000000492DBDF8639FFFFFFFF9C6DBBDB492480003FFF13FE0E1FFF8FE0F1FFF0000004B6DBDFFE71FFFFFFFF8E25BBDB6D2493403FFF1BFFFC1FFFC7FFF1FFF126496DB6939C3C71FFFFFFFF8E35B9CB6DB693403FFF99FE0C1FFFC3FFE3FFF106DB6DA4939E0C71FFFFFFFF8E3438C92DB6DB003FFF8DFE003FFFE1FFC7FFF106924924971E6C71FFFFFFFF8E30F049249249003FFF8C00003FFFF0FF0FFFF10492492DB60EEC71FFFFFFFF8E3FF06DB49249811FFFC704047FFFF8101FFFF101B6DB6DB60EEC71FFFFFFFFCE3C106DB6DB6D931FFFE3FE0C7FFFFC003FFFF1F926DB49261848E3FFFFFFFFC7193064924924931FFFE3FFF8FFFFFF00FFFFF3F9249249241E08E3FFFFFFFFC71F7824924926C39FFFF1FFF1FFFFFFFFFFFFF3FB6DB6DB6C1FF8E3FFFFFFFFC71E7836DB6DB6438FFFF87FE1FFFFFFFFFFFFE3F24936D26C1078E3FFFFFFFFC71EF832492492238FFFFC1F03FFFFFFFFFFFFE3F6D924924C3318E3FFFFFFFFE38C0C324924DA038FFFFE000FFFFFFFFFFFFFE3E49B6DB6D837F1C7FFFFFFFFE38C7C1B6DB6C813CFFFFF801FFFFFFFFFFFFFE7ED9249A4D837F1C7FFFFFFFFE38FE43924924D0FC7FFFFFBFFFFFFFFFFFFFFC7C9B6C9249827F1C7FFFFFFFFE38E0E3924DB648FC7FFFFFFFFFFFFFFFFFFFFC7DB24DB6DBC7FF3C7FFFFFFFFF3C6FF3DB6C92687E7FFFFFFFFFFFFFFFFFFFFC7926C9249BDE7E38FFFFFFFFFF1C7FF9C924DB247E3FFFFFFFFFFFFFFFFFFFF8F3649B6C939F0E38FFFFFFFFFF1C6DF9CDB6C9367E3FFFFFFFFFFFFFFFFFFFF8F64D9249B79DE638FFFFFFFFFF1E24F86D926D837F3FFFFFFFFFFF3FFFFFFFF1E4D936C9263CFC71FFFFFFFFFF8E36F864DB64813F1FFFFFFFFFFE1FFFFFFFF1CD9B649B6C18EC71FFFFFFFFFF8E321836C936019F9FFFFFFFFFFE1FFFFFFFE3D9326D924C1A6C71FFFFFFFFFFCF1878324D9240DF8FFFFFFFFFFE0FFFFFFFE3B326C936C81B48F3FFFFFFFFFFC71BF81B649B004FCFFFFFFFFFFE07FFFFFFC7366C9B24D83718E3FFFFFFFFFFC71FFC1926C98067C7FFFFFFFFFC43FFFFFF8E64C9B26D983F91E3FFFFFFFFFFC38FFC0DB26C9133E3FFFFFFFFFC61FFFFFF1CCD9B36C9B073B1C7FFFFFFFFFFE38FE60C9B66C199E3FFFFFFFFF8F07FFFFC399932649B3060F1C7FFFFFFFFFFE3878206D93264CCF1FFFFFFFFF0FC1FFFF87333664D9360CA63C7FFFFFFFFFFF1C71B064D93066678FFFFFFFFF1FE01FF80E6664CD93660DB638FFFFFFFFFFFF1C3490F64D90333387FFFFFFFE3FF800003CCCCC99364E192478FFFFFFFFFFFF0E36FC7364C81999C3FFFFFFFC7FFF0001F99999B364DE7F6C71FFFFFFFFFFFF8E32FE7936680C8CE1FFFFFFF0FFFFF81FF33333264C9EFBC871FFFFFFFFFFFF8F18FF39932406C670FFFFFFE1FFFFFFFFE666666CD9BCF0F8E1FFFFFFFFFFFFC71F870C99B20233383FFFFF83C463FFFF9CCCCCC99331E670E3FFFFFFFFFFFFC78E3706CC9913199E0FFFFC078001FFFF3999999B3261EF31C3FFFFFFFFFFFFE38E9B0664CC89CCC701FFC01F800000FC6733333266C0EF21C7FFFFFFFFFFFFE3C6DB0336664CE673C00000FF000000F1CC6666664CC1EF6387FFFFFFFFFFFFF1C34F819330663318F00007FE000000C318CCCCCC9983E2C38FFFFFFFFFFFFFF1E30FC1D9903399CE7F81FFFC8003FF00739999999303E1C70FFFFFFFFFFFFFF8E1B8C0CCC818CCE71FFFFFF9FFFFFC00C43330333607C78F1FFFFFFFFFFFFFF8F1E36066600C6631C7FFFFF3FFFFF08180646026660F2F0E1FFFFFFFFFFFFFFC78E930736403339C73FFFFE7FFFF86002088400CCC0F1F1E3FFFFFFFFFFFFFFC386DF079320198C739FF1FCFFFF83C08802090199E1F4E1C7FFFFFFFFFFFFFFE3C64F87D990C4E719CFE1F9FFE01F003004120333C3EE63C7FFFFFFFFFFFFFFE1C30FF3CCC842318CE7E1F30003F078E0882606679FCEC78FFFFFFFFFFFFFFFF1E1BFF9E667019CE673E1E67FFF83C3C4380C0CEF9FCD870FFFFFFFFFFFFFFFF8F1FF7C333180C67339E1CCFFC03E0E1C631999DC3E618F1FFFFFFFFFFFFFFFF870FFBC199C80E3399CE199F007F07871CE6333B83D3F1E3FFFFFFFFFFFFFFFFC787FDC0CCE41F99CCE6033E7FF03E3C718CE6770399E1C3FFFFFFFFFFFFFFFFE3C78CC066331FCCE6720678F803F0F1C739CCCE0736C3C7FFFFFFFFFFFFFFFFE1E300E03319CFE6733806F1E0FF07871C63199C0FECC78FFFFFFFFFFFFFFFFFF0E19FF018CC5FF3399D06E7CFE03E1C71CE73381EF98F0FFFFFFFFFFFFFFFFFF8F0CF180E671FF99CCDB6CF9E03E0F1E318C670387B0E1FFFFFFFFFFFFFFFFFF8786CCC0F31BFFCCE4926DE3C7F07878E719CF073361E3FFFFFFFFFFFFFFFFFFC3C7DE60F98FFFE6740005CF9E03E1E38C739F0F61C3C3FFFFFFFFFFFFFFFFFFE1C39F707C67FFF33400059E3C7E0F0E38C63E1FCD8787FFFFFFFFFFFFFFFFFFF1E1DF7E3E31FFF9B40001BC79E07C78E39CE8FDD90F0FFFFFFFFFFFFFFFFFFFF8F0CEFF039C7FF9B00001B9E387E1E38E31C1FCF31E1FFFFFFFFFFFFFFFFFFFF87861FF81C63FFDB00001B3CF3E0F0E18E703FE661E3FFFFFFFFFFFFFFFFFFFFC3C3FFF80F38FFDB00001B79E787878718E03C13C3C3FFFFFFFFFFFFFFFFFFFFE1E1FFFC038E3FDB00001B73CF3C1E1C73807F3B8787FFFFFFFFFFFFFFFFFFFFF0F0FC1E01E38FDB00001B679E70F0F1C700FF730F0FFFFFFFFFFFFFFFFFFFFFF8787D1F00F8E3DB00001B6E38E7C3C71E01FF6E1E1FFFFFFFFFFFFFFFFFFFFFFC3C3BDFC0FC38DB00001B6C73CE1E1C7E07FF183C3FFFFFFFFFFFFFFFFFFFFFFE1E1FCC607F0CDB00001B6DE79CF871FC0F7FF0787FFFFFFFFFFFFFFFFFFFFFFF0F07D93813C1DB00001B6DCF3CC3C798BF3FE0F0FFFFFFFFFFFFFFFFFFFFFFFF8783939F80FBDB00001B6D9E7C1E1E03FFBFC3E1FFFFFFFFFFFFFFFFFFFFFFFFC3C1F7DFC07FDB00001B6DBCFEF87C07E7DB87C3FFFFFFFFFFFFFFFFFFFFFFFFE1F0F7DBC00FDB40001B6DB9FFC3E00783C70F87FFFFFFFFFFFFFFFFFFFFFFFFF0F83399E007DB40005B6DB3FC1FC00F39CC1F0FFFFFFFFFFFFFFFFFFFFFFFFFF87C1831F803DB40005B6DB7C0FF803F7DB83C1FFFFFFFFFFFFFFFFFFFFFFFFFFC1E0EE0BE03DB4924DB6DB40FFF00FF7DE0F83FFFFFFFFFFFFFFFFFFFFFFFFFFE0F83CE3F87DB6DB6DB6DB4FF8003FF39C1F0FFFFFFFFFFFFFFFFFFFFFFFFFFFF07C1E779EFDB6DB6DB6DB4FC00FFEF8303E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFC3F0727BFFDB6DB6DB6DB4E003FFCFCE0F83FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0F81CF3FFDB6DB6DB6DB4C003FF37F81F07FFFFFFFFFFFFFFFFFFFFFFFFFFFFF07E0FB7F3DB6DB4D34DB4000F8677F07C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1F0387F7DB6DB45105B7E07E36F7C1F83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FC0E3F7DB6DB45105B7F7E3E24703F07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03F03BE7DB6DB45105B7FF898B1C0FC1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1F80FEFDB6DB45105B7FDF9F9F03F03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE07E03E7DB6DB45105B7CCC1E3C0FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81F80FFDB6DB45105B7E0DD8E03F81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE07F01FDB6DB45105B7C6F8F80FE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81FC03DB6DB4514DB7DEC3C03F81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07F001B6DB6DB6DB7D8FE00FE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01FE0036DB6DB6DB7C3F007F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07FC006DB6DB6DB7FF003FC07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF8001B6DB6DB7E001FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC03FF00004DB6DA0000FF807FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF807FF000000000000FFE01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00FFF8000000001FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00FFFF000000FFFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFF001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0007FFFFFFFFE001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }; String d = "0123456789ABCDEF";
void setXY(int x, int y){ PORTF=(byte)x; PORTK=(byte)y; //Serial.println(String((byte)x)+" "+String((byte)y)); delayMicroseconds(10); PORTF=B0; PORTK=B0;}
void setup() { //Serial.begin(9600); DDRF=B11111111; DDRK=B11111111;} void loop() { for (int i = 0; i<16384; i++){ char dchar=pgm_read_byte_near(data+i); int e = d.indexOf(dchar); if (e/8==1){ setXY((i%64)*4,i/64); } e=e%8; if(e/4==1){ setXY((i%64)*4+1, i/64); } e=e%4; if(e/2==1){ setXY((i%64)*4+2, i/64); } e=e%2; if(e==1){ setXY((i%64)*4+3, i/64); } }} My bitcoin address (which should be scannable):
|