|
|
#define RawInput = 0
#define filteredInput = 1
#define ActiveInput 1
void setup() {
Serial.begin(115200); Init serial communication
DDRB = 0B00000000; All inputs (high impedance)
DDRC = 0B00000000; All inputs (high impedance)
DDRD = 0B00000000; All inputs (high impedance)
DDRD = 10;
ADC setup
ADMUX =
(0 REFS1)
(1 REFS0) AVcc ref with capacitor at AREF pin
(0 ADLAR) Keep right adjusted
(0 MUX3)
(0 MUX2)
(0 MUX1)
(1 MUX0);
ADCSRA =
(1 ADEN) ADC enable
(0 ADSC) Dont start conversion now
(0 ADATE) Dont use auto trigger
(1 ADIF) Interrupt flag
(1 ADIE) Dont use interrupt
(1 ADPS2) ADC clock divider
(0 ADPS1)
(0 ADPS0);
ADCSRB =
(1 ACME) Enable multiplexer
(0 ADTS2) Free running mpde
(0 ADTS1)
(0 ADTS0);
AdcMux(ActiveInput);
ADCSRA = (1 ADSC); Start AD conversion;
}
#define SAMPLES_TO_AVERAGE 10000 7500
long averageCount =0;
long count =0;
#define SAMPLES_TO_PLOT 1000 500
int readingArray[SAMPLES_TO_PLOT+2];
long averageMode2 =0;
int Average_count = 1000;
int avgIterations =0;
int ScanMode = 2;
ISR(ADC_vect) {
uint8_t low, high;
low = ADCL;
high = ADCH;
averageMode2 += (high 8) low; ADC;
averageMode2 += ADC;
averageMode2 += analogRead(1);
avgIterations++;
if (avgIterations == Average_count) {
readingArray[count] = averageMode2 AVERAGE_COUNT_MODE2;
count++;
Serial.print(averageMode2); AVERAGE_COUNT_MODE2);
Serial.print(,);
avgIterations = 0;
averageMode2 =0;
}
AdcMux(ActiveInput);
ADCSRA &= ~(1 ADIF); Clear AD ready flag
ADCSRA = (1 ADSC); Start AD conversion;
if (count == SAMPLES_TO_PLOT) {
count =0;
Serial.println(!);
}
}
void AdcMux(char muxNumber) {
ADMUX=0;
ADMUX &= ~(1 MUX3); Set to 0
ADMUX &= ~(1 MUX2); Set to 0
ADMUX &= ~(1 MUX1); Set to 0
ADMUX &= ~(1 MUX0); Set to 0
ADMUX = muxNumber;
}
char string_started = 0;
char serial_data[20];
int serial_index = 0;
void loop () {
if (Serial.available()) {
if (string_started == 1) {
serial_data[serial_index++] = Serial.read();
if (serial_data[serial_index-4] == 'F' && serial_data[serial_index-3] == 'H' && serial_data[serial_index-2] == 'S' && serial_data[serial_index-1] == 'S') {
Average_count = 100;
serial_index = 0;
string_started=0;
}
else if (serial_data[serial_index-4] == 'C' && serial_data[serial_index-3] == 'O' && serial_data[serial_index-2] == 'N' && serial_data[serial_index-1] == 'S') {
Average_count = 1000;
serial_index = 0;
string_started = 0;
}
else if (serial_data[serial_index-3] == 'S' && serial_data[serial_index-2] == 'E' && serial_data[serial_index-1] == 'T') {
Average_count = 0;
for (int i = 0; i serial_index-3; i++) {
Average_count = Average_count10 + (serial_data[i]-48);
}
serial_index = 0;
string_started = 0;
}
if (serial_index = 20) {
serial_index = 0;
string_started = 0;
}
}
else if (Serial.read() == '$') {
string_started = 1;
}
}
} |
|