potřeboval bych poradit, jak adresovat dva moduly ADC převodníku připojené přes I2C na arduino.
S jedním modulem není problém. Adresace na modulech je upravena tak aby první modul měl adresu 0x48 a druhý pak 0x49.
Problém začal když jsem to chtěl naadresovat v programu. Na googlu jsem toho moc nezjistil a tedy se obracím na vás zda by mi s tím někdo nepomohl. Myslím že idea spočívá v tom zapsat při načítání vstupu z modulu i tu adresu. Ale dle codu co je přiložen to nefunguje i když podle té knihovny by to snad jít mělo. Prosím zkuste na to někdo mrknout a poradit jak by to mělo být. Zde je ten můj kod co le nefunguje. Knihovna je z Adafruitu co je v repozitaži IDE.
Kód: Vybrat vše
#include <Wire.h>
#include <Adafruit_ADS1015.h>
// Adafruit_ADS1115 ads; /* Use this for the 16-bit version */
Adafruit_ADS1015 ads1015(0x49); /* Use thi for the 12-bit version */
//Adafruit_ADS1015 ads1015;
void setup(void)
{
Serial.begin(9600);
Serial.println("Hello!");
Serial.println("Getting single-ended readings from AIN0..3");
Serial.println("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");
// The ADC input range (or gain) can be changed via the following
// functions, but be careful never to exceed VDD +0.3V max, or to
// exceed the upper and lower limits if you adjust the input range!
// Setting these values incorrectly may destroy your ADC!
// ADS1015 ADS1115
// ------- -------
// ads.setGain(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 3mV 0.1875mV (default)
// ads.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 2mV 0.125mV
// ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 1mV 0.0625mV
// ads.setGain(GAIN_FOUR); // 4x gain +/- 1.024V 1 bit = 0.5mV 0.03125mV
// ads.setGain(GAIN_EIGHT); // 8x gain +/- 0.512V 1 bit = 0.25mV 0.015625mV
// ads.setGain(GAIN_SIXTEEN); // 16x gain +/- 0.256V 1 bit = 0.125mV 0.0078125mV
ads1015(0x48).begin();
ads1015(0x49).begin();
}
void loop(void)
{
int16_t adc0, adc1, adc2, adc3, adc4, adc5, adc6, adc7;
// adc0 = ads1015(0x48).readADC_SingleEnded(0);
// adc1 = ads1015.readADC_SingleEnded(1);
// adc2 = ads1015.readADC_SingleEnded(2);
// adc3 = ads1015.readADC_SingleEnded(3);
adc4 = ads1015(0x49).readADC_SingleEnded(0);
adc5 = ads1015(0x49).readADC_SingleEnded(1);
adc6 = ads1015(0x49).readADC_SingleEnded(2);
adc7 = ads1015(0x49).readADC_SingleEnded(3);
Serial.print("AIN0: "); Serial.println(adc0);
Serial.print("AIN1: "); Serial.println(adc1);
Serial.print("AIN2: "); Serial.println(adc2);
Serial.print("AIN3: "); Serial.println(adc3);
Serial.println(" ");
delay(1000);
}