#include <SPI.h>
#define CS 17
#define LDAC 16
SPISettings MCP4922(20000000,MSBFIRST,SPI_MODE0);
long lasttime1000ms = 0;
bool toogle = true;
void setup() {
pinMode(CS,OUTPUT);
pinMode(LDAC,HIGH);
Serial.begin(115200);
}
void loop() {
if(millis()-lasttime1000ms >= 1000){
lasttime1000ms = millis();
if(toogle == true){
outDACA1V0();
outDACB0V0();
}else{
outDACA0V0();
outDACB1V0();
}
toogle = !toogle;
}
}
void outDACA1V0(){
SPI.begin();
SPI.beginTransaction(MCP4922);
digitalWrite(CS,LOW);
SPI.transfer16(0x39B2); //OutA 2v
delay(5);
digitalWrite(LDAC,LOW);
delay(5);
digitalWrite(LDAC,HIGH);
digitalWrite(CS,HIGH);
SPI.endTransaction();
Serial.println("A 2V On");
}
void outDACA0V0(){
SPI.begin();
SPI.beginTransaction(MCP4922);
digitalWrite(CS,LOW);
SPI.transfer16(0x3000);
delay(5);
digitalWrite(LDAC,LOW);
delay(5);
digitalWrite(LDAC,HIGH);
digitalWrite(CS,HIGH);
SPI.endTransaction();
Serial.println("A 2V Off");
}
void outDACB1V0(){
SPI.begin();
SPI.beginTransaction(MCP4922);
digitalWrite(CS,LOW);
SPI.transfer16(0xBFFF); //OutA 1.8V
delay(5);
digitalWrite(LDAC,LOW);
delay(5);
digitalWrite(LDAC,HIGH);
digitalWrite(CS,HIGH);
SPI.endTransaction();
Serial.println("B 3.3V On");
}
void outDACB0V0(){
SPI.begin();
SPI.beginTransaction(MCP4922);
digitalWrite(CS,LOW);
SPI.transfer16(0xB000);
delay(5);
digitalWrite(LDAC,LOW);
delay(5);
digitalWrite(LDAC,HIGH);
digitalWrite(CS,HIGH);
SPI.endTransaction();
Serial.println("B 3.3V Off");
}