Depois de muito estudar sobre o módulo SPI conversor de analógico para digital AD7705 da placa vermelha que se vende por aí (AliExpress, Mercado Livre) e usar a biblioteca do Kerry D. Wong (AD7705 library), consegui fazê-lo funcionar certinho no Arduino Uno (clone com CH340). Porém, ao passar a mesma montagem pro Nano (também um clone com CH340, ligações conferidas e refeitas várias vezes, inclusive com troca da matriz de contatos) não funcionou.
O sketch de teste usa um gerador de tensão MCP4725 (DAC de 12 bits, I2C) que gera uma rampa de 0 a 5V e que é lida pelo canal A do AD7705 e pelo A0 do Arduino (só pra conferir). O canal B lê a tensão de 3,3 V.
Segue abaixo o programinha:
#include <Wire.h>
#include <AD770X.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac; // Digital para Analogico (DAC)
AD770X ad7706(2.5); // Analogico para digital (ADC) com tensao de referencia 2.5V
float valorA; // Variaveis que vao receber as leituras
float valorB;
uint16_t valorDAC;
void setup() {
Serial.begin(9600);
dac.begin(0x62); // Endereço I2C do DAC
}
void loop() {
for (int i = 1; i < 4096; i = i + 8) { //Incrementa de 8 em 8 ate o maximo de 12 bits
dac.setVoltage(i, false); // Gera uma tensão na saida do DAC
ad7706.reset();
ad7706.init(AD770X::CHN_AIN1, 0x1, 0x0, 0x0, 0x7); // Configura o canal A do ADC
valorA = ad7706.readADResult(AD770X::CHN_AIN1); // Le a tensao gerada no DAC
ad7706.reset();
ad7706.init(AD770X::CHN_AIN2, 0x1, 0x0, 0x0, 0x7); // Configura o canal B do ADC
valorB = ad7706.readADResult(AD770X::CHN_AIN2); // Le 3.3V
valorDAC = analogRead(A0); // Le o que foi gerado no DAC
Serial.print(valorDAC); //Escreve o valor gerado no DAC
Serial.print("\t"); // Tabulacao
Serial.print(valorA); //Escreve o valor A
Serial.print("\t"); // Tabulacao
Serial.println(valorB); //Escreve o valor B
}
Serial.println("***FIM***"); //Soh pra marcar o final da serie
delay(5000);
}
Qual é a diferença entre os Arduinos Uno e Nano para que um mesmo sketch não funcione no Nano?