Readers: If you'd like to build the CV Generator featured in this post, please go to PCBWAY's Community pages--gerber file; KiCAD 9 project/pcb/schematic/library files, STL for the OLED standoff, Arduino .INO file, B.O.M., and more, are here.
You can also help out this blog immensely by checking out PCBWAY using the link here. Thanks!
==============
Howdy--this post is part III of the posts here and here.
From last time--I created a simple control voltage generator, sourcing about 30mA with 3 independent pots, each output is -10 to +10V DC controlled by a dedicated pot.
For revision 3 I added a MCP4728 DAC and tweaked the 16-bit ADC analogReadEnhanced algo, using 3 of the 4728's 4 channels, to make the CV generator's output better match the values shown in the OLED.
This simple revision had a big problem....unlike REV 1 and 2 I couldn't get the I2C bus to work--no I2C signal, anywhere.
I figured it was a hardware issue and spent a lot of time troubleshooting based on that assumption--nope.
Then I had to move my shop--pack up every tool, every part, every drawer, move it across town, then set it all back up again--fun stuff.
Once unpacked I revisited the build, and right away Claude.ai caught the problem; the sketch used the "SSD1306AsciiWire.h" library to drive the OLED and my code was written like this:
Wire.begin(); //set I2C
oled.begin(&Adafruit128x64, I2C_ADDRESS);
Wire.begin(); //set I2C
Wire.setClock(400000L); //set I2C speed.
oled.begin(&Adafruit128x64, I2C_ADDRESS);
![]() |
| As usual I used SMD SOIC and 1206 parts and a cheap hotplate. |
![]() |
| Uploading firmware.... |
The OLED needed a standoff and I was surprised I couldn't find anything close to what I needed online so I designed and 3D printed one myself:
That sat between the front panel/Oled and the PCB:
I then packaged all of this up (gerber, Kicad files, STL file for the standoff, Arduino code, and all the rest)--and put it on PCBWAY's community site , go here. Speaking of Serene and the good folks at PCBWAY, here's a word from this blog's humble sponsor:
![]() |
| Boring AI background. |









No comments:
Post a Comment