From d5050a77b0c9620701ad2d464c799f1ba78c9679 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Thu, 6 Oct 2022 22:05:13 -0600 Subject: [PATCH] footprint for 128x32 graphic lcd (tirepyro v2) --- packages/NHD-C12832A1Z.py | 195 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100755 packages/NHD-C12832A1Z.py diff --git a/packages/NHD-C12832A1Z.py b/packages/NHD-C12832A1Z.py new file mode 100755 index 0000000..f12ea3a --- /dev/null +++ b/packages/NHD-C12832A1Z.py @@ -0,0 +1,195 @@ +#!/usr/bin/python3 +# Copyright 2022 by Bdale Garbee . GPLv3 +# +# Program to emit PCB footprint for NHD-C12832A1Z-FSW-FBW-3V3 graphic LCD +# + +# dimensions in mm from NHD-C12832A1Z-FSW-FBW-3V3.pdf datasheet +BodyWidth = 41.4 +BodyHeight = 24.3 +PinDiam = 0.6 +PinSpacing = 1.50 +PinOffset = 0.75 +Pins = 17 + +ViewWidth = 31.98 +ViewHeight = 7.98 +ViewHCtr = 15.8 / 2 + 7.6 - BodyHeight / 2 + +# centered rectangle of holes for alignment pins +MntWidth = 40.2 +MntHeight = 23.1 +MntDiam = 0.8 + +# contacts for LED backlight +BLWidth = 34.6 +BLDiam = 1.25 # a 1.2 x 0.7 slot is called for +BLOffset = PinOffset + 1.69 + BLDiam / 2 + +import sys + +# we're going to use the 1/100 of a mil fundamental unit form +def mm2mils100( mm ): + return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 ) + +print('# author: Bdale Garbee') +print('# email: bdale@gag.com') +print('# dist-license: GPL 3') +print('# use-license: unlimited') + +print('Element[0x0 "NHD-C12832A1Z" "" "" 0 0 0 0 0 100 0x0]') +print("(") + +# pins + # pin( x y thickness clearance mask drillhole name number flags) +for pin in range (0,Pins): + if pin == Pins - 1: + Flags = '0x0101' + else: + Flags = '0x0001' + + print(' Pin[',\ + mm2mils100((pin - 8)*PinSpacing), \ + mm2mils100(-BodyHeight/2+PinOffset), \ + mm2mils100(PinDiam * 1.75), \ + 1200, \ + mm2mils100(PinDiam * 1.75) + 600, \ + mm2mils100(PinDiam), \ + '"pin%i"' % (Pins-pin), '"%i"' % (Pins-pin), Flags, ']') + +print(' ElementLine[',\ + -mm2mils100(BodyWidth/2), \ + -mm2mils100(BodyHeight/2), \ + mm2mils100(BodyWidth/2), \ + -mm2mils100(BodyHeight/2), \ + 500, \ + ']') +print(' ElementLine[',\ + -mm2mils100(BodyWidth/2), \ + -mm2mils100(BodyHeight/2), \ + -mm2mils100(BodyWidth/2), \ + mm2mils100(BodyHeight/2), \ + 500, \ + ']') +print(' ElementLine[',\ + -mm2mils100(BodyWidth/2), \ + mm2mils100(BodyHeight/2), \ + mm2mils100(BodyWidth/2), \ + mm2mils100(BodyHeight/2), \ + 500, \ + ']') +print(' ElementLine[',\ + mm2mils100(BodyWidth/2), \ + mm2mils100(BodyHeight/2), \ + mm2mils100(BodyWidth/2), \ + -mm2mils100(BodyHeight/2), \ + 500, \ + ']') + +# mark viewable area + +print(' ElementLine[',\ + mm2mils100(-ViewWidth/2), \ + mm2mils100(ViewHCtr + ViewHeight/2), \ + mm2mils100(ViewWidth/2), \ + mm2mils100(ViewHCtr + ViewHeight/2), \ + 500, \ + ']') + +print(' ElementLine[',\ + mm2mils100(-ViewWidth/2), \ + mm2mils100(ViewHCtr - ViewHeight/2), \ + mm2mils100(ViewWidth/2), \ + mm2mils100(ViewHCtr - ViewHeight/2), \ + 500, \ + ']') + +print(' ElementLine[',\ + mm2mils100(-ViewWidth/2), \ + mm2mils100(ViewHCtr - ViewHeight/2), \ + mm2mils100(-ViewWidth/2), \ + mm2mils100(ViewHCtr + ViewHeight/2), \ + 500, \ + ']') + +print(' ElementLine[',\ + mm2mils100(ViewWidth/2), \ + mm2mils100(ViewHCtr - ViewHeight/2), \ + mm2mils100(ViewWidth/2), \ + mm2mils100(ViewHCtr + ViewHeight/2), \ + 500, \ + ']') + +print(' ElementLine[',\ + mm2mils100(ViewWidth/2), \ + mm2mils100(ViewHCtr - ViewHeight/2), \ + mm2mils100(-ViewWidth/2), \ + mm2mils100(ViewHCtr + ViewHeight/2), \ + 500, \ + ']') + +print(' ElementLine[',\ + mm2mils100(-ViewWidth/2), \ + mm2mils100(ViewHCtr - ViewHeight/2), \ + mm2mils100(ViewWidth/2), \ + mm2mils100(ViewHCtr + ViewHeight/2), \ + 500, \ + ']') + +# holes for alignment pins +print(' Pin[',\ + mm2mils100(MntWidth/2), \ + mm2mils100(MntHeight/2), \ + mm2mils100(MntDiam * 1.75), \ + 1200, \ + mm2mils100(MntDiam * 1.75) + 600, \ + mm2mils100(MntDiam), \ + '"G"', '"G"', '0x0001', ']') + +print(' Pin[',\ + mm2mils100(MntWidth/2), \ + mm2mils100(-MntHeight/2), \ + mm2mils100(MntDiam * 1.75), \ + 1200, \ + mm2mils100(MntDiam * 1.75) + 600, \ + mm2mils100(MntDiam), \ + '"G"', '"G"', '0x0001', ']') + +print(' Pin[',\ + mm2mils100(-MntWidth/2), \ + mm2mils100(MntHeight/2), \ + mm2mils100(MntDiam * 1.75), \ + 1200, \ + mm2mils100(MntDiam * 1.75) + 600, \ + mm2mils100(MntDiam), \ + '"G"', '"G"', '0x0001', ']') + +print(' Pin[',\ + mm2mils100(-MntWidth/2), \ + mm2mils100(-MntHeight/2), \ + mm2mils100(MntDiam * 1.75), \ + 1200, \ + mm2mils100(MntDiam * 1.75) + 600, \ + mm2mils100(MntDiam), \ + '"G"', '"G"', '0x0001', ']') + +# backlight pins +print(' Pin[',\ + mm2mils100(-BLWidth/2), \ + mm2mils100(-BodyHeight/2+BLOffset), \ + mm2mils100(BLDiam * 1.75), \ + 1200, \ + mm2mils100(BLDiam * 1.75) + 600, \ + mm2mils100(BLDiam), \ + '"K"', '"K"', '0x0001', ']') + +print(' Pin[',\ + mm2mils100(BLWidth/2), \ + mm2mils100(-BodyHeight/2+BLOffset), \ + mm2mils100(BLDiam * 1.75), \ + 1200, \ + mm2mils100(BLDiam * 1.75) + 600, \ + mm2mils100(BLDiam), \ + '"A"', '"A"', '0x0001', ']') + +print(")") -- 2.47.2