1include <BOSL2/std.scad>
2
3module_padding = 0.3;
4module_rounding = 0.3;
5edge_padding = 4;
6edge_rounding = 4;
7resolution = 10;
8thickness = 0.5;
9
10// QR code data for "https://bit.ly/wbrick" (25 x 25)
11// Generated by Altair's OpenSCAD QR Code Generator
12// https://ridercz.github.io/OpenSCAD-QR/
13qr_data = [[1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1],
14 [1,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1],
15 [1,0,1,1,1,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,1,1,0,1],
16 [1,0,1,1,1,0,1,0,0,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,1],
17 [1,0,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1],
18 [1,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1],
19 [1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1],
20 [0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0],
21 [1,1,0,1,1,0,1,0,0,1,1,1,0,0,1,1,0,0,1,0,0,0,0,0,1],
22 [1,1,1,0,1,1,0,1,1,1,0,0,1,0,1,1,0,0,0,1,1,1,1,1,0],
23 [0,0,1,1,0,0,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,1,0,0,1],
24 [1,0,0,0,1,1,0,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1],
25 [0,1,0,0,1,0,1,0,1,1,0,1,1,0,0,0,1,0,1,1,0,0,0,0,1],
26 [1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,1,0,0,1,0],
27 [1,1,0,0,1,1,1,1,0,1,0,1,1,0,0,1,0,1,1,0,1,1,1,1,1],
28 [1,0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,1,0,1,1,0,1],
29 [1,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,1,1,1,1,1,0,1,1,0],
30 [0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0,1,0,1,1,0],
31 [1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,0,0,0,1],
32 [1,0,0,0,0,0,1,0,0,1,1,0,1,0,1,1,1,0,0,0,1,0,0,1,1],
33 [1,0,1,1,1,0,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1],
34 [1,0,1,1,1,0,1,0,1,1,0,0,0,0,1,0,1,0,1,0,0,0,0,1,1],
35 [1,0,1,1,1,0,1,0,0,1,0,0,1,0,1,0,1,1,0,0,1,1,1,1,1],
36 [1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,1],
37 [1,1,1,1,1,1,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,1]];
38
39// Render QR code with default settings (module 1x1x1)
40difference(){
41translate([-edge_padding/2,-edge_padding/2,0]) cuboid([len(qr_data)+edge_padding,len(qr_data)+edge_padding, thickness],anchor=BOTTOM+LEFT+FRONT,rounding=edge_rounding, edges=[LEFT+FRONT,LEFT+BACK,RIGHT+FRONT,RIGHT+BACK],$fn=resolution*25);
42qr_render(qr_data,height=thickness);
43}
44// QR code rendering method
45module qr_render(data, module_size = 1, height = 1) {
46 maxmod = len(data) - 1;
47 union() {
48 for(r = [0 : maxmod]) {
49 for(c = [0 : maxmod]) {
50 if(data[r][c] == 1){
51 xo = c * module_size;
52 yo = (maxmod - r) * module_size;
53 translate([xo+module_padding/2, yo+module_padding/2, 0]) cuboid([module_size-module_padding, module_size-module_padding, height],anchor=BOTTOM+LEFT+FRONT,rounding=module_rounding, edges=[LEFT+FRONT,LEFT+BACK,RIGHT+FRONT,RIGHT+BACK],$fn=resolution);
54 }
55 }
56 }
57 }
58}