Arduino/ESP8266 нет данных SPI, поступающих от MCP3008
Я использую ESP8266 (NodeMCU Dev Kit v1) для чтения аналоговых данных через микросхему АЦП MCP3008.
Однако я получаю только нули, когда знаю, что должны присутствовать ненулевые данные. Я использую следующий код, который отлично работает при использовании MCP3008 с моим Arduino UNO. Используя подробный режим компиляции, я могу подтвердить, что при компиляции для ESP8266 это действительно связывает библиотеку ESP8266 SPI.
Я что-то упустил в коде?
#include <SPI.h>
#define CS_PIN 15 // Использовать 10 при компиляции для Arduino
int adcRead(int channel) {
if ((channel > 7) || (channel < 0)) {
return -1;
}
digitalWrite(CS_PIN, LOW);
SPI.transfer(1);
uint8_t r1 = SPI.transfer((channel + 8) << 4);
uint8_t r2 = SPI.transfer(0);
digitalWrite(CS_PIN, HIGH);
return ((r1 & 3) << 8) + r2;
}
void setup() {
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
SPI.setFrequency(1000000); // 1 МГц -- убрать строку при работе на Arduino UNO
Serial.begin(9600);
digitalWrite(CS_PIN, HIGH);
}
void loop() {
Serial.println(adcRead(0));
delay(50);
}
Что касается проводки, у меня есть следующее
MCP3008 ESP8266
V_DD 3v3
V_REF 3v3
AGND GND
CLK GPIO14 (D5)
D_OUT GPIO12 (D6)
D_IN GPIO13 (D7)
CS GPIO15 (D8)
DGND GND
@user1569339, 👍-1
Обсуждение1 ответ
У меня возникли проблемы с этим кодом и настройкой Adafruit Feather HUZZAH ESP8266.
Решение
Помимо добавления pinMode(CS_PIN, OUTPUT);
в setup()
, я также понизил частоту до гораздо более низкой. В моем случае снижение частоты до 10 000 дало хорошие показания.
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Как изменить имя модуля ESP8266-12E по умолчанию
- Простой запрос GET с ESP8266HTTPClient
- В ESP-12E NodeMCU, какой выход PIN A0?
Я не вижу никакого
pinMode(CS_PIN, OUTPUT);
, @SoreDakeNoKotoЭто исправило это! Думаю, мне удалось это не заметить., @user1569339