-
Notifications
You must be signed in to change notification settings - Fork 2
/
voltage.ino
53 lines (48 loc) · 1.21 KB
/
voltage.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Arduino code
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
String sdata = ""; // Initialised to nothing.
bool started = false;
void setup(void) {
Serial.begin(9600);
// For Adafruit MCP4725A1 the address is 0x62 (default) or 0x63 (ADDR pin tied to VCC)
// For MCP4725A0 the address is 0x60 or 0x61
// For MCP4725A2 the address is 0x64 or 0x65
dac.begin(0x62);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
Serial.println("Begin");
}
void loop(void) {
if (started == false) {
started = true;
dac.setVoltage(0, 1);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}
byte ch;
if (Serial.available()) {
ch = Serial.read();
sdata += (char)ch;
if (ch == '\n') {
sdata.trim();
if (sdata.indexOf("voltage") > -1) {
sdata.remove(0, 7);
float newVal = sdata.toFloat();
// set voltage
float newVoltage = round(910.0 * newVal);
if (newVoltage > 4095) {
newVoltage = 4095;
}
uint16_t newVolts = uint16_t(newVoltage);
dac.setVoltage(newVolts, 1);
Serial.print("volts: ");
Serial.println(newVolts);
} else {
Serial.println("?");
}
sdata = "";
}
}
}