merose / analogscanner Goto Github PK
View Code? Open in Web Editor NEWInterrupt-driven analog input scanner class for Arduino.
License: Apache License 2.0
Interrupt-driven analog input scanner class for Arduino.
License: Apache License 2.0
Hello, I know you haven´t tested on Due, but well, I'am, so I got the following results, although on 1.5.6r2 didnt...
It seems to me it is plainly a matter of names not being adressed but I'm really not familiar with the avr stuff... Not sure if I can be of any help, good day:
In file included from G:\media\arduino\arduino-1.5.7\hardware\arduino\sam\cores\arduino/Arduino.h:31:0,
from G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:36:
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp: In member function 'void AnalogScanner::beginScanning()':
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:229:7: error: 'ADCSRA' was not declared in this scope
sbi(ADCSRA, ADEN); // Enable the ADC.
^
G:\media\arduino\arduino-1.5.7\hardware\arduino\sam\cores\arduino/avr/pgmspace.h:10:23: note: in definition of macro '_SFR_BYTE'
#define _SFR_BYTE(n) (n)
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:229:3: note: in expansion of macro 'sbi'
sbi(ADCSRA, ADEN); // Enable the ADC.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:229:15: error: 'ADEN' was not declared in this scope
sbi(ADCSRA, ADEN); // Enable the ADC.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:45:46: note: in definition of macro 'sbi'
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:45:49: error: '_BV' was not declared in this scope
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:229:3: note: in expansion of macro 'sbi'
sbi(ADCSRA, ADEN); // Enable the ADC.
^
In file included from G:\media\arduino\arduino-1.5.7\hardware\arduino\sam\cores\arduino/Arduino.h:31:0,
from G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:36:
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:231:7: error: 'ADMUX' was not declared in this scope
cbi(ADMUX, ADLAR); // Make sure the ADC value it right-jusitified.
^
G:\media\arduino\arduino-1.5.7\hardware\arduino\sam\cores\arduino/avr/pgmspace.h:10:23: note: in definition of macro '_SFR_BYTE'
#define _SFR_BYTE(n) (n)
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:231:3: note: in expansion of macro 'cbi'
cbi(ADMUX, ADLAR); // Make sure the ADC value it right-jusitified.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:231:14: error: 'ADLAR' was not declared in this scope
cbi(ADMUX, ADLAR); // Make sure the ADC value it right-jusitified.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:42:47: note: in definition of macro 'cbi'
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:232:15: error: 'ADIE' was not declared in this scope
sbi(ADCSRA, ADIE); // Enable ADC complete interrupts.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:45:46: note: in definition of macro 'sbi'
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
^
In file included from G:\media\arduino\arduino-1.5.7\hardware\arduino\sam\cores\arduino/Arduino.h:31:0,
from G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:36:
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp: In member function 'void AnalogScanner::endScanning()':
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:240:7: error: 'ADCSRA' was not declared in this scope
cbi(ADCSRA, ADEN); // Disable the ADC.
^
G:\media\arduino\arduino-1.5.7\hardware\arduino\sam\cores\arduino/avr/pgmspace.h:10:23: note: in definition of macro '_SFR_BYTE'
#define _SFR_BYTE(n) (n)
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:240:3: note: in expansion of macro 'cbi'
cbi(ADCSRA, ADEN); // Disable the ADC.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:240:15: error: 'ADEN' was not declared in this scope
cbi(ADCSRA, ADEN); // Disable the ADC.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:42:47: note: in definition of macro 'cbi'
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:42:50: error: '_BV' was not declared in this scope
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:240:3: note: in expansion of macro 'cbi'
cbi(ADCSRA, ADEN); // Disable the ADC.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:241:15: error: 'ADIE' was not declared in this scope
cbi(ADCSRA, ADIE); // Disable ADC complete interrupts.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:42:47: note: in definition of macro 'cbi'
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp: In member function 'void AnalogScanner::startNextScan()':
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:255:5: error: 'ADMUX' was not declared in this scope
ADMUX = (analogRef << 6) | (index & 7);
^
In file included from G:\media\arduino\arduino-1.5.7\hardware\arduino\sam\cores\arduino/Arduino.h:31:0,
from G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:36:
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:256:9: error: 'ADCSRA' was not declared in this scope
sbi(ADCSRA, ADSC); // Start the ADC conversion.
^
G:\media\arduino\arduino-1.5.7\hardware\arduino\sam\cores\arduino/avr/pgmspace.h:10:23: note: in definition of macro '_SFR_BYTE'
#define _SFR_BYTE(n) (n)
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:256:5: note: in expansion of macro 'sbi'
sbi(ADCSRA, ADSC); // Start the ADC conversion.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:256:17: error: 'ADSC' was not declared in this scope
sbi(ADCSRA, ADSC); // Start the ADC conversion.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:45:46: note: in definition of macro 'sbi'
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:45:49: error: '_BV' was not declared in this scope
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:256:5: note: in expansion of macro 'sbi'
sbi(ADCSRA, ADSC); // Start the ADC conversion.
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp: In member function 'void AnalogScanner::processScan()':
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:263:13: error: 'ADCL' was not declared in this scope
int low = ADCL;
^
G:\Lea\Arduino\libraries\AnalogScanner\AnalogScanner.cpp:264:14: error: 'ADCH' was not declared in this scope
int high = ADCH;
^
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);
}
works on atmega256o but the library is too slow just one same per second
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.