#include <SPI.h>
#include <Adafruit_GFX2.h>
#include <OLED_SSD1306.h>
#include <elapsedMillis.h>
#define DAC_CS 15
#define OLED_DC 9
#define OLED_CS 10
#define OLED_RESET 14
OLED_SSD1306 display(OLED_CS, OLED_DC, OLED_RESET);
IntervalTimer DACtimer;
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.setBitOrder(MSBFIRST);
DACtimer.begin(DACoutSPI, 20);
//OLEDtimer.begin(OLEDout, 33333);
}
void loop(){
DACoutSPI();
display.drawLine(random(128), random(64), random(128), random(64), WHITE);
display.display();
display.clearDisplay();
}
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);
}
}