Kontrolery ESP obsługują przynajmniej jeden kanał analogowy. Dzięki temu są w stanie odczytać dane z czujników, które nie komunikują się w sposób cyfrowy.
Mikrokontroler ESP8266 posiada jeden dedykowany kanał analogowy. Rozdzielczość pomiaru wynosi 10-bit, daje to zakres 0-1023, co odpowiada napięciu 0-1V. Większość dedykowanych płytek, takich jak NodeMCU V3,
posiada wbudowany dzielnik napięcia, powoduje to zmianę zakresu pomiaru napięcia na zakres 0-3,3V.
Mikrokontroler ESP32 posiada dwa dedykowane kanały analogowe. Rozdzielczość pomiaru wynosi 12-bit, daje to zakres 0-4095, co odpowiada napięciu 0-3.3V.
Port Analogowy daje możliwość korzystania z analogowych czujników takich jak termometr, fotorezystor, woltomierz czy potencjometr.
Schemat.
Wymagany rezystor 220Ω.
Kod programu.
Sensor LM35 jest domyślnie skalibrowany do pomiaru w stopniach Celcjusz. Wzrost temperatury o 1 stopień powoduje wzrost napięcia o 10mV.
#define analogtPin A0
#define led D2
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop()
{
int analogValue = analogRead(analogtPin); // Odczyt napięcia pinu analogowego
float millivolts = (analogValue/1024.0) * 3300; // Uzyskanie wartości w mV
float celsius = millivolts/10; // Wzrost temperatury o 1 stopień powoduje wzrost napięcia o 10mV.
Serial.print("C = ");
Serial.println(celsius);
if(celsius >= 30)
digitalWrite(led, HIGH); // Zapalenie diody LED powyżej 30^C
else
digitalWrite(led, LOW); // Zgaszenie diody LED poniżej 30^C
delay(1000);
}