LECTURA DE MULTIPLES SENSORES ARDUINO UNO

Hola, estoy utilizando el arduino UNO, y desdeo leer 4 sensores analógicos, lo que quiero saber es si es posible leer los sensores lo más rápido posible para que parezca que se leen al mismo tiempo, alguien tiene una idea de como se hace eso?.

simplemente lee uno detras de otro, y si tiens que procesar los datos leidos hazlo despues de haber leido los 4 sensores.

Mira el primer código que se me ocurre es este:

double valor = 0; // 
double analogin = 5; // 
double analogin1 = 4;
double val2 = 0;
double valor2 =0;
double valor1= 0;

void setup(){

Serial.begin(115200); // I
}

void loop(){

valor = analogRead(analogin);
valor1 = (valor*5)/1023;
Serial.print("sensor1:");
Serial.println(valor1);
delay(1000);
val2 = analogRead(analogin1);
valor2 = (val2*5)/1023;
Serial.print("sensor2:");
Serial.println(valor2);
delay(100);
}

Como ves lo único que estoy haciendo es declarando los pines por donde van a ingresar los datos, después leo uno y pues imprimo el valor, ahora, los valores que me está dando no son muy certeros, debo primero de leerlos y después imprimirlos o de plano estoy planteando mal el código?

Gracias!

mirate la referencia para saber como usar bien las sentencias, tienes errores de ese tipo

mirate los ejemplos que vienen con el IDE para hacerte una idea de coo se hace

lo que lees no tiene por qué estar directamente relacionado con la magnitud que lees ( no es cierto , si que está relacionado) pero lo que queires es que arduino te muestre la magnitud medida en la magnitud que mide el sensor y no en milivoltios

entonces si, debes operar el valor medido en la entrada analógica y multiplicarla/dividirla/sumarla etc para que te muestre el valor que quieres

aqui tienes un ejemplo que viene con el IDE

const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);            
  // map it to the range of the analog out:
  outputValue = map(sensorValue, 0, 1023, 0, 255);  
  // change the analog out value:
  analogWrite(analogOutPin, outputValue);           

  // print the results to the serial monitor:
  Serial.print("sensor = " );                       
  Serial.print(sensorValue);      
  Serial.print("\t output = ");      
  Serial.println(outputValue);   

  // wait 10 milliseconds before the next loop
  // for the analog-to-digital converter to settle
  // after the last reading:
  delay(10);                     
}

este codigo te da por serie un valor de 0 a 255 lo que mide en el puerto analogico

si te das cuanta los pines analogicos los denomina como A0 , A1 … A5 no como 1,2 … 5

un saludo

Ok, pero en caso de que yo necesite más de una entrada analógica, es allí donde no sé si simplemente copiando el código y pegarlo de nuevo y simplemente cambiando las entradas será suficiente.

Me comentaban que puede haber una confusión en la lectura serial y que por ser varios senrores puedan mezclarse las entradas, no sé que tan cierto sea.

no te lies ...

para leer varios sensores

sensor1 = analogRead(A0);
delay(10); 
sensor2 = analogRead(A1);
delay(10);
sensor3 = analogRead(A2);
delay(10);
sensor4 = analogRead(A3);
delay(10);
sensor5 = analogRead(A4);

el delay de 10 microsegundos es para que entre una lectura y otra te de una medida correcta segun pone en el datasheet.
el micro tiene un solo convertidor A/D lo que hace internamente es multiplexarlo, pero esto es opaco en nuestra programación. con el codigo ese te vale para leer varios sensores

Hola estoy con un problema similar pero con 2 sensores de lectura de coriente
Codigo

float Sensibilidad=66; 

void setup() {
 
 Serial.begin(9600); 
}

void loop() 
{
 
 float voltajeSensor= analogRead(A0)*(5.0 / 1023.0);    
 float I=(voltajeSensor-2.5)/Sensibilidad; 
 Serial.print("Corriente: ");
 Serial.println(I,3); 
 delay(200);     
}

en este caso debe leer las entradas del pin A0 y A1
A0 lee una pantalla solar y A1 lee una bateria. donde deberia espesificar o declarar la secuencia de pines que mensionas en el post anterior???

Hola saeroptimizador, bienvenido al foro.

Acabas de responder un hilo que no tuvo mas comentarios desde el 2011 y además pasaste por alto la advertencia Warning que justamente te decía que hacia mas de 120 días que el hilo no tenía movimientos.

Te recomiendo que crees un nuevo hilo referenciado a éste.

Hilo cerrado!!