Hardwarenahe Programmierung

You are viewing an older revision! See the latest version

ADC Poti

Das ESP32-Board verfügt über zwei 12-Bit-Analog-Digital-Wandler. Der in dieser Entwicklungsplatine verwendete ADC-Typ basiert auf SAR, was auch als sukzessive Approximationsregister bezeichnet wird. Für weitere Informationen zu ADC-Typen siehe ADC Tutorial. Beide ADCs unterstützen bis zu 18 analoge Kanäle , sodass mit diesem Board jeweils achtzehn analoge Sensoren verbunden werden könnten. ADC2 wird jedoch von anderen Ressourcen gemeinsam genutzt. Es sind also zwei ADCs in ESP32 ADC1 und ADC2. wobei mit der mbed-Adapter-Platine nur zwei für die beiden Potis des mbed-Application-Board. Die Pin-Zuordnung der ADC-Kanäle für beide ADCs ist unten dargestellt.

mbedEs32S_LCD_ADC_Poti1.ino

#include <U8g2lib.h>

#define BUFF_LEN 18
uint8_t ADC7 = 35; 

U8G2_ST7565_NHD_C12832_F_4W_HW_SPI u8g2(U8G2_R2, 5, 14, 13); // rotation = 180° = U8G2_R2 VSPImosi(GPIO23), VSPIclk(GPIO18)

void setup(void) {
  Serial.begin(115200);
  Serial.printf("\nAnalogwert am LCD:\n");
  u8g2.begin();
}

void loop(void) {
  int AnalogIn = analogRead(ADC7);
  char buff[BUFF_LEN];

  convertA0(buff, AnalogIn);
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB14_tr);
  u8g2.drawStr(0, 20, buff);
  u8g2.sendBuffer();
}

void convertA0(char myBuff[], int A0In) {
  float aInFloat = (A0In/4096.0)*3.3;
  String stringOne = String(aInFloat, 3);
  Serial.print("Analogwert A0 = ");
  Serial.print(A0In);
  Serial.println(" ;  Spannung = " + stringOne + " V");
  stringOne = "Up1 = " + stringOne + " V";
  stringOne.toCharArray(myBuff, BUFF_LEN);
}

All wikipages