#include <Wire.h>
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define ADS1110_ADDRESS 0x48
void setup() {
Serial.begin(9600);
Wire.begin();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("ADS1110 Var 15");
// Конфигурация для Варианта 15:
// Непрерывный режим, 14 бит (60 SPS), усиление PGA = x8
// Байт: 0b00000111 (0x07)
Wire.beginTransmission(ADS1110_ADDRESS);
Wire.write(0b00000111);
Wire.endTransmission();
delay(1000);
lcd.clear();
}
void loop() {
Wire.requestFrom(ADS1110_ADDRESS, 3);
if (Wire.available() >= 3) {
byte highByte = Wire.read();
byte lowByte = Wire.read();
byte configRegister = Wire.read();
// Сборка 16-битного знакового числа
int16_t rawData = (int16_t)((highByte << 8) | lowByte);
// В 14-битном режиме данные могут быть выровнены по левому краю или дополнены знаком.
// LSB для PGA x8 и 14 бит: 0.256 В / 8192 = 0.00003125 В (31.25 мкВ)
float voltage = (float)rawData * 0.00003125;
// Вывод в Virtual Terminal
Serial.print("Raw: ");
Serial.print(rawData);
Serial.print(" | Voltage: ");
Serial.print(voltage, 4);
Serial.println(" V");
// Вывод на дисплей LCD1
lcd.setCursor(0, 0);
lcd.print("Raw Data: ");
lcd.print(rawData);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("Volt: ");
lcd.print(voltage, 4);
lcd.print(" V ");
}
delay(500);
}