
module plate(){
    difference(){
        cube([120,115,2]);
        //cube([130,115,2]);
        //cube([85,85,2]);
            for(x=[1:31],y=[1:22]){
                translate([x*5,y*5,0]){
                    cylinder(5,2,2);
                }
            }
    }
}

module standoff(){
    difference(){
        cylinder(6,5,2);
        cylinder(6,1,1);
    }
}

module standoffLarge(){
    difference(){
        cylinder(14,5,2);
        cylinder(14,1,1);
    } 
}

module rasPI(){
    standoff();
    translate([58,0,0]) standoff();
    translate([58,49,0]) standoff();
    translate([0,49,0]) standoff();
}

module hardKernel(){
    standoffLarge();
    translate([102,0,0]) standoffLarge();
    translate([0,81.4,0]) standoffLarge();
    translate([102,88.4,0]) standoffLarge();
}

module hardKernelX(){
    standoffLarge();
    translate([76,0,0]) standoffLarge();
    translate([0,52,0]) standoffLarge();
    translate([76,52,0]) standoffLarge();
}

module huzzah(){
    standoff();
    translate([45.72,0,0]) standoff();
    translate([0,19.05,0]) standoff();
    translate([45.72,19.05,0]) standoff();
}

module powerSupply(){
    standoffLarge();
    translate([123.825,0,0]) standoffLarge();
    translate([0,80,0]) standoffLarge();
    translate([123.825,80,0]) standoffLarge();
}

module breadBoard(){
    standoff();
    translate([31.75,0,0]) standoff();
    translate([0,44.45,0]) standoff();
    translate([31.75,44.45,0]) standoff();
}

module INA219(){
    standoff();
    translate([20.32,0,0]) standoff();
    translate([0,17.145,0]) standoff();
    translate([20.32,17.145,0]) standoff();
}

plate();
translate([15,10,0]) huzzah();
translate([15,36,0]) huzzah();
translate([15,62,0]) huzzah();
translate([15,88,0]) huzzah();

translate([80,10,0]) breadBoard();
translate([85,80,0]) INA219();
