#include #include using Combie::Adc; Adc adc; struct Datensatz { Adc::AnalogSource kanal; unsigned long wert; }; constexpr unsigned anzahl {3}; Datensatz messungen[anzahl] { {Adc::MUX_ADC1,0}, {Adc::MUX_ADC0,0}, {Adc::MUX_ADC4,0}, }; unsigned idx {0}; void adcCallBack(int value) { messungen[idx].wert += value; adc.setSource(messungen[idx].kanal); idx++; if(idx >= anzahl) idx = 0; adc.startConversion(); } void setup() { Serial.begin(9600); adc .enable() // .setReference(Adc::REF_11) .setReference(Adc::REF_VCC) .setClockDivisor(Adc::DIV_128) .setSource(messungen[idx].kanal) .setCallBack(adcCallBack) .enableIrq() .startConversion(); } void loop() { delay(1000); Datensatz datensatz; for(Datensatz &data:messungen) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) datensatz = data; Serial.print("kanal: "); Serial.print(datensatz.kanal); Serial.print(" wert: "); Serial.println(datensatz.wert); Serial.println(" -----------"); } }