Compare commits

...

6 Commits

4 changed files with 191 additions and 74 deletions

View File

@ -25,7 +25,9 @@
// Rotary Encoder Parameters
#define ROT_PULSE_COUNT 12
#define ROT_WHEEL_RAD 12
#define ROT_DETENTS 24
#define ROT_WHEEL_RAD 13.875
//#define ROT_REVERSE
// Input masks
#define BUTTON_V 0x01
@ -39,7 +41,7 @@
#define INPUT_MASK (BUTTON_M | ENCODER_M)
// Event queue macros
#define MAX_EVENT_COUNT 16
#define MAX_EVENT_COUNT 64
#define PTR_INC(x) ((x) = events + ((((x) - events) + 1) % MAX_EVENT_COUNT))
enum event_e
@ -66,6 +68,7 @@ uint8_t *event_write = events;
uint32_t ms = 0;
#ifdef ROT_REVERSE
const uint8_t PROGMEM rot_table[16] =
{
EVENT_NONE, EVENT_ROT_CCW, EVENT_ROT_CW, EVENT_NONE,
@ -73,6 +76,15 @@ const uint8_t PROGMEM rot_table[16] =
EVENT_ROT_CCW, EVENT_NONE, EVENT_NONE, EVENT_ROT_CW,
EVENT_NONE, EVENT_ROT_CW, EVENT_ROT_CCW, EVENT_NONE
};
#else
const uint8_t PROGMEM rot_table[16] =
{
EVENT_NONE, EVENT_ROT_CW, EVENT_ROT_CCW, EVENT_NONE,
EVENT_ROT_CCW, EVENT_NONE, EVENT_NONE, EVENT_ROT_CW,
EVENT_ROT_CW, EVENT_NONE, EVENT_NONE, EVENT_ROT_CCW,
EVENT_NONE, EVENT_ROT_CCW, EVENT_ROT_CW, EVENT_NONE
};
#endif
const uint8_t PROGMEM unfold_table[16] =
{
@ -297,21 +309,10 @@ int main()
}
}
if (rot_value / 2 != 0)
if (rot_value / (ROT_PULSE_COUNT * 4 / ROT_DETENTS) != 0)
{
int8_t rot_abs;
int8_t adjust;
rot_abs = rot_value;
adjust = 1;
if (rot_value < 0)
{
rot_abs = -rot_abs;
adjust = -1;
}
rot_value -= (rot_abs * adjust);
count_value_fine += (rot_coeff * adjust * rot_abs);
count_value_fine += rot_coeff * rot_value;
rot_value = 0;
if (count_value_fine < 0)
{
@ -340,7 +341,7 @@ int main()
}
count_value = (uint32_t) count_value_fine;
if (0 != sleep_when_ms)
if ((0 != sleep_when_ms) && (sleep_when_ms > ms))
{
needs_update = 1;
}
@ -360,6 +361,7 @@ int main()
{
display_enable(0);
do_sleep();
sleep_when_ms = 1;
}
// STATE_COUNTING
@ -604,7 +606,19 @@ void display_init()
void display_enable(uint8_t en)
{
display_send_cmd(0xAE | (en & 0x01));
static uint8_t old_state = 1;
if (en != 0)
{
en = 1;
}
if (en != old_state)
{
display_send_cmd(0xAE | (en & 0x01));
}
old_state = en;
}
void get_symbol16(uint8_t index, uint8_t *out)
@ -925,8 +939,8 @@ void write_eeprom_val(uint16_t idx, uint32_t value, uint8_t dir)
void do_sleep()
{
// Disable clock to Timer1, USI, ADC
PRR |= (1 << PRTIM1) | (1 << PRUSI) | (1 << PRADC);
// Disable clock to USI, ADC
PRR |= (1 << PRUSI) | (1 << PRADC);
// Enable sleep
MCUCR |= (1 << SE);
@ -936,14 +950,14 @@ void do_sleep()
// Reset ms counter
cli();
ms = 0;
ms = 2;
sei();
// Disable sleep
MCUCR &= ~(1 << SE);
// Enable clock to Timer1, USI, ADC
PRR &= ~((1 << PRTIM1) | (1 << PRUSI) | (1 << PRADC));
// Enable clock to USI, ADC
PRR &= ~((1 << PRUSI) | (1 << PRADC));
}
void update_display(uint32_t value, uint32_t highlight, uint8_t dir, uint8_t dir_highlight)

View File

@ -1,11 +1,15 @@
x_size = 75;
y_size = 40;
z_size = 6;
z_size = 9;
pcb_x = 70;
pcb_y = 35;
wall_size = 1;
hole_rad = 2;
filament_x = 10;
hole_rad = 1.5;
filament_x = 57.5 - pcb_x/2 - 13 - 1;
filament_size = 2;
difference()
{
union()
{
difference()
@ -19,17 +23,12 @@ union()
cube([x_size - 2 * wall_size, y_size - 2 * wall_size, z_size], center = true);
}
// Fillament Hole
translate([filament_x, 0, wall_size])
{
cube([filament_size, y_size + 1, z_size], center = true);
}
}
// Hole Mounts
for (i = [-1:1:1])
// Bottom Hole Mounts
for (i = [-1:2:1])
{
translate([i * 32, ((i == 0) ? 1 : 0) * 29 - 14.5, 0])
translate([i * (pcb_x/2 - 3) - 1, -(pcb_y/2 - 3) - 1, -0.5])
{
difference()
{
@ -42,22 +41,62 @@ union()
}
}
// Bearing Mount
translate([3, 0, 0])
{
cylinder(z_size, 2, 2, $fn = 360, center = true);
}
// Left Walls for fillament
for (i = [-1:2:1])
{
translate([filament_x + i * ((filament_size + wall_size) / 2), 0, 0])
// Top Hole Mount
translate([(41 - pcb_x/2) - 1, pcb_y/2 - 3 - 1, -0.5])
difference()
{
difference()
cylinder(z_size - 1, hole_rad + 1, hole_rad + 1, $fn = 360, center = true);
translate([0, 0, wall_size])
{
cube([wall_size, y_size, z_size - 1], center = true);
cube([wall_size + 1, 5.625 + i * 0.875, z_size], center = true);
cylinder(z_size - 1, hole_rad, hole_rad, $fn = 360, center = true);
}
}
// Fillament Block
translate([filament_x, 0, -0.5])
{
difference()
{
cube([filament_size + wall_size * 2, y_size, z_size - 1], center = true);
translate([13, pcb_y/2 - 12.5 - 1, 0])
{
cylinder(z_size, 13.5, 13.5, $fn = 360, center = true);
}
}
}
}
// Bottom Holes
for (i = [-1:2:1])
{
translate([i * (pcb_x/2 - 3) - 1, -(pcb_y/2 - 3) - 1, -z_size/2 + 1])
{
cylinder(2, 2.8, hole_rad, $fn = 360, center = true);
}
}
// Top Hole
translate([(41 - pcb_x/2) - 1, pcb_y / 2 - 3 - 1, -z_size/2 + 1])
{
cylinder(2, 2.8, hole_rad, $fn = 360, center = true);
}
// Filament Hole
translate([filament_x, 0, -0.5])
{
rotate([90, 0, 0])
{
cylinder(y_size + 1, filament_size/2, filament_size/2, $fn = 360, center = true);
}
}
// Temp
*translate([-x_size/2, y_size/5, 0])
{
cube([x_size, y_size, z_size], center = true);
}
*translate([x_size/1.5, y_size/5, 0])
{
cube([x_size, y_size, z_size], center = true);
}
}

69
openscad/Front.scad Normal file
View File

@ -0,0 +1,69 @@
x_size = 75;
y_size = 40;
z_size = 13;
pcb_x = 70;
pcb_y = 35;
wall_size = 1;
hole_rad = 2;
screen_x = 30;
screen_y = 12;
union()
{
difference()
{
// Main
cube([x_size, y_size, z_size], center = true);
// Hollow
translate([0, 0, wall_size])
{
cube([x_size - 2 * wall_size, y_size - 2 * wall_size, z_size], center = true);
}
// Display Cutout
translate([pcb_x/2 - screen_x/2 + 1 - 5, pcb_y/2 - screen_y/2 - 1, 0])
{
cube([screen_x, screen_y, z_size + 1], center = true);
}
// Button Cutout
translate([-16 + 1, -12.5 - 1, 0])
{
cube([8, 8, z_size + 1], center = true);
}
// Switch Cutout
translate([0 + 1, -y_size/2 + wall_size/2, z_size/2 - 6/2])
{
cube([5, wall_size * 2, 6], center = true);
}
}
// Bottom Hole Mounts
for (i = [-1:2:1])
{
translate([i * (pcb_x/2 - 3) + 1, -(pcb_y/2 - 3) - 1, 0])
{
difference()
{
cylinder(z_size, hole_rad + 1, hole_rad + 1, $fn = 360, center = true);
translate([0, 0, wall_size])
{
cylinder(z_size, hole_rad, hole_rad, $fn = 360, center = true);
}
}
}
}
// Top Hole Mount
translate([-((41 - pcb_x/2)) + 1, pcb_y/2 - 3 - 1, 0])
difference()
{
cylinder(z_size, hole_rad + 1, hole_rad + 1, $fn = 360, center = true);
translate([0, 0, wall_size])
{
cylinder(z_size, hole_rad, hole_rad, $fn = 360, center = true);
}
}
}

View File

@ -1,25 +1,20 @@
seg = 360;
seg2 = 60;
outer = 12;
height = 5;
height = 6;
rad = 1;
dist = 1.5;
dist = 4;
rotate_extrude($fn = seg)
difference()
{
square([outer, height]);
translate([0, 1.5, 0])
translate([0, height - 3.5, 0])
{
square([10.5, height]);
square([10.5, 3.5]);
}
translate([12, height/2 + dist, 0])
{
circle(rad, $fn = seg);
}
translate([12, height/2 - dist, 0])
translate([outer, height - dist, 0])
{
circle(rad, $fn = seg);
}