Add files via upload

This commit is contained in:
Charles Mangin 2023-06-29 16:55:59 -04:00 committed by GitHub
parent d70b4c865a
commit fb69c3a108
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 55062 additions and 0 deletions

View File

@ -0,0 +1,986 @@
/*
Octave Note
C C# D D# E F F# G G# A A# B
0 0 1 2 3 4 5 6 7 8 9 10 11
1 12 13 14 15 16 17 18 19 20 21 22 23
2 24 25 26 27 28 29 30 31 32 33 34 35
3 36 37 38 39 40 41 42 43 44 45 46 47
4 48 49 50 51 52 53 54 55 56 57 58 59
5 60 61 62 63 64 65 66 67 68 69 70 71
6 72 73 74 75 76 77 78 79 80 81 82 83
7 84 85 86 87 88 89 90 91 92 93 94 95
8 96 97 98 99 100 101 102 103 104 105 106 107
9 108 109 110 111 112 113 114 115 116 117 118 119
10 120 121 122 123 124 125 126 127
A2.DMS
C C# D D# E F F# G G# A A# B
48 z s x d c v g b h n j m
60 , l . ; /
ESC TAB 1 q
60 w 3 e 4 r t 6 y 7 u 8 i
72 o 0 p - [ ] DEL \
in A2DMS "w" is the same note as ","
IIe keyboard matrix
XO X1 X2 X3 | X4 X5 X6 X7
------------------------------------+--------------------------------
YO ESC TAB A Z | / ) * ESC
|
Y1 1! Q D X | DOWN UP LEFT RIGHT
|
Y2 20 W S C | 0 4 8 (
|
Y3 34 E H V | 1 5 9 -
|
Y4 4$ R F B | 2 6 . RETURN
|
Y5 6" Y G N | 3 7 + ,
+----------------------------------
Y6 5% T J M \| `~ RETURN DELETE
Y7 7& U K ,< += P UP DOWN
Y8 8* I ;: .> 0) [{ SPACE LEFT
Y9 9( O L /? -_ ]} '" RIGHT
IIe Col/Row
1 Y0
2 Y1
3 +5V
4 Y2
5 SW1/SAPL*
6 Y3
7 SW0/OAPL*
8 Y4
9 CAPLOCK*
10 Y5
11 CNTL*
12 Y8
13 GND
14 X0
15 RESET*
16 X2
17 X7
18 X1
19 X5
20 X3
21 X4
22 Y9
23 Y6
24 SHFT*
25 Y7
26 X6
*/
#define HWSERIAL Serial1
// change on MIDI channel 1-8 = DMS, 9 = drum
int MIDI_CHANNEL = 1;
/*
1 - piano
2 - Bass
3 - Banjo
4 - Guitar
5 - Clarinet
6 - Trumpet
7 - Square Wave
8 - Sawtooth
9 - switch to "drum" mode for DMS Drummer
*/
boolean SERIAL_MODE = true ;
// serial or keyboard control?
int ledPin = 11; //teensy status LED
int EXIT_PIN = 12; // press for "X" to return to keyboard control.
int ENABLE_PIN = 0;
int S0_PIN = 3;
int S1_PIN = 4;
int S2_PIN = 2;
int S3_PIN = 1;
// 4051 pins
int S0_4051 = 5;
int S1_4051 = 6;
int S2_4051 = 7;
int SHIFT_PIN = 14;
int CONTROL_PIN = 15;
int OPEN_APPLE_PIN = 8;
int CLOSED_APPLE_PIN = 16;
int CAPS_LOCK_PIN = 17;
int RESET_PIN = 1;
int r0;
int r1;
int r2;
int c0;
int c1;
int c2;
int c3;
int count= 0;
int CAPS_LOCK_ACTIVE = 0;
const int COLUMNS = 8;
const int ROWS = 10;
uint32_t next_time;
int octave = 3; // W key == MIDI 60 == middle C
int RangeC = 48; // initial range is 1 octave down (_C)
int RangeG = 79; // to 1.5 octaves up (^G)
volatile int CURRENT_NOTE; // store the currently playing note, to check if it's ending.
volatile long NOTE_OFF_TIMER;
int NOTE_OFF_INTERVAL = 5;
// note integer to QWERTY translation
int KEYS_ARRAY[ROWS][COLUMNS] = {
{ 56, 57, -1, 48, 64, -1, -1, 56 },
{ 58, 59, 51, 50, -1, -1, -1, -1 },
{ -1, 60, 49, 52, 73, 63, 70, -1 },
{ 61, 62, 56, 53, 58, -1, -1, 75 },
{ 63, 64, -1, 55, -1, 66, 62, -1 },
{ 66, 67, 54, 57, 61, 68, -1, 60 },
{ -1, 65, 58, 59, 79, -1, -1, 78 },
{ 68, 69, -1, 60, -1, 74, -1, -1 },
{ 70, 71, 63, 62, 73, 76, -1, -1 },
{ -1, 72, 61, 64, 75, 77, -1, -1 }
};
/*
A2.DMS
C C# D D# E F F# G G# A A# B
48 z s x d c v g b h n j m 59
60 , l . ; /
ESC TAB 1 q 59
60 w 3 e 4 r t 6 y 7 u 8 i 71
72 o 0 p - [ ] DEL \
*/
int CONTROLS_ARRAY[ROWS][COLUMNS] = {
{ -1, -1, -1, -1, -1, -1, -1, -1 },
{ 49, -1, -1, 50, -1, -1, -1, -1 },
{ 50, -1, -1, -1, -1, -1, -1, -1 },
{ 51, -1, -1, -1, -1, -1, -1, -1 },
{ 52, -1, -1, -1, -1, -1, -1, -1 },
{ 54, -1, -1, -1, -1, -1, -1, -1 },
{ 53, -1, -1, -1, -1, -1, -1, -1 },
{ 55, -1, 107, -1, -1, -1, 48, 57 },
{ 56, -1, -1, -1, -1, -1, -1, -1 },
{ -1, -1, -1, -1, -1, -1, -1, -1 }
};
// Shift 0 - 8 = instrument change,
// shift + 9 = down octave
// shift + 0 = up octave
int DRUMKIT_ARRAY[ROWS][COLUMNS] = {
{ -1, -1, 60, 48, -1, -1, -1, -1 },
{ 84, 72, 64, 50, -1, -1, -1, -1 },
{ 86, 74, 62, 52, -1, -1, -1, -1 },
{ 88, 76, 69, 53, -1, -1, -1, -1 },
{ 89, 77, 65, 55, -1, -1, -1, -1 },
{ 93, 81, 67, 57, -1, -1, -1, -1 },
{ 91, 79, 71, 59, -1, -1, -1, -1 },
{ 95, 83, 61, 49, -1, -1, -1, -1 },
{ 85, 73, -1, -1, -1, -1, -1, -1 },
{ -1, -1, -1, -1, -1, -1, -1, -1 }
};
/* DMS DRUMMER
Kick Laser Rimshot Clap Snare Tom Closed Hat Open Hat
C C# D D# E F F# G G# A A# B
48 z , x c v b n m 59
60 a k s d f g h j 71
72 q i w e r t y u 83
84 1 8 2 3 4 5 6 7 95
XO X1 X2 X3 | X4 X5 X6 X7
------------------------------------+--------------------------------
YO ESC TAB A Z | / ) * ESC
|
Y1 1! Q D X | DOWN UP LEFT RIGHT
|
Y2 20 W S C | 0 4 8 (
|
Y3 34 E H V | 1 5 9 -
|
Y4 4$ R F B | 2 6 . RETURN
|
Y5 6" Y G N | 3 7 + ,
+----------------------------------
Y6 5% T J M \| `~ RETURN DELETE
Y7 7& U K ,< += P UP DOWN
Y8 8* I ;: .> 0) [{ SPACE LEFT
Y9 9( O L /? -_ ]} '" RIGHT
*/
int KEYMAP[81]= { 0x00,
0x21,0x40,0x23,0x24,0x25,0x5e,0x26,0x2a,0x0B,0x0A,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7a, 0x73, 0x78, 0x64, 0x63, 0x76, 0x67, 0x62, 0x68, 0x6e, 0x6a, 0x6d,
0x77, 0x33, 0x65, 0x34, 0x72, 0x74, 0x36, 0x79, 0x37, 0x75, 0x38, 0x69,
0x6f, 0x30, 0x70, 0x2d, 0x5b, 0x5d, 0x7f, 0x5c };
int DRUMMAP[96]= { 0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7A, 0x2C, 0x78, 0x00, 0x63, 0x76, 0x00, 0x62, 0x00, 0x6E, 0x00, 0x6D,
0x61, 0x6B, 0x73, 0x00, 0x64, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x6A,
0x71, 0x69, 0x77, 0x00, 0x65, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x75,
0x31, 0x38, 0x32, 0x00, 0x33, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37 };
// read MIDI
/*
specials:
KEYMAP[9] = 0x0A = down arrow
KEYMAP[10] = 0x0B = up arrow
*/
void OnNoteOn(byte channel, byte note, byte velocity)
{
CURRENT_NOTE = note;
if(SERIAL_MODE) {
NOTE_OFF_TIMER = 0;
}
digitalWrite(ledPin, HIGH);
digitalWrite(SHIFT_PIN, HIGH);
if(channel != MIDI_CHANNEL) { // switched channels
Serial.print("Channel: ");
Serial.println(channel);
MIDI_CHANNEL = channel;
if(SERIAL_MODE) {
HWSERIAL.write(char(KEYMAP[channel]));
Serial.println(char(KEYMAP[channel]));
} else {
sendControl(channel + 48);
}
}
Serial.print("DN ");
Serial.println(note);
// Serial.println(note);
/*
note returns as integer 0 to 127
lookup note in A2.DMS keymap - returns column/row
"top" octave
0 24 - 35
1 36 - 47
2 48 - 59
3 60 - 71
4 72 - 83
5 84 - 95
bottom C to top G:
0 12 - 43
1 24 - 55
2 36 - 67
3 48 - 79
4 60 - 91
5 72 - 103
RangeC = (octave + 1) * 12
RangeG = RangeC + 31
noteOctave = floor( note/12 ) - 2
do octaveSWITCH( octave - noteOctave )
*/
int SEARCH_COLUMN = -1;
int SEARCH_ROW = -1;
if( MIDI_CHANNEL > 8 ) { // DMS Drummer drum kit
if(SERIAL_MODE) {
HWSERIAL.write(DRUMMAP[note]);
Serial.println(DRUMMAP[note], BYTE);
} else {
for (int row=0; row<ROWS; row++) {
for (int column=0; column<COLUMNS; column++) {
if (note == DRUMKIT_ARRAY[row][column]) {
SEARCH_COLUMN = row;
SEARCH_ROW = column;
Serial.print(SEARCH_COLUMN);
Serial.print(" : ");
Serial.println(SEARCH_ROW);
break;
}
}
} // for rows
SendKeyStroke(SEARCH_ROW, SEARCH_COLUMN, note);
} // serial mode
} else { // A2 DMS MIDI piano
RangeC = (octave + 1) * 12;
RangeG = RangeC + 31;
if (note > RangeG) {
octaveSwitch(1);
} else if (note < RangeC) {
octaveSwitch(-1);
}
/* int noteOctave = floor( note/12 ) - 2;
if (noteOctave != octave) {
octaveSwitch(noteOctave - octave);
delay(100);
}
*/
/*
if ( note >= (octave + 3) * 12 ) { // higher than current range ( normal == octave 3 )
SendKeyStroke(6,7); // up key
octave ++;
Serial.println(octave);
delay(10);
} else if ( note < (octave + 2) * 12 ) {
SendKeyStroke(7,7); // down key
octave -= 1;
Serial.println(octave);
delay(10);
} //else {
*/
// transpose note for octave switch
note = note - 12 * (octave - 3);
Serial.println(note);
for (int row=0; row<ROWS; row++) {
for (int column=0; column<COLUMNS; column++) {
if (note == KEYS_ARRAY[row][column]) {
SEARCH_COLUMN = row;
SEARCH_ROW = column;
break;
}
}
} // for rows
SendKeyStroke(SEARCH_ROW, SEARCH_COLUMN, note);
} // if Drum/piano
} //OnNoteOn
void octaveSwitch(int diff) {
Serial.print("OCTAVE DIFF = ");
Serial.println(diff);
for (int i=0; i< abs(diff); i++ ) {
if(diff > 0 ) {
SendKeyStroke(6,7,9); // up key
octave ++;
Serial.print("OCTAVE ") ;
Serial.println(octave);
delay(20);
SendKeyUp();
} else {
SendKeyStroke(7,7,10); // down key
octave -= 1;
Serial.print("OCTAVE ") ;
Serial.println(octave);
delay(20);
SendKeyUp();
}
}
}
void SendKeyStroke ( int keyRow, int keyCol, char note) {
if(SERIAL_MODE) {
HWSERIAL.write(KEYMAP[note]);
Serial.println(KEYMAP[note], BYTE);
} else {
digitalWrite(S0_4051, LOW);
digitalWrite(S1_4051, LOW);
digitalWrite(S2_4051, LOW);
//select the column bits
c0 = bitRead(keyCol,0);
c1 = bitRead(keyCol,1);
c2 = bitRead(keyCol,2);
c3 = bitRead(keyCol,3);
// set the column signals to match selected column
digitalWrite(S0_PIN, c0);
digitalWrite(S1_PIN, c1);
digitalWrite(S2_PIN, c2);
digitalWrite(S3_PIN, c3);
//select the row bits
r0 = bitRead(keyRow,0);
r1 = bitRead(keyRow,1);
r2 = bitRead(keyRow,2);
// set the column signals to match selected column
digitalWrite(S0_4051, r0);
digitalWrite(S1_4051, r1);
digitalWrite(S2_4051, r2);
// enable the common IO
digitalWrite(ENABLE_PIN, LOW);
}
}
void OnControlChange(byte channel, byte control, byte value) {
Serial.print( "CONTROL ");
Serial.print(control);
Serial.print( " : ");
Serial.println(value);
if (control == 123) { // "all notes off"
if(SERIAL_MODE) {
HWSERIAL.write("+");
} else {
SendKeyUp();
delay(10);
SendKeyUp();
delay(10);
SendKeyUp();
delay(10);
}
if(channel < 9) { // to reset to default octave, down to 0, then up to 3
octaveSwitch(-1);
delay(10);
octaveSwitch(-1);
delay(10);
octaveSwitch(-1);
delay(10);
octaveSwitch(-1);
delay(10);
octaveSwitch(-1);
delay(10);
octaveSwitch(-1);
delay(10);
octaveSwitch(1);
delay(10);
octaveSwitch(1);
delay(10);
octaveSwitch(1);
// octave == 3
octave = 3;
}
}
}
void OnProgramChange(byte channel, byte program) {
Serial.print( "PROGRAM ");
Serial.print(program);
}
void OnNoteOff(byte channel, byte note, byte velocity)
{
digitalWrite(ledPin, LOW);
if (MIDI_CHANNEL < 9) {
if( (SERIAL_MODE) && (CURRENT_NOTE == note) && (Serial.available()==false) ) {
// start loop timer
NOTE_OFF_TIMER = millis();
} else if( (SERIAL_MODE == false) && (CURRENT_NOTE == note) ) {
Serial.print("UP ");
Serial.println(note);
SendKeyUp();
}
}
} //OnNoteOff
void SendKeyUp() {
// disable the common IO
digitalWrite(ENABLE_PIN, HIGH);
digitalWrite(SHIFT_PIN, HIGH);
}
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = Serial.read(); //
if(inChar > 47 && inChar < 58) { // #1 - 10
// channel/instrument change
MIDI_CHANNEL = inChar - 48;
Serial.print("Channel: ");
Serial.println(MIDI_CHANNEL);
if(SERIAL_MODE) {
HWSERIAL.write( char(KEYMAP[MIDI_CHANNEL]) );
Serial.println(char(KEYMAP[MIDI_CHANNEL]));
}
if(inChar == 57) {
SendKeyStroke(6,7,9); // up key
Serial.print("OCTAVE ") ;
Serial.println(octave);
delay(20);
SendKeyUp();
}
if(inChar == 48) {
SendKeyStroke(7,7,10); // down key
Serial.print("OCTAVE ") ;
Serial.println(octave);
delay(20);
SendKeyUp();
}
if(inChar == 75) { // K for keyboard performanxce mode in drummer
digitalWrite(SHIFT_PIN, LOW); // shift +
SendKeyStroke(2,7,0); // k
Serial.print("Keyboard mode") ;
delay(20);
SendKeyUp();
digitalWrite(SHIFT_PIN, HIGH); // shift off
}
} else {
sendControl(inChar);
}
}
/* while (HWSERIAL.available()) {
// get the new byte:
char inChar = HWSERIAL.read();
Serial.println(inChar);
}
*/
}
void sendControl(char inChar) {
if(SERIAL_MODE) {
HWSERIAL.write(inChar);
Serial.println(inChar, HEX);
} else {
digitalWrite(SHIFT_PIN, LOW);
Serial.print(inChar);
Serial.print(" ");
// Serial.print(inChar, BIN);
// Serial.print(" ");
// Serial.print(inChar, OCT);
// Serial.print(" ");
Serial.println(inChar, DEC);
// Serial.print(inChar, HEX);
// Serial.print(" ");
int SEARCH_COLUMN = -1;
int SEARCH_ROW = -1;
for (int row=0; row<ROWS; row++) {
for (int column=0; column<COLUMNS; column++) {
if (inChar == CONTROLS_ARRAY[row][column]) {
SEARCH_COLUMN = row;
SEARCH_ROW = column;
break;
}
}
} // for rows
SendKeyStroke(SEARCH_ROW, SEARCH_COLUMN, inChar);
delay(100);
SendKeyUp();
} // if in serial mode
}
// keyboard parser pieces
//#include <avr/pgmspace.h>
//#include <avrpins.h>
//#include <max3421e.h>
//#include <address.h>
//#include <printhex.h>
//#include <message.h>
//#include <hexdump.h>
//#include <parsetools.h>
//#include <hidboot.h>
// write to keystrokes
/*void SetMods(uint8_t m, uint8_t key)
{
MODIFIERKEYS mod;
*((uint8_t*)&mod) = m;
// send APPLE keys as key presses, not just as modifiers.
if(mod.bmLeftAlt == 1) {
digitalWrite(OPEN_APPLE_PIN, HIGH);
} else {
digitalWrite(OPEN_APPLE_PIN, LOW);
}
if(mod.bmRightAlt == 1) {
digitalWrite(CLOSED_APPLE_PIN, HIGH);
} else {
digitalWrite(CLOSED_APPLE_PIN, LOW);
}
if((mod.bmLeftShift == 1) || (mod.bmRightShift == 1) ) {
digitalWrite(SHIFT_PIN, LOW);
} else {
digitalWrite(SHIFT_PIN, HIGH);
}
if((mod.bmRightCtrl == 1) || (mod.bmLeftCtrl == 1) ) {
digitalWrite(CONTROL_PIN, LOW);
} else {
digitalWrite(CONTROL_PIN, HIGH);
}
};
*/
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(EXIT_PIN, INPUT_PULLUP);
usbMIDI.setHandleNoteOff(OnNoteOff);
usbMIDI.setHandleNoteOn(OnNoteOn) ;
usbMIDI.setHandleControlChange(OnControlChange);
usbMIDI.setHandleProgramChange(OnProgramChange);
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
Serial.begin(9600);
if(SERIAL_MODE) {
HWSERIAL.begin(9600);
}
pinMode(ENABLE_PIN, OUTPUT);
pinMode(S0_PIN, OUTPUT);
pinMode(S1_PIN, OUTPUT);
pinMode(S2_PIN, OUTPUT);
pinMode(S3_PIN, OUTPUT);
pinMode(SHIFT_PIN, OUTPUT);
pinMode(CONTROL_PIN, OUTPUT);
pinMode(OPEN_APPLE_PIN, OUTPUT);
pinMode(CLOSED_APPLE_PIN, OUTPUT);
pinMode(CAPS_LOCK_PIN, OUTPUT);
pinMode(RESET_PIN, OUTPUT);
pinMode(S0_4051, OUTPUT);
pinMode(S1_4051, OUTPUT);
pinMode(S2_4051, OUTPUT);
digitalWrite(ENABLE_PIN, HIGH); // write low to enable, high to disable
digitalWrite(S0_PIN, LOW);
digitalWrite(S1_PIN, LOW);
digitalWrite(S2_PIN, LOW);
digitalWrite(S3_PIN, LOW);
digitalWrite(CAPS_LOCK_PIN, HIGH);
digitalWrite(RESET_PIN, HIGH);
digitalWrite(OPEN_APPLE_PIN, LOW);
digitalWrite(CLOSED_APPLE_PIN, LOW);
// modifier keys - HIGH == not pressed. LOW == pressed.
digitalWrite(SHIFT_PIN, HIGH);
digitalWrite(CONTROL_PIN, HIGH);
digitalWrite(S0_4051, LOW);
digitalWrite(S1_4051, LOW);
digitalWrite(S2_4051, LOW);
}
void loop()
{
if( usbMIDI.read() ) {
// Serial.println( usbMIDI.getType() );
};
serialEvent();
if(SERIAL_MODE) { // no need for this with keyboard mode.
// check loop timer for noteOff
if(( NOTE_OFF_TIMER ) && ( millis() > NOTE_OFF_TIMER + NOTE_OFF_INTERVAL )) {
// when loop timer ends, if a new note has been sent, ignore the noteOff
// else, if offnote hasn't been replaced, send noteOff
HWSERIAL.write("+");
Serial.println(NOTE_OFF_TIMER);
NOTE_OFF_TIMER = 0;
}
}
if (digitalRead(EXIT_PIN) == LOW) {
// send "X"
HWSERIAL.write("X");
Serial.println("RESET BUTTON");
//delay(500);
}
}

View File

@ -0,0 +1,26 @@
G04 MADE WITH FRITZING*
G04 WWW.FRITZING.ORG*
G04 DOUBLE SIDED*
G04 HOLES PLATED*
G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%ASAXBY*%
%FSLAX23Y23*%
%MOIN*%
%OFA0B0*%
%SFA1.0B1.0*%
%ADD10R,2.509690X1.258780*%
%ADD11C,0.008000*%
%ADD10C,0.008*%
%LNCONTOUR*%
G90*
G70*
G54D10*
G54D11*
X4Y1255D02*
X2506Y1255D01*
X2506Y4D01*
X4Y4D01*
X4Y1255D01*
D02*
G04 End of contour*
M02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,121 @@
; NON-PLATED HOLES START AT T1
; THROUGH (PLATED) HOLES START AT T100
M48
INCH
T100C0.032000
T101C0.031497
T102C0.030000
T103C0.038000
T104C0.038492
T105C0.040000
T106C0.130000
T107C0.035000
%
T100
X018765Y000834
X015765Y003834
X014765Y003834
X015765Y000834
X014765Y000834
X019765Y003834
X019765Y000834
X017765Y003834
X020765Y003834
X016765Y003834
X017765Y000834
X020765Y000834
X016765Y000834
X013765Y003834
X013765Y000834
X018765Y003834
T101
X013531Y011084
X014515Y011084
T102
X015765Y011834
X016765Y011834
X019765Y010832
X018765Y010834
X020765Y010832
X019765Y011834
X018765Y011836
X020765Y011834
X015765Y010832
X016765Y010832
T103
X003765Y000834
X004765Y011834
X002765Y011834
X000765Y000834
X001765Y011834
X008765Y000834
X009765Y011834
X011765Y000834
X007765Y011834
X010765Y011834
X005765Y000834
X006765Y011834
X004765Y000834
X002765Y000834
X003765Y011834
X001765Y000834
X000765Y011834
X009765Y000834
X007765Y000834
X008765Y011834
X010765Y000834
X011765Y011834
X006765Y000834
X005765Y011834
T104
X007765Y003334
X003765Y009334
X010765Y003334
X006765Y003334
X011765Y007334
X000765Y009334
X011765Y004334
X003765Y003334
X004765Y004334
X000765Y003334
X008765Y009334
X011765Y009334
X011765Y006334
X005765Y009334
X008765Y003334
X004765Y009334
X011765Y003334
X002765Y009334
X005765Y003334
X001765Y009334
X004765Y003334
X011765Y008334
X002765Y003334
X001765Y003334
X011765Y005334
X009765Y009334
X004765Y008334
X007765Y009334
X010765Y009334
X006765Y009334
X009765Y003334
T105
X024265Y007925
X023147Y008472
X024265Y004657
X023147Y004110
X024265Y005747
X023147Y006291
X024265Y006834
X023147Y005200
X023147Y007381
T106
X023706Y011212
X023706Y001370
T107
X013015Y005584
X014787Y005584
X013015Y008143
X014787Y008143
T00
M30

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,114 @@
*Pick And Place List
*Company=
*Author=
*eMail=
*
*Project=Teensy-RS232
*Date=01:18:20
*CreatedBy=Fritzing 0.9.2b.11.19.8d2d5970658f0bed09c661c9ea9a515b5f40f44c
*
*
*Coordinates in mm, always center of component
*Origin 0/0=Lower left corner of PCB
*Rotation in degree (0-360, math. pos.)
*
*No;Value;Package;X;Y;Rotation;Side;Name
1;;;38.3286;-20.7082;0;Bottom;Copper Fill23
2;;;20.9804;-5.3539;0;Bottom;Copper Fill15
3;;;10.8204;-5.3539;0;Bottom;Copper Fill11
4;;;51.4858;-28.7981;0;Bottom;Copper Fill3
5;;;15.9142;-16.09;-90;Bottom;Teensy 2.0
6;;;5.7404;-26.8423;0;Bottom;Copper Fill49
7;100nF;100 mil [THT, multilayer];50.2042;-28.79;90;Bottom;C2
8;100nF;100 mil [THT, multilayer];52.7442;-28.79;90;Bottom;C5
9;;;1.0668;-2.16628;0;Bottom;Copper Fill80
10;;;18.4404;-26.8423;0;Bottom;Copper Fill54
11;;;48.0144;-18.5379;0;Bottom;IMG1
12;;THT;15.9142;-2.12;-90;Bottom;GND
13;;;36.6522;-14.2566;0;Bottom;Copper Fill72
14;;;13.3604;-26.8423;0;Bottom;Copper Fill52
15;;;18.4404;-5.3539;0;Bottom;Copper Fill14
16;;;31.8516;-15.9965;0;Bottom;Copper Fill5
17;;;15.9004;-26.8423;0;Bottom;Copper Fill53
18;;;36.8173;-27.4519;0;Bottom;Copper Fill31
19;;;37.4777;-13.4057;0;Bottom;Copper Fill71
20;;;15.1892;-16.0981;0;Bottom;Copper Fill62
21;;;50.1269;-1.41698;0;Bottom;Copper Fill40
22;;;37.4777;-19.8827;0;Bottom;Copper Fill68
23;;;8.2804;-5.3539;0;Bottom;Copper Fill10
24;;;1.1176;-8.5162;0;Bottom;Copper Fill76
25;;;1.9177;-7.6653;0;Bottom;Copper Fill75
26;;;1.0668;-2.16628;0;Bottom;Copper Fill39
27;;;45.1104;-3.85538;0;Bottom;Copper Fill66
28;;[THT];35.3093;-17.4351;90;Bottom;S1
29;;;20.9804;-26.8423;0;Bottom;Copper Fill55
30;;;1.9177;-1.36618;0;Bottom;Copper Fill38
31;;;48.9458;-28.7981;0;Bottom;Copper Fill2
32;100nF;100 mil [THT, multilayer];40.0442;-28.79;90;Bottom;C3
33;;;1.9177;-9.3925;0;Bottom;Copper Fill33
34;;;57.8612;-21.5718;0;Bottom;Copper Fill36
35;;;13.3604;-5.3539;0;Bottom;Copper Fill12
36;;;8.2804;-26.8423;0;Bottom;Copper Fill50
37;;db9;60.0843;-15.98;90;Bottom;RS232 Serial
38;;;36.6522;-20.7082;0;Bottom;Copper Fill22
39;;;28.6258;-8.8083;0;Bottom;Copper Fill64
40;;;3.2004;-26.8423;0;Bottom;Copper Fill48
41;;;50.1269;-1.41698;0;Bottom;Copper Fill82
42;;;5.7404;-5.3539;0;Bottom;Copper Fill9
43;;;23.5966;-6.5731;0;Bottom;Copper Fill63
44;;;41.3258;-28.7981;0;Bottom;Copper Fill43
45;;;41.3258;-28.7981;0;Bottom;Copper Fill1
46;;;28.6004;-26.8423;0;Bottom;Copper Fill58
47;;;54.5084;-23.1085;0;Bottom;Copper Fill4
48;;;36.195;-3.22038;0;Bottom;Copper Fill67
49;;dil16;43.8542;-5.93;180;Bottom;MAX232
50;;;46.3804;-19.3747;0;Bottom;Copper Fill41
51;;;26.0604;-5.3539;0;Bottom;Copper Fill17
52;;;23.5204;-5.3539;0;Bottom;Copper Fill16
53;;;1.9177;-1.36618;0;Bottom;Copper Fill79
54;;;36.8173;-28.9505;0;Bottom;Copper Fill74
55;;;36.6522;-14.2566;0;Bottom;Copper Fill27
56;;;28.956;-16.1362;0;Bottom;Copper Fill32
57;;;35.0266;-19.3747;0;Bottom;Copper Fill46
58;;;50.1269;-30.8301;0;Bottom;Copper Fill29
59;;;53.467;-30.1062;0;Bottom;Copper Fill25
60;;;15.9004;-5.3539;0;Bottom;Copper Fill13
61;;;48.9204;-17.4443;0;Bottom;Copper Fill60
62;;;2.4638;-5.3539;0;Bottom;Copper Fill19
63;;;36.6522;-20.7082;0;Bottom;Copper Fill69
64;;;39.9669;-30.8301;0;Bottom;Copper Fill77
65;;THT;15.9142;-30.06;-90;Bottom;+5V
66;;;37.4777;-15.1075;0;Bottom;Copper Fill26
67;;;43.8404;-18.6381;0;Bottom;Copper Fill47
68;;;23.5204;-26.8423;0;Bottom;Copper Fill56
69;;;15.5302;-26.6389;0;Bottom;TXT1
70;;;50.1269;-3.16958;0;Bottom;Copper Fill81
71;;5 mm [THT];35.0202;-28.155;90;Bottom;LED1
72;;;17.7038;-4.4903;0;Bottom;Copper Fill65
73;;;52.6669;-30.8301;0;Bottom;Copper Fill24
74;;;37.4777;-21.5845;0;Bottom;Copper Fill20
75;;;46.7695;-18.8768;0;Bottom;IMG2
76;;;52.6796;-15.4885;0;Bottom;Copper Fill61
77;;;51.4858;-28.7981;0;Bottom;Copper Fill45
78;;;57.9374;-15.9965;0;Bottom;Copper Fill42
79;;;1.9177;-3.06798;0;Bottom;Copper Fill78
80;;;56.5658;-13.9391;0;Bottom;Copper Fill7
81;;;41.3004;-17.4443;0;Bottom;Copper Fill59
82;;;26.0604;-26.8423;0;Bottom;Copper Fill57
83;100nF;100 mil [THT, multilayer];42.5842;-28.79;90;Bottom;C4
84;;;58.7121;-22.4481;0;Bottom;Copper Fill35
85;;;38.3286;-14.2566;0;Bottom;Copper Fill28
86;;;39.9669;-30.8301;0;Bottom;Copper Fill37
87;100nF;100 mil [THT, multilayer];47.6642;-28.79;-90;Bottom;C1
88;;;10.8204;-26.8423;0;Bottom;Copper Fill51
89;;;1.1176;-8.5162;0;Bottom;Copper Fill34
90;;;150.366;62.9467;0;Bottom;IMG1
91;;;48.9458;-28.7981;0;Bottom;Copper Fill44
92;;;36.8173;-28.9505;0;Bottom;Copper Fill30
93;;;15.9258;-18.6381;0;Bottom;Copper Fill6
94;;;52.6669;-30.8301;0;Bottom;Copper Fill70
95;;;28.6004;-5.3539;0;Bottom;Copper Fill18
96;;;15.1892;-11.1197;0;Bottom;Copper Fill8
97;;;15.4425;-5.13715;0;Bottom;TXT2
98;;;50.1269;-30.8301;0;Bottom;Copper Fill73
99;;;37.4777;-19.8827;0;Bottom;Copper Fill21

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff