-$fn = 100;
-
-include <wheel-dimensions.scad>
-use <qr.scad>
-
-module mounting_screw_flat() {
- circle(0.9); }
-
-module motor_shaft_flat(radius, flat_width) {
- intersection() {
- circle(radius);
- square([flat_width, radius * 2], center = true); } }
-
-module motor_shaft(radius,
- flat_width,
- shaft_length) {
- linear_extrude(height = shaft_length) {
- motor_shaft_flat(radius, flat_width); } }
-
-module rim(radius, wall_width, wheel_width) {
- linear_extrude(height = wheel_width) {
- difference() {
- circle(radius);
- circle(radius - wall_width); } } }
-
-module motor_shaft_holder_flat(radius, flat_width, wall_width) {
- difference() {
- motor_shaft_flat(radius + wall_width,
- flat_width + wall_width);
- motor_shaft_flat(radius, flat_width); } }
-
-module motor_shaft_holder(radius, flat_width, wall_width, height) {
- linear_extrude(height = height) {
- motor_shaft_holder_flat(radius, flat_width, wall_width); } }
-
-module tread(wheel_radius, tread_radius) {
- rotate_extrude(convexity = 10) {
- translate([wheel_radius, 0]) {
- circle(tread_radius); } } }
-
-module wheel_black(radius,
- width,
- shaft_radius,
- shaft_flat_width,
- wall_width,
- tread_radius) {
- color("black") {
- difference() {
- rim(radius, wall_width, width);
- translate([0, 0, width / 2]) {
- tread(radius, tread_radius); } }
- linear_extrude(height = qr_height) {
- difference() {
- qr_black_flat();
- mounting_screw_flat(); } }
- translate([0, 0, qr_height]) {
- motor_shaft_holder(shaft_radius,
- shaft_flat_width,
- wall_width,
- width - qr_height); } } }