From 24ac3883de475c0fff898d426794a6730291effe Mon Sep 17 00:00:00 2001
From: Neil Gershenfeld <gersh@cba.mit.edu>
Date: Tue, 12 Nov 2019 14:52:32 -0500
Subject: [PATCH] wip

---
 python/pcb.py | 145 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 144 insertions(+), 1 deletion(-)

diff --git a/python/pcb.py b/python/pcb.py
index 582bfa1..4fd97ca 100755
--- a/python/pcb.py
+++ b/python/pcb.py
@@ -2454,6 +2454,116 @@ class HM11(part):
       self.pad.append(point(width/2.0-offset,-height/2.0+bottom+7*pitch,0))
       self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO0',line=size))
 
+class ESP32_CAM(part):
+   #
+   # ESP32-CAM
+   # Sullins S5635-ND
+   #
+   def __init__(self,value=''):
+      pad_header = cube(-.079/2,.079/2,-.039/2,.039/2,0,0)
+      d = .209/2-.079/2
+      w = 0.9
+      self.value = value
+      self.pad = [point(0,0,0)]
+      self.labels = []
+      #
+      # pin 1
+      #
+      self.shape = translate(pad_header,+d-w/2,.35,0)
+      self.pad.append(point(+d-w/2,.35,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'+5V'))
+      #
+      # pin 2
+      #
+      self.shape = add(self.shape,translate(pad_header,-d-w/2,.25,0))
+      self.pad.append(point(-d-w/2,.25,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
+      #
+      # pin 3
+      #
+      self.shape = add(self.shape,translate(pad_header,+d-w/2,.15,0))
+      self.pad.append(point(+d-w/2,.15,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO12'))
+      #
+      # pin 4
+      #
+      self.shape = add(self.shape,translate(pad_header,-d-w/2,.05,0))
+      self.pad.append(point(-d-w/2,.05,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO13'))
+      #
+      # pin 5
+      #
+      self.shape = add(self.shape,translate(pad_header,+d-w/2,-.05,0))
+      self.pad.append(point(+d-w/2,-.05,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO15'))
+      #
+      # pin 6
+      #
+      self.shape = add(self.shape,translate(pad_header,-d-w/2,-.15,0))
+      self.pad.append(point(-d-w/2,-.15,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO14'))
+      #
+      # pin 7
+      #
+      self.shape = add(self.shape,translate(pad_header,+d-w/2,-.25,0))
+      self.pad.append(point(+d-w/2,-.25,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO2'))
+      #
+      # pin 8
+      #
+      self.shape = add(self.shape,translate(pad_header,-d-w/2,-.35,0))
+      self.pad.append(point(-d-w/2,-.35,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO4'))
+      #
+      # pin 9
+      #
+      self.shape = add(self.shape,translate(pad_header,-d+w/2,-.35,0))
+      self.pad.append(point(-d+w/2,-.35,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
+      #
+      # pin 10
+      #
+      self.shape = add(self.shape,translate(pad_header,+d+w/2,-.25,0))
+      self.pad.append(point(+d+w/2,-.25,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'U0T'))
+      #
+      # pin 11
+      #
+      self.shape = add(self.shape,translate(pad_header,-d+w/2,-.15,0))
+      self.pad.append(point(-d+w/2,-.15,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'U0R'))
+      #
+      # pin 12
+      #
+      self.shape = add(self.shape,translate(pad_header,+d+w/2,-.05,0))
+      self.pad.append(point(+d+w/2,-.05,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VCC'))
+      #
+      # pin 13
+      #
+      self.shape = add(self.shape,translate(pad_header,-d+w/2,.05,0))
+      self.pad.append(point(-d+w/2,.05,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
+      #
+      # pin 14
+      #
+      self.shape = add(self.shape,translate(pad_header,+d+w/2,.15,0))
+      self.pad.append(point(+d+w/2,.15,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO0'))
+      #
+      # pin 15
+      #
+      self.shape = add(self.shape,translate(pad_header,-d+w/2,.25,0))
+      self.pad.append(point(-d+w/2,.25,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO16'))
+      #
+      # pin 16
+      #
+      self.shape = add(self.shape,translate(pad_header,+d+w/2,.35,0))
+      self.pad.append(point(+d+w/2,.35,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'3V3'))
+
+
 pad_ESP8266 = cube(-.0493,.0493,-.0197,.0197,0,0)
 pad_ESP8266_bot = cube(-.0197,.0197,-.0415,.0415,0,0)
 
@@ -3132,7 +3242,39 @@ class Molex_serial(part):
 # switches
 #
 
-pad_button_6mm = cube(-.04,.04,-.03,.03,0,0)
+class slide_switch(part):
+   # 
+   # slide switch
+   # C&K AYZ0102AGRLC
+   #
+   def __init__(self,value=''):
+      self.value = value
+      self.pad = [point(0,0,0)]
+      self.labels = []
+      pad = cube(-.039/2,.039/2,-.047/2,.047/2,0,0)
+      #
+      # pad 1
+      #
+      self.shape = translate(pad,-.098,.1,0)
+      self.pad.append(point(-.098,.1,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,''))
+      #
+      # pad 2
+      #
+      self.shape = add(self.shape,translate(pad,0,.1,0))
+      self.pad.append(point(0,.1,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,''))
+      #
+      # pad 3
+      #
+      self.shape = add(self.shape,translate(pad,.098,.1,0))
+      self.pad.append(point(.098,.1,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,''))
+      #
+      # holes
+      #
+      self.holes = cylinder(-.118/2,0,zb,zt,.034/2)
+      self.holes = add(self.holes,cylinder(.118/2,0,zb,zt,.034/2))
 
 class button_6mm(part):
    # 
@@ -3143,6 +3285,7 @@ class button_6mm(part):
       self.value = value
       self.pad = [point(0,0,0)]
       self.labels = []
+      pad_button_6mm = cube(-.04,.04,-.03,.03,0,0)
       #
       # left 1
       #
-- 
GitLab