Skip to content

Callback indexes look wrong #2

@Nemecsek

Description

@Nemecsek

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);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions