Test of VCO first Revision
So this release is in beta status, working :-) and with non commercial backround. The expo converter and VCO is based on the publication from Robin Mitchell with additional waveformer for Sine, *PWM and *Saw. The PCB is made for the eurorack format.
If you need support or if you see any improvement, please contact me over mail minarterfurt@yahoo.de
Thanks
*twofold frequency as TRI & Sine
Some years I made my PCB's with UV lamp and etching, but this was every time a nightmare.
I found an easy process, thanks to youtube ;-), calls "toner transfer method".
The only tree things you need are a laser printer, heat transfer paper (standard paper also working) and a hot iron.
Below you will find the full process wich will work very well.
1. print out your layout on the toner transfer paper and cut out the copper PCB
2. Carefully position the PCB with your layout on toner transfer paper.
Place kitchen paper under and over all and go over with the iron for about 2min (full temperature).
3. afterwards lie the PCB with the paper in water for about 2min, then you can easy peel off the paper.
Nice ;-)
4. etch with sodium persulfate.
Done, it looks really nice. The toner you can remove with petrol.
Simple nice to have module to visualize your sounds like an oscilloscope. Patch your synth output directly to the input of the sound visualizer and adjust the voltage level with the amplitude potentiometer.
/*********************************************************************
Uses Adafruit Library
12C Info:
0X3C is address for cheap ebay units
Used I2C Scanner to find address
SDA connected to pin Analog 4
SCL connected to pin Analog 5
Monochrome OLEDs based on SSD1306 drivers
Picture Converter Link http://javl.github.io/image2cpp/
*********************************************************************/
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
//Create Display Picture "Minart Modular Analog Synth 2"
const unsigned char image [] PROGMEM = {
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,
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,
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,
0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0x78, 0x60, 0x00, 0x00, 0x00, 0x1f, 0xf7, 0x80, 0x18, 0x00, 0x0c, 0x00, 0x00, 0x00,
0x03, 0xfb, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x30, 0x00, 0x38, 0x00, 0x00, 0x00,
0x06, 0x3b, 0x8c, 0xc0, 0x00, 0x00, 0x10, 0x63, 0xb8, 0xc0, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00,
0x06, 0x39, 0x8c, 0x00, 0x00, 0x00, 0x30, 0x63, 0x98, 0xc0, 0x3c, 0x00, 0x30, 0x00, 0x00, 0x00,
0x06, 0x19, 0x9c, 0xcd, 0x83, 0x8f, 0x38, 0x61, 0x99, 0xc7, 0x0f, 0x33, 0x30, 0x71, 0xe0, 0x00,
0x03, 0x19, 0xb9, 0xdf, 0xc7, 0xdf, 0x7c, 0x21, 0x9b, 0x8f, 0x9f, 0xf7, 0xb0, 0xfb, 0xf0, 0x00,
0x03, 0x99, 0xb1, 0xde, 0xcd, 0xcf, 0x30, 0x39, 0x9b, 0x1d, 0x9b, 0xb3, 0x31, 0xb9, 0xe0, 0x00,
0x00, 0x19, 0xb0, 0xcc, 0xcc, 0xcc, 0x30, 0x01, 0x9b, 0x1d, 0xd9, 0xb3, 0x31, 0x99, 0x80, 0x00,
0x00, 0x19, 0xb0, 0xcc, 0xd8, 0xcc, 0x30, 0x01, 0x9b, 0x1c, 0xd9, 0xb3, 0x33, 0x19, 0x80, 0x00,
0x00, 0x19, 0xb0, 0xcc, 0xdc, 0xcc, 0x30, 0x01, 0x9b, 0x0c, 0xd9, 0xb3, 0x33, 0x99, 0x80, 0x00,
0x00, 0xb3, 0x30, 0xcc, 0xdd, 0xcc, 0x30, 0x0b, 0x33, 0x1d, 0x9b, 0x37, 0x31, 0xb9, 0x80, 0x00,
0x01, 0xff, 0x3c, 0xfc, 0xef, 0xef, 0x38, 0x1f, 0xf3, 0xdf, 0xbf, 0x3f, 0xbd, 0xfd, 0xe0, 0x00,
0x01, 0xfe, 0x1c, 0xcc, 0xc6, 0xce, 0x38, 0x1f, 0xe1, 0xcf, 0x0e, 0x3b, 0x38, 0xd9, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 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, 0xf8, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x03, 0xf2, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
0x01, 0xfb, 0x80, 0x00, 0x1e, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x0f, 0x00, 0x7c, 0x00, 0x00,
0x01, 0x9d, 0x80, 0x00, 0x18, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x6e, 0x00, 0xfe, 0x00, 0x00,
0x03, 0x0d, 0x80, 0x00, 0x18, 0x00, 0x00, 0x1e, 0x40, 0x00, 0x00, 0x46, 0x00, 0x8e, 0x00, 0x00,
0x03, 0x0f, 0x9b, 0x07, 0x18, 0x38, 0x60, 0x1e, 0x78, 0xd8, 0x98, 0xe6, 0x81, 0x86, 0x00, 0x00,
0x01, 0x0d, 0xbf, 0x8f, 0x98, 0xf8, 0xf8, 0x13, 0xfc, 0xf9, 0xfd, 0xf7, 0xc0, 0x06, 0x00, 0x00,
0x01, 0xcd, 0xbd, 0x9b, 0x98, 0xdd, 0xb8, 0x33, 0xe6, 0xfd, 0xfc, 0xc7, 0xc0, 0x0e, 0x00, 0x00,
0x00, 0xd9, 0x99, 0x99, 0x98, 0xdd, 0x98, 0x38, 0x82, 0xcc, 0xcc, 0xc6, 0xe0, 0x0c, 0x00, 0x00,
0x00, 0x31, 0x99, 0x99, 0x98, 0xcd, 0x98, 0x18, 0x03, 0xce, 0xcc, 0xc6, 0x60, 0x18, 0x00, 0x00,
0x00, 0xe3, 0x99, 0x99, 0x98, 0xcd, 0x98, 0x1c, 0x02, 0xc6, 0xcc, 0xc6, 0x60, 0x30, 0x00, 0x00,
0x01, 0xe7, 0xd9, 0x99, 0x98, 0xc9, 0xb8, 0x1e, 0x06, 0xce, 0xcc, 0xc6, 0x60, 0x63, 0x00, 0x00,
0x00, 0xff, 0xdd, 0xdf, 0xdf, 0xf9, 0xf8, 0x0f, 0xfc, 0xfd, 0xce, 0xef, 0xc0, 0xfe, 0x00, 0x00,
0x00, 0x79, 0x9d, 0x8d, 0xdc, 0xf0, 0xdc, 0x03, 0xf8, 0xed, 0xcc, 0xee, 0xc1, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x08, 0x00, 0x60, 0x58, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, 0x10, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 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, 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, 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,
};
//Analog Pins
int channelAI = A0; // probe
int delayAI = A1; // delay potentiometer
float delayVariable = 1; // 10 seems good for decent update- bit fast
float scale = 0;
int xCounter = 0;
int yPosition = 0;
int readings[128];
int counter = 0;
void setup() {
Serial.begin(9600);
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
// init done
display.clearDisplay();
// Show Picture
display.drawBitmap(0, -10, image, 128, 64, WHITE);
display.display();
delay(5000);
// Clear the buffer.
display.clearDisplay();
}
void loop(void)
{
display.setTextColor(WHITE);
delayVariable = analogRead(delayAI);
delayVariable = (delayVariable/10);
scale = 65.0/1023.0;
// commented out above delay items as no pot/encoder installed yet
//record readings
for(xCounter = 0; xCounter < 128; xCounter += 1)
{
yPosition = analogRead(channelAI);
Serial.println(channelAI);
readings[xCounter] = (yPosition*scale);
delay (delayVariable);
}
display.clearDisplay();
//Draw Voltage Lines
for(xCounter = 0; xCounter < 128; xCounter += 1)
{
display.drawPixel(xCounter, 47-readings[xCounter], WHITE);
if(xCounter>1){
display.drawLine(xCounter-1, 47-readings[xCounter-1], xCounter, 47-readings[xCounter], WHITE);
}
}
display.display();
}
Diese Webseite wurde mit Jimdo erstellt! Jetzt kostenlos registrieren auf https://de.jimdo.com