machining porn machining porn machining porn machining porn!
I get so excited when people say they have a CNC. Please post pictures or videos of chips flying :D
Awesome! Another CNC thread!
This is good stuff, guys, keep it up!
swill's plate tool is a great asset (https://geekhack.org/index.php?topic=65189.0). You design your layout in the Keyboard Layout Editor (http://www.keyboard-layout-editor.com) and copy the raw data straight into it. It can export SVG, DXF or EPS format.
Nice renders! I will definitely be keeping up with this thread.
https://geekhack.org/index.php?topic=69582.0
Any of the posts in the first and second categories should be helpful with Teensy programming and keyboards.
Costar: From WASDKeyboards.com
Cherry: I think MechanicalKeyboards.com carries them now. They've been kinda hard to find previously.
Alps: From Matias
I like it.
Show Image(http://images.tapatalk-cdn.com/15/09/22/b4d2e32ec9672903579b449cb4fcf57e.jpg)
Just got done with test one. Holes too small cutting a new version as we speak. Or as I post rather
Thanks. It's acrylic at least for now.Show Image(http://images.tapatalk-cdn.com/15/09/22/b4d2e32ec9672903579b449cb4fcf57e.jpg)
Just got done with test one. Holes too small cutting a new version as we speak. Or as I post rather
Looks awesome. Nice job on the cuts.
Is that acrylic or polycarbonate?
Good work, how do the stabilizers fit?I'll let you know after I order them
I need suggestions for keycaps
https://geekhack.org/index.php?topic=69582.0
Any of the posts in the first and second categories should be helpful with Teensy programming and keyboards.
sweet i'll be thumbing through those shortly.
any info on where to buy stabilizers? they are apparently illusive for me
I would always recommend to coat the wood since its a gonna be used as a keyboard it's gonna get some oils and dust from constant use and without the coat will stick easier, making it harder to clean. Love that layout man, Logitech and Microsoft make some ergonomic keyboards that feel decent (for a rubber come that is ;D ) but they always include a ten key pad, it breaks the ergonomics since it make you reach longer for the mouse. Awesome work man, currently saving for an X-Carve, impatiently if I'm being honest :p
Looks amazing! If you had the keycaps before you started drilling you could've aligned the keys a bit better along the edges.Alignment looks fine to me.
Having helpers is awesome, I have a 12 y/o niece, what can I say she gives me some of the best critiques I can get, children are honest lol. Anyway will sure do, I'm still a long way to get an X-Carve though :( . Don't want to detour the topic a lot but I see you have a Makita Rotary tool instead of the one Inventables offer that integrates itself to the software, is it better? I can see it being more useful since you can take it away from the CNC use it for other projects.Following up in PM :)
Show Image(http://images.tapatalk-cdn.com/15/10/03/9e9c69c88ad2751562f46b3d8bb93925.jpg)
Well I got this far. Now I'm needing some help programming the teency. If anyone could give me a hand getting started that would be awesome.
Show Image(http://images.tapatalk-cdn.com/15/10/03/9e9c69c88ad2751562f46b3d8bb93925.jpg)
Well I got this far. Now I'm needing some help programming the teency. If anyone could give me a hand getting started that would be awesome.
This keyboard looks very nice. :D But to be able to help you, you need to tell us how the rows/columns are wired to the Teensy. (I hope you are using the 2.0 version, right?)
You can set any key to whatever function you want. Check out TMK firmware on GitHub. TMK's author, hasu, provides excellent help in the accompanying thread here on Geekhack.Show Image(http://images.tapatalk-cdn.com/15/10/03/9e9c69c88ad2751562f46b3d8bb93925.jpg)
Well I got this far. Now I'm needing some help programming the teency. If anyone could give me a hand getting started that would be awesome.
This keyboard looks very nice. :D But to be able to help you, you need to tell us how the rows/columns are wired to the Teensy. (I hope you are using the 2.0 version, right?)
I am 2.0. 17 columns, 6 rows. it will take me abit to get the exact keymapping sorted. but an example based on that would be helpful to get me off the ground. i'm assuming you can use modifiers (Function keys) in order to access different layers as well.
Awesome I'll check it out in afew. Been somewhat confused on the software to use etc.TMK is pretty much the de facto standard for custom AVR-based projects around here. It's stable, mature and well-supported.
i sware i'm not simple:
downloaded and installed CYGWIN, Flip, linux VM, make, TMK, mingw, gcc-arm. and for the life of me i can't make -f the phantom pjrc firmware. not sure whats up but here is the output
CODE:
$ make -f Makefile.pjrc
sh: dfu-programmer: command not found
sh: dfu-programmer: command not found
-------- begin --------
sh: avr-gcc: command not found
../../tmk_core/rules.mk:406: recipe for target 'gccversion' failed
make: *** [gccversion] Error 127
/CODE:
if i can get the program files to make -f then i can probably figure the rest out on my own and from reading the forums. but i guess i'm missing something. help?
i sware i'm not simple:
downloaded and installed CYGWIN, Flip, linux VM, make, TMK, mingw, gcc-arm. and for the life of me i can't make -f the phantom pjrc firmware. not sure whats up but here is the output
CODE:
$ make -f Makefile.pjrc
sh: dfu-programmer: command not found
sh: dfu-programmer: command not found
-------- begin --------
sh: avr-gcc: command not found
../../tmk_core/rules.mk:406: recipe for target 'gccversion' failed
make: *** [gccversion] Error 127
/CODE:
if i can get the program files to make -f then i can probably figure the rest out on my own and from reading the forums. but i guess i'm missing something. help?
Why did you downloaded gcc-arm? You need avr-gcc.
/* Copyright 2012 Jun Wako <wakojun@gmail.com>
*
* This is heavily based on phantom/board.{c|h}.
* https://github.com/BathroomEpiphanies/AVR-Keyboard
*
* Copyright (c) 2012 Fredrik Atmer, Bathroom Epiphanies Inc
* http://bathroomepiphanies.com
*
* As for liscensing consult with the original files or its author.
*/
#include <stdint.h>
#include <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "debug.h"
#include "util.h"
#include "matrix.h"
#ifndef DEBOUNCE
# define DEBOUNCE 0
#endif
static uint8_t debouncing = DEBOUNCE;
// bit array of key state(1:on, 0:off)
static matrix_row_t matrix[MATRIX_ROWS];
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
static uint8_t read_rows(void);
static void init_rows(void);
static void unselect_cols(void);
static void select_col(uint8_t col);
#ifndef SLEEP_LED_ENABLE
/* LEDs are on output compare pins OC1B OC1C
This activates fast PWM mode on them.
Prescaler 256 and 8-bit counter results in
16000000/256/256 = 244 Hz blink frequency.
LED_A: Caps Lock
LED_B: Scroll Lock */
/* Output on PWM pins are turned off when the timer
reaches the value in the output compare register,
and are turned on when it reaches TOP (=256). */
static
void setup_leds(void)
{
TCCR1A |= // Timer control register 1A
(1<<WGM10) | // Fast PWM 8-bit
(1<<COM1B1)| // Clear OC1B on match, set at TOP
(1<<COM1C1); // Clear OC1C on match, set at TOP
TCCR1B |= // Timer control register 1B
(1<<WGM12) | // Fast PWM 8-bit
(1<<CS12); // Prescaler 256
OCR1B = LED_BRIGHTNESS; // Output compare register 1B
OCR1C = LED_BRIGHTNESS; // Output compare register 1C
// LEDs: LED_A -> PORTB6, LED_B -> PORTB7
DDRB |= (1<<6) | (1<<7);
PORTB &= ~((1<<6) | (1<<7));
}
#endif
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
void matrix_init(void)
{
// To use PORTF disable JTAG with writing JTD bit twice within four cycles.
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
// initialize row and col
unselect_cols();
init_rows();
#ifndef SLEEP_LED_ENABLE
setup_leds();
#endif
// initialize matrix state: all keys off
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
matrix_debouncing[i] = 0;
}
}
uint8_t matrix_scan(void)
{
for (uint8_t col = 0; col < MATRIX_COLS; col++) { // 0-16
select_col(col);
_delay_us(3); // without this wait it won't read stable value.
uint8_t rows = read_rows();
for (uint8_t row = 0; row < MATRIX_ROWS; row++) { // 0-5
bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
bool curr_bit = rows & (1<<row);
if (prev_bit != curr_bit) {
matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
if (debouncing) {
dprint("bounce!: "); dprintf("%02X", debouncing); dprintln();
}
debouncing = DEBOUNCE;
}
}
unselect_cols();
}
if (debouncing) {
if (--debouncing) {
_delay_ms(1);
} else {
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
matrix[i] = matrix_debouncing[i];
}
}
}
return 1;
}
bool matrix_is_modified(void)
{
if (debouncing) return false;
return true;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & ((matrix_row_t)1<<col));
}
inline
matrix_row_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
void matrix_print(void)
{
print("\nr/c 0123456789ABCDEF\n");
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
xprintf("%02X: %032lb\n", row, bitrev32(matrix_get_row(row)));
}
}
uint8_t matrix_key_count(void)
{
uint8_t count = 0;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
count += bitpop32(matrix[i]);
}
return count;
}
/* Row pin configuration
* row: 0 1 2 3 4 5
* pin: F7 F6 F5 F4 F1 F0
*/
static void init_rows(void)
{
// Input with pull-up(DDR:0, PORT:1)
DDRB &= ~0b00111111;
PORTB |= 0b00111111;
}
static uint8_t read_rows(void)
{
return (PINF&(1<<7) ? 0 : (1<<0)) |
(PINB&(1<<6) ? 0 : (1<<1)) |
(PINB&(1<<5) ? 0 : (1<<2)) |
(PINB&(1<<4) ? 0 : (1<<3)) |
(PINB&(1<<1) ? 0 : (1<<4)) |
(PINB&(1<<0) ? 0 : (1<<5));
}
/* Column pin configuration
* col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
* pin: C7 C6 D3 D2 D5 D1 D0 B7 B3 B2 D6 B1 B0 D7 B4 B5 B6
*/
static void unselect_cols(void)
{
// Hi-Z(DDR:0, PORT:0) to unselect
DDRC |= 0b11000000; // PC: 7 6
PORTC |= 0b11000000;
DDRD |= 0b11111111; // PD: 7 6 5 4 3 2 1 0
PORTD |= 0b11111111;
DDRE |= 0b01000000; // PE: 6
PORTE |= 0b01000000;
DDRF |= 0b11110011; // PF: 7 6 5 4 1 0
PORTF |= 0b11110011;
}
static void select_col(uint8_t col)
{
// Output low(DDR:1, PORT:0) to select
switch (col) {
case 0:
DDRC |= (1<<7);
PORTC &= ~(1<<7);
break;
case 1
DDRC |= (1<<6);
PORTC &= ~(1<<6);
break;
case 2:
DDRD |= (1<<3);
PORTD &= ~(1<<3);
break;
case 3:
DDRD |= (1<<2);
PORTD &= ~(1<<2);
break;
case 4:
DDRD |= (1<<5);
PORTD &= ~(1<<5);
break;
case 5:
DDRD |= (1<<1);
PORTD &= ~(1<<1);
break;
case 6:
DDRD |= (1<<0);
PORTD &= ~(1<<0);
break;
case 7:
DDRB |= (1<<7);
PORTB &= ~(1<<7);
break;
case 8:
DDRB |= (1<<3);
PORTB &= ~(1<<3);
break;
case 9:
DDRB |= (1<<2);
PORTB &= ~(1<<2);
break;
case 10:
DDRD |= (1<<6);
PORTD &= ~(1<<6);
break;
case 11:
DDRB |= (1<<1);
PORTB &= ~(1<<1);
break;
case 12:
DDRB |= (1<<0);
PORTB &= ~(1<<0);
break;
case 13:
DDRD |= (1<<7);
PORTD &= ~(1<<7);
break;
case 14:
DDRB |= (1<<4);
PORTB &= ~(1<<4);
break;
case 15:
DDRB |= (1<<5);
PORTB &= ~(1<<5);
break;
case 16:
DDRB |= (1<<6);
PORTB &= ~(1<<6);
break;
}
}
You are missing a colon after the 1 on line 209.:thumb:
You are missing a colon after the 1 on line 209.:thumb:
thanks ive gotten to the point where i'm just over looking stuff for no reason :( maybe i need to give it a day and revisit it if i dont start making progress soon.
You are missing a colon after the 1 on line 209.:thumb:
thanks ive gotten to the point where i'm just over looking stuff for no reason :( maybe i need to give it a day and revisit it if i dont start making progress soon.
It's always easier to find bugs and typo's in someone else's code because you haven't been staring at it a long time.
You are missing a colon after the 1 on line 209.:thumb:
thanks ive gotten to the point where i'm just over looking stuff for no reason :( maybe i need to give it a day and revisit it if i dont start making progress soon.
It's always easier to find bugs and typo's in someone else's code because you haven't been staring at it a long time.
true but the error should have pointed me right there :/
at any rate. the board isn't registering any keystrokes now. not sure whats going on. i'll have to check out the matrix file and see what i can figure out. it should be almost the same as a phantom TKL which is what i'm basing this on. only difference is afew keys here and there.
case 1:
You are missing a colon after the 1 on line 209.:thumb:
thanks ive gotten to the point where i'm just over looking stuff for no reason :( maybe i need to give it a day and revisit it if i dont start making progress soon.
It's always easier to find bugs and typo's in someone else's code because you haven't been staring at it a long time.
true but the error should have pointed me right there :/
at any rate. the board isn't registering any keystrokes now. not sure whats going on. i'll have to check out the matrix file and see what i can figure out. it should be almost the same as a phantom TKL which is what i'm basing this on. only difference is afew keys here and there.
Are you using hid_listen for debugging?
You are missing a colon after the 1 on line 209.:thumb:
thanks ive gotten to the point where i'm just over looking stuff for no reason :( maybe i need to give it a day and revisit it if i dont start making progress soon.
It's always easier to find bugs and typo's in someone else's code because you haven't been staring at it a long time.
true but the error should have pointed me right there :/
at any rate. the board isn't registering any keystrokes now. not sure whats going on. i'll have to check out the matrix file and see what i can figure out. it should be almost the same as a phantom TKL which is what i'm basing this on. only difference is afew keys here and there.
Are you using hid_listen for debugging?
and why would a n00b like me be using a tool like that xD
thanks ;)
update: so the board is connecting then immediately disconnecting. going to restart and see if that makes any difference.
You are missing a colon after the 1 on line 209.:thumb:
thanks ive gotten to the point where i'm just over looking stuff for no reason :( maybe i need to give it a day and revisit it if i dont start making progress soon.
It's always easier to find bugs and typo's in someone else's code because you haven't been staring at it a long time.
true but the error should have pointed me right there :/
at any rate. the board isn't registering any keystrokes now. not sure whats going on. i'll have to check out the matrix file and see what i can figure out. it should be almost the same as a phantom TKL which is what i'm basing this on. only difference is afew keys here and there.
Are you using hid_listen for debugging?
and why would a n00b like me be using a tool like that xD
thanks ;)
update: so the board is connecting then immediately disconnecting. going to restart and see if that makes any difference.
That probably means the firmware is crashing right away for some reason.
static void init_rows(void)
{
// Input with pull-up(DDR:0, PORT:1)
DDRF |= 0b11110011; // PF: 7 6 5 4 1 0
PORTF |= 0b11110011;
}
static uint8_t read_rows(void)
{
return (PINF&(1<<7) ? 0 : (1<<0)) |
(PINF&(1<<6) ? 0 : (1<<1)) |
(PINF&(1<<5) ? 0 : (1<<2)) |
(PINF&(1<<4) ? 0 : (1<<3)) |
(PINF&(1<<1) ? 0 : (1<<4)) |
(PINF&(1<<0) ? 0 : (1<<5));
}
/* Column pin configuration
* col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
* pin: C7 C6 D3 D2 D5 D1 D0 B7 B3 B2 D6 B1 B0 D7 B4 B5 B6
*/
static void unselect_cols(void)
{
// Hi-Z(DDR:0, PORT:0) to unselect
DDRC |= 0b11000000; // PC: 7 6
PORTC |= 0b11000000;
DDRD |= 0b11111111; // PD: 7 6 5 4 3 2 1 0
PORTD |= 0b11111111;
DDRE |= 0b01000000; // PE: 6
DDRB &= ~0b00111111;
PORTE |= 0b01000000;
PORTB |= 0b00111111;
Odd i get returned key strokes when i use the default phantom files but when i use my custom ones nothing. keys from the phantom setup don't return proper key strokes for the keys pressed. which file and which section am i supposed to modify for my custom pinnout and keymap? also when making the hex file how should i indicate ansi? "make -f Makefile.pjrc ansi' ???
Odd i get returned key strokes when i use the default phantom files but when i use my custom ones nothing. keys from the phantom setup don't return proper key strokes for the keys pressed. which file and which section am i supposed to modify for my custom pinnout and keymap? also when making the hex file how should i indicate ansi? "make -f Makefile.pjrc ansi' ???
If the filename is keymap-ansi.c, then you want make KEYMAP=ansi
You'll probably get faster answers and more experts attention in the TMK thread.
I saw you posted in the TMK thread. Have you got it working now? I may be able to help with the firmware when I get home this weekend if you're still stuck.No not yet still messing with it