Got rid of MCP4725 library. For now MCP4725 DACs used only for gate signals, CV will be back with another DAC

This commit is contained in:
2025-10-20 01:35:17 +03:00
parent d4bc4552e7
commit 338c66152f
3 changed files with 46 additions and 17 deletions

View File

@ -5,13 +5,8 @@
#include <Arduino.h> #include <Arduino.h>
#include <Wire.h> #include <Wire.h>
#include "MCP4725.h"
#include "config.h" #include "config.h"
MCP4725 DAC1(DAC_1_ADDR);
MCP4725 DAC2(DAC_2_ADDR);
bool updateCV1 = true; bool updateCV1 = true;
bool updateCV2 = true; bool updateCV2 = true;
bool sendGate1 = false; bool sendGate1 = false;
@ -19,6 +14,8 @@ bool sendGate2 = false;
uint8_t CV1Note; uint8_t CV1Note;
uint8_t CV2Note; uint8_t CV2Note;
float DACNoteStep;
void setup() void setup()
{ {
// AcidStepSequencer Interface // AcidStepSequencer Interface
@ -32,12 +29,20 @@ void setup()
// last pattern user had load before power off // last pattern user had load before power off
loadLastPattern(); loadLastPattern();
DACNoteStep = (1.0 / 12.0) * 4096 / DAC_MAX_VOLTAGE;
Wire.begin(); Wire.begin();
Wire.setClock(400000); Wire.setClock(400000);
DAC1.begin(); Wire.beginTransmission(0x60);
DAC2.begin(); Wire.write(0x40);
DAC1.setMaxVoltage(5.1); Wire.write(0x00);
DAC2.setMaxVoltage(5.1); Wire.write(0x00);
Wire.endTransmission();
Wire.beginTransmission(0x61);
Wire.write(0x40);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
} }
// User interaction goes here // User interaction goes here

37
CV.ino
View File

@ -3,6 +3,11 @@ float noteToVoltage(uint8_t note) {
return voltage; return voltage;
} }
uint16_t noteToValue(uint8_t note) {
uint16_t value = (note - 24) * DACNoteStep;
return value;
}
void sendCVNote(uint8_t note, uint8_t track) { void sendCVNote(uint8_t note, uint8_t track) {
if (track == 0 && note != CV1Note) { if (track == 0 && note != CV1Note) {
CV1Note = note; CV1Note = note;
@ -34,29 +39,49 @@ void sendGateOff(uint8_t track) {
void sendVoltage(uint8_t voltage, uint8_t dac) { void sendVoltage(uint8_t voltage, uint8_t dac) {
if (dac == 0) { if (dac == 0) {
DAC1.setVoltage(voltage); //DAC1.setVoltage(voltage);
} else { } else {
DAC2.setVoltage(voltage); //DAC2.setVoltage(voltage);
} }
} }
void processCV() { void processCV() {
if (updateCV1) { if (updateCV1) {
sendVoltage(noteToVoltage(CV1Note), 0); //sendVoltage(noteToVoltage(CV1Note), 0);
updateCV1 = false; //updateCV1 = false;
} }
if (updateCV2) { if (updateCV2) {
//sendVoltage(noteToVoltage(CV2Note), 1); //sendVoltage(noteToVoltage(CV2Note), 1);
//updateCV2 = false; //updateCV2 = false;
} }
if (sendGate1) { if (sendGate1) {
sendVoltage(5, 1); Wire.beginTransmission(0x60);
Wire.write(0x40);
Wire.write(0xFF);
Wire.write(0xF0);
Wire.endTransmission();
//sendVoltage(5, 0);
} else { } else {
sendVoltage(0, 1); Wire.beginTransmission(0x60);
Wire.write(0x40);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
//sendVoltage(0, 0);
} }
if (sendGate2) { if (sendGate2) {
Wire.beginTransmission(0x61);
Wire.write(0x40);
Wire.write(0xFF);
Wire.write(0xF0);
Wire.endTransmission();
//sendVoltage(5, 1); //sendVoltage(5, 1);
} else { } else {
Wire.beginTransmission(0x60);
Wire.write(0x40);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
//sendVoltage(0, 1); //sendVoltage(0, 1);
} }
} }

View File

@ -93,7 +93,6 @@ typedef enum {
} BUTTON_HARDWARE_INTERFACE; } BUTTON_HARDWARE_INTERFACE;
// CV DACs // CV DACs
#define DAC_1_ADDR 0x60 #define DAC_MAX_VOLTAGE 5.1
#define DAC_2_ADDR 0x61
#endif #endif