EL ESP8266 tiene una sola entrada analógica y al igual que un arduino es de 10 bits pero trabaja con un voltaje de referencia interno de 1V. En el NodeMCU y WeMos en la entrada A0 tiene un divisor de voltaje, para adaptar el rango hasta los 3.3V.
A nivel de código es igual como si se trabajase con la entrada A0 de un arduino, como se muestra en el siguiente sketch:
void setup() { //Iniciamos la Comunicacion Serial a 9600 baudios Serial.begin(9600);}void loop() { int sensorValue = analogRead(A0); //Lectura del ADC float voltage = sensorValue * (3.3 / 1023.0); //escalamos a voltaje //Enviamos por el puerto serie Serial.print("ADC= "); Serial.print(sensorValue); Serial.print(" Voltaje= "); Serial.println(voltage); delay(100); }Para realizar esta práctica necesitamos añadir la librería necesaria para poder utilizar el MCP3008.
Esta librería la podemos en github.com.
Para realizar las conexiones seguiremos este esquema de montaje, al que hay que añadir un potenciómetro más que se conectaría a otro canal cualquiera del MCP3008 y se añadiría la lectura del canal y la impresión por el puerto serie.
Para que el ADS1115 funcione en el entorno Arduino hay que añadir la librería <wire.h> y <adafruit_ADS1015.h>.
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads;
#define SCL_PIN 5
#define SDA_PIN 4
int adc0;
float voltage;
void setup() {
ads.begin();
Serial.begin (9600);
ads.setGain(GAIN_ONE);
}
void loop(){
adc0 = ads.readADC_SingleEnded(0);
voltage = (adc0 * 5.0)/65536.0;
Serial.print("El voltage es:");
Serial.println(voltage);
delay (3000);
Serial.print("El valor digital es:");
Serial.println(adc0);
delay (3000);
}