hola buen día
Es para comentarles si podrían ayudarme con un problema que tengo en leer dos sensores. Los cuales lee tensión y corriente, pero el codigo que tengo solo me lee una entrada analógica no se como podria hacer para cambiar el canal ya que solo se lee ADC. Este es el codigo.
const byte adcPin = 0; // A0
const int MAX_RESULTS = 100;
volatile int resultsV [MAX_RESULTS];
volatile int resultsI [MAX_RESULTS];
volatile int resultNumber;
void setup ()
{
Serial.begin (115200);
Serial.println ();
// reset Timer 1
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
TCCR1B = bit (CS11) | bit (WGM12); // CTC, prescaler of 8
TIMSK1 = bit (OCIE1B);
OCR1A = 338;
OCR1B = 338; // 39 = 20 uS - sampling frequency 50 kHz
ADCSRA = bit (ADEN) | bit (ADIE) | bit (ADIF); // turn ADC on, want interrupt on completion
ADCSRA |= bit (ADPS2); // Prescaler of 16
// ADCSRA |= (1 << ADPS1) | (1 << ADPS0); // 8 prescaler for 153.8 KHz
ADMUX = bit (REFS0) | (adcPin & 7);
ADCSRB = bit (ADTS0) | bit (ADTS2); // Timer/Counter1 Compare Match B
ADCSRA |= bit (ADATE); // turn on automatic triggering
}
// ADC complete ISR
ISR (ADC_vect)
{
resultsV[resultNumber++] = ADC;
//resultsI[resultNumber++] = ADC;
if(resultNumber == MAX_RESULTS)
{
ADCSRA = 0; // turn off ADC
}
}
EMPTY_INTERRUPT (TIMER1_COMPB_vect);
void loop () {
while (resultNumber < MAX_RESULTS)
{ }
for (int i = 0; i < MAX_RESULTS; i++)
{
Serial.print( resultsV);
Serial.print(" ");
Serial.print( resultsI);
Serial.println();
}
resultNumber = 0;
ADCSRA = bit (ADEN) | bit (ADIE) | bit (ADIF)| bit (ADPS2) | bit (ADATE);
// turn ADC back on
}