const int dacPins[4] = {8, 9, 10, 11};
void setup() {
Serial.begin(9600);
for (int i = 0; i < 4; i++) {
pinMode(dacPins[i], OUTPUT);
digitalWrite(dacPins[i], LOW);
}
Serial.println("ЦАП готов. Введите желаемое напряжение (0.0 - 4.6875 В):");
}
void loop() {
if (Serial.available()) {
float targetVoltage = Serial.parseFloat();
if (targetVoltage < 0.0) targetVoltage = 0.0;
if (targetVoltage > 4.6875) targetVoltage = 4.6875;
int code = (int)round(targetVoltage * 16.0 / 5.0);
if (code > 15) code = 15;
if (code < 0) code = 0;
for (int i = 0; i < 4; i++) {
digitalWrite(dacPins[i], (code >> i) & 1);
}
float actualVoltage = code * 5.0 / 16.0;
Serial.print("Вход: ");
Serial.print(targetVoltage, 4);
Serial.print(" В → Код: ");
Serial.print(code, BIN);
Serial.print(" (");
Serial.print(code);
Serial.print(") → Vout: ");
Serial.print(actualVoltage, 4);
Serial.println(" В");
}
}