Arduino I2C ADS1115 I2C LCD
Para esto utilizaremos 1 Arduino, 1 ADC 16-Bit ADS1115 4 canales,
1 Interfaz I2C IIC para LCD1602 y 1 LCD 16×2 Luz de fondo Blanca,
1 1/2 proto, 1 juego de Jumpers y 1 potenciomertro de 10k.
«Ya que no sabemos que tiene cargado el Arduino
es importante primero programarlo
y así prevenir voltajes de entrada
indeseados a nuestros componentes.»
Este proyecto consistirá en un Arduino I2C ADS1115 I2C LCD, leer la tensión de un potenciómetro con el módulo ADC1115 y retransmitir la información a la LCD todo por el protocolo I2C.
El ADS1115 constan de cuatro entradas etiquetadas A0-A3 toda la resolución de 15 bits. Además de las funciones de ADC finalizadas simples también son posibles una serie de funciones de comparación. Para más información sobre las funciones de programación del ADS1115 ver lo siguiente:
Datasheet LCD I2C
Datasheet ADS I2C
Gracias a la biblioteca #include <Wire.h> en este caso, Arduino UNO
usaremos los PIN A5-SCL y A4-SDA para la comunicación I2C.
#include <Adafruit_ADS1015.h>
Descargar la Liberia:
https://github.com/adafruit/Adafruit_ADS1X15
#include <LiquidCrystal_I2C.h>
Descargar la Liberia:
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Rápidamente mencionaré los principales códigos a programar:
Para probar que las liberas fueron instaladas correctamente en nuestra carpeta de «lib» en «Equipo c:/ Programas / Arduino».
Compilaremos los siguientes códigos por individual.
Paso 1 Programar Arduino «ADS1115 I2C»:
Compilar y esperar «Subido» de lo contrario cerrar todas las ventanas ID y re intentar.
[code language=»cpp»]
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads(0x48);
float Voltage = 0.0;
void setup(void)
{
Serial.begin(9600);
ads.begin();
}
void loop(void)
{
int16_t adc0; // Leemos el ADC, con 16 bits
adc0 = ads.readADC_SingleEnded(0);
Voltage = (adc0 * 0.1875)/1000;
Serial.print(«AIN0: «);
Serial.print(adc0);
Serial.print(«\tVoltage: «);
Serial.println(Voltage, 7);
Serial.println();
delay(1000);
}
[/code]
Paso 2 Programar Arduino:
Compilar y esperar «Subido» de lo contrario cerrar todas las ventanas ID y re intentar.
[code language=»cpp»]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Iniciar LCD address con 0x27 para 16×2 Display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{ // initializar la LCD
lcd.begin();
// Encender Pantalla e imprimir en pantalla.
lcd.backlight();
lcd.setCursor(0,0); lcd.print(» «);
lcd.setCursor(0,0); lcd.print(» HetPro «);
lcd.setCursor(0,1); lcd.print(» «);
lcd.setCursor(0,1); lcd.print(» i2C LCD «);
}
void loop()
{ // Colocar el cursor en columna 0, linea 1
// (note: linea 1 es la segunda, como la primera es la 0):
lcd.setCursor(0, 1);
// Imprimir el tiempo de actividad
lcd.print(millis()/1000);
// Variable a imprimir «millis()/1000» sin comillas.
}
[/code]
Cambiando su dirección I2C:
La ventaja del I2C no solo es el ahorro de puertos y la facilidad de cableado, también el poner múltiples LCD´s y sensores cambiando su dirección I2C.
Arduino I2C ADS1115, I2C LCD, Arduino LCD Module Addressing
Cambiar la dirección I2C “I2C ADDRESSES” :
ALHUNOS I2C tienen pins (o pads de soldadura) de tal manera que su disección puede ser cambiada. Usualmente están etiquetadas como A0-A1-A2 .
De fábrica esta default 0x27. (1 = SIN Conectar. 0 = Conectado):
A0 A1 A2 HEX Address
1 1 1 0x27
0 1 1 0x26
1 0 1 0x25
0 0 1 0x24
1 1 0 0x23
0 1 0 0x22
1 0 0 0x21
0 0 0 0x20
[code language=»cpp»]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Iniciar LCD address con 0x27 para 16×2 Display
LiquidCrystal_I2C lcd(0x27, 16, 2);
[/code]
Cambiar la dirección I2C “I2C ADDRESSES” :
[code language=»cpp»]
#include <Wire.h>
#include <Adafruit_ADS1015.h>
// Iniciar ADS address con 0x48
Adafruit_ADS1115 ads(0x48);
[/code]
Arduino I2C ADS1115 I2C LCD
Finalmente programamos y cableamos los módulos,
para hacer la lectura analógica A0
y visualizarla en al LCD todo por el protocolo I2C.
Paso 3 Programar Arduino:
[code language=»cpp»]
#include <Wire.h>
#include <Adafruit_ADS1015.h>
#include <LiquidCrystal_I2C.h>
// Iniciar address 0x27 y 0x48
LiquidCrystal_I2C lcd(0x27, 16, 2);
Adafruit_ADS1115 ads(0x48);
float Voltage = 0.0;
void setup(void)
{ // initializar Serial/ADS/LCD
Serial.begin(9600);
ads.begin();
lcd.begin();
// Encender Pantalla e imprimir en pantalla.
lcd.backlight();
lcd.setCursor(0,0); lcd.print(» «);
lcd.setCursor(0,0); lcd.print(» HetPro ADS «);
lcd.setCursor(0,1); lcd.print(» «);
lcd.setCursor(0,1); lcd.print(» i2C LCD «);
}
void loop(void)
{
int16_t adc0;
adc0 = ads.readADC_SingleEnded(0);
Voltage = (adc0 * 0.1875)/1000;
Serial.print(«AIN0: «);
Serial.print(adc0);
Serial.print(«\tVoltage: «);
Serial.println(Voltage, 4);
delay(100);
lcd.setCursor(0, 1);
lcd.print(Voltage, 4); // Variable a imprimir.
}
[/code]