Skip to content

Commit 47cfb64

Browse files
committed
Implement analogRead() API which allows to read the value provided at any of the analog pins of the ESP32.
1 parent c59cbd4 commit 47cfb64

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

src/utility/wifi_drv.cpp

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,9 +1119,32 @@ void WiFiDrv::digitalWrite(uint8_t pin, uint8_t value)
11191119
SpiDrv::spiSlaveDeselect();
11201120
}
11211121

1122-
int WiFiDrv::analogRead(uint8_t pin)
1122+
uint16_t WiFiDrv::analogRead(uint8_t pin)
11231123
{
1124-
#warning "This needs to be implemented!!!"
1124+
WAIT_FOR_SLAVE_SELECT();
1125+
// Send Command
1126+
SpiDrv::sendCmd(GET_ANALOG_READ, PARAM_NUMS_1);
1127+
SpiDrv::sendParam((uint8_t*)&pin, 1, LAST_PARAM);
1128+
1129+
// pad to multiple of 4
1130+
SpiDrv::readChar();
1131+
SpiDrv::readChar();
1132+
1133+
SpiDrv::spiSlaveDeselect();
1134+
//Wait the reply elaboration
1135+
SpiDrv::waitForSlaveReady();
1136+
SpiDrv::spiSlaveSelect();
1137+
1138+
// Wait for reply
1139+
uint16_t adc_raw = 0;
1140+
uint8_t adc_raw_len = 0;
1141+
if (!SpiDrv::waitResponseCmd(GET_ANALOG_READ, PARAM_NUMS_1, (uint8_t*)&adc_raw, &adc_raw_len))
1142+
{
1143+
WARN("error waitResponse");
1144+
}
1145+
SpiDrv::spiSlaveDeselect();
1146+
1147+
return adc_raw;
11251148
}
11261149

11271150
void WiFiDrv::analogWrite(uint8_t pin, uint8_t value)

src/utility/wifi_drv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ class WiFiDrv
292292
static void pinMode(uint8_t pin, uint8_t mode);
293293
static PinStatus digitalRead(uint8_t pin);
294294
static void digitalWrite(uint8_t pin, uint8_t value);
295-
static int analogRead(uint8_t pin);
295+
static uint16_t analogRead(uint8_t pin);
296296
static void analogWrite(uint8_t pin, uint8_t value);
297297

298298
static int8_t downloadFile(const char* url, uint8_t url_len, const char *filename, uint8_t filename_len);

src/utility/wifi_spi.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ enum {
103103
SET_DIGITAL_WRITE = 0x51,
104104
SET_ANALOG_WRITE = 0x52,
105105
GET_DIGITAL_READ = 0x53,
106+
GET_ANALOG_READ = 0x54,
106107

107108
// regular format commands
108109
WRITE_FILE = 0x60,

0 commit comments

Comments
 (0)