#include <SPI.h>
#include <Adafruit_GFX2.h>
#include <OLED_SSD1306.h>
#define OLED_DC 9
#define OLED_CS 10
#define OLED_RESET 14
OLED_SSD1306 display(OLED_CS, OLED_DC, OLED_RESET);
#define DAC_CS 15 // this is the part I have no idea about
#define DAC_DATA 7 // what can I do to let the OLED use DMA on the hardware SPI pins
#define DAC_CLK 8 //14 // and get the dac to work?
byte totalWaves = 4;
word wave[4][2];
word wavePhase = 0;
void setup() {
display.begin();
display.setBitrate(24000000);
pinMode(DAC_CS, OUTPUT);
digitalWrite(DAC_CS, HIGH);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
}
void loop(){
for (int16_t i=0; i<display.height()/2; i+=2) {
display.drawRect(i, i, display.width()-2*i, display.height()-2*i, WHITE);
display.display();
}
display.clearDisplay();
DACoutSPI();
}
void DACoutSPI(){ //SPI DAC write
for(byte channel = 0; channel < totalWaves; channel++){
wave[channel][wavePhase] = random(4096);
digitalWrite(DAC_CS, LOW);
byte formatDacMSB = (channel<<6 | B00010000 | ((highByte(wave[channel][wavePhase])) & B00001111));
byte formatDacLSB = (lowByte(wave[channel][wavePhase]));
SPI.transfer(formatDacMSB);
SPI.transfer(formatDacLSB);
digitalWrite(DAC_CS,HIGH);
}
}