/* digital to analog with MCP4922 */ /* P Chongstitvatana, 5 Apr 2020 */ int xCS = 8; int xSCK = 9; int xSDI = 10; int xLDAC = 11; int xSHDN = 12; void setup(){ pinMode(xCS, OUTPUT); pinMode(xSCK, OUTPUT); pinMode(xSDI, OUTPUT); pinMode(xLDAC, OUTPUT); pinMode(xSHDN, OUTPUT); digitalWrite(xCS, HIGH); digitalWrite(xSCK, LOW); digitalWrite(xSDI, LOW); digitalWrite(xLDAC, HIGH); digitalWrite(xSHDN, HIGH); } /* write to DAC channel A */ void writeDAC( unsigned int value){ unsigned int data, hi, lo; digitalWrite(xCS,LOW); /* enable MCP4922 */ data = value |= 0x3000; /* chan A */ hi = (data >> 8) & 0xFF; lo = data & 0xFF; shiftOut(xSDI,xSCK,MSBFIRST,hi); /* MSB data */ shiftOut(xSDI,xSCK,MSBFIRST,lo); /* LBS */ digitalWrite(xCS,HIGH); digitalWrite(xLDAC,LOW); digitalWrite(xLDAC,HIGH); } void loop(){ writeDAC(2047); while(1); }