Allora, ce l'ho fatta, dopo attimi di panico perchè non trovavo un cavetto usb C funzionante...
Ho usato un dac MCP4725, ed ho scritto questo sketch:
#include <Wire.h>
#include <MCP4725.h>
MCP4725 dac(0x61);
byte pin = 2;
uint16_t set = 2048;
uint16_t alto = 0;
uint16_t basso = 0;
uint16_t diff = 0;
void setup(){
Serial.begin(115200);
Serial.println("Program begin...");
Wire.begin();
dac.begin();
pinMode(pin,INPUT);
Serial.print("dac.begin() -> ");
Serial.println(dac.isConnected());
dac.setValue(set);
}
void loop(){
Serial.println("Test begin...");
set = 2048;
while(digitalRead(pin) == LOW){
set++;
dac.setValue(set);
delay(50);
}
alto = set;
while(digitalRead(pin) == HIGH){
set--;
dac.setValue(set);
delay(50);
}
basso = set;
Serial.print("Soglia alta dac: ");
Serial.print(alto);
Serial.print(" , volt: ");
dac.setValue(alto);
Serial.println(dac.getVoltage(),2);
Serial.print("Soglia bassa dac: ");
Serial.print(basso);
Serial.print(" , volt: ");
dac.setValue(basso);
Serial.println(dac.getVoltage(),2);
Serial.print("Isteresi ");
Serial.print((alto-basso)*(5.0/4096),2);
Serial.println(" volt");
delay(1000);
}
L'ho fatto girare su un Uno R3 e su un Uno R4 wifi, questo è il risultato:
Test Isteresi
Arduino Uno R3
Program begin...
dac.begin() -> 1
Test begin...
Soglia alta dac: 2048 , volt: 2.50
Soglia bassa dac: 1850 , volt: 2.26
Isteresi 0.24 volt
Test begin...
Soglia alta dac: 2097 , volt: 2.56
Soglia bassa dac: 1857 , volt: 2.27
Isteresi 0.29 volt
Test begin...
Soglia alta dac: 2094 , volt: 2.56
Soglia bassa dac: 1853 , volt: 2.26
Isteresi 0.29 volt
Test begin...
Soglia alta dac: 2090 , volt: 2.55
Soglia bassa dac: 1859 , volt: 2.27
Isteresi 0.28 volt
Arduino Uno R4 wifi
Program begin...
dac.begin() -> 1
Test begin...
Soglia alta dac: 2650 , volt: 3.24
Soglia bassa dac: 2650 , volt: 3.24
Isteresi 0.00 volt
Test begin...
Soglia alta dac: 2048 , volt: 2.50
Soglia bassa dac: 2047 , volt: 2.50
Isteresi 0.00 volt
Test begin...
Soglia alta dac: 2647 , volt: 3.23
Soglia bassa dac: 2647 , volt: 3.23
Isteresi 0.00 volt
Test begin...
Soglia alta dac: 2649 , volt: 3.23
Soglia bassa dac: 2649 , volt: 3.23
Isteresi 0.00 volt
Test begin...
Soglia alta dac: 2048 , volt: 2.50
Soglia bassa dac: 2047 , volt: 2.50
Isteresi 0.00 volt
Quindi sembra confermato, l'R4 non ha isteresi sugli input digitali.
Visto che ho il setup montato a disposizione, dimmi se vuoi che provi con altri pin.
Ciao, Ale.