-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
Referring to my example below, it looks like the callback indexes are not associated to the correct ADC channel: a read on A1 will report index 2; A2 index 3; A3 index 4; A4 index 5; A5 index 0.
In my case I scan through 6 channels, but only one has a callback.
Another example: scanning A0 and A1 only will return the values respectively to index 1 and 0 (reversed).
In this code, readings not reassigned by a callback are -1.
#include <AnalogScanner.h>
AnalogScanner scanner;
int scanOrder[] = {A0, A1, A2, A3, A4, A5};
const int SCAN_COUNT = sizeof(scanOrder) / sizeof(scanOrder[0]);
// text callback values
int readings[6] = {-1,-1,-1,-1,-1,-1}; // available for 6 ADC channels
void callback_on_read(int index, int pin, int newValue) {
readings[index] = index; // <------- it must assign index 5 here,
// but only assign 0 to readings[0]
}
void setup() {
Serial.begin(38400);
scanner.setScanOrder(SCAN_COUNT, scanOrder);
scanner.beginScanning();
// scanner.setCallback(A0, callback_on_read);
// scanner.setCallback(A1, callback_on_read);
// scanner.setCallback(A2, callback_on_read);
// scanner.setCallback(A3, callback_on_read);
// scanner.setCallback(A4, callback_on_read);
scanner.setCallback(A5, callback_on_read); // <------ it must callback and fill readings[5]
}
void loop() {
for (int i=0; i < SCAN_COUNT; ++i) {
if (i > 0) {
Serial.print(" ");
}
Serial.print("A");
Serial.print(i);
Serial.print("=");
Serial.print(readings[i]);
}
Serial.println();
delay(1);
}
bdutta
Metadata
Metadata
Assignees
Labels
No labels