Hola estoy intentando leer simultaneamente 6 voltajes entre 0-5 volts de las seis entradas analogicas que tiene el diecimila , compararlas entre ellas y mostrar un 1 en la salida correspondiente de otras seis salidas digitales , osea el voltaje mayor en una entrada muestra un 1 en su salida correspondiente , las demás quedan a 0 . Agradeceria me echarais una mano ya que estoy muy verde todavia en la programación del arduino diecimila , Gracias
Hola,
veamos esto que preguntas no es complicado, pero en lugar de resolverte todo el soft, te voy a hacer un ejemplo con solo dos entradas analogicas y dos digitales y tu tendras que hacer el resto, te parece?
// definicion pines analogicos
int analPin0 = 0;
int analPin1 = 1;
// definicion pines digitales
int outPin0 = 2;
int outPin1 = 3;
void setup() {
// declara pines digitales como salidas
pinMode(outPin0, OUTPUT);
pinMode(outPin0, OUTPUT);
}
void loop() {
int val0 = analogRead(analPin0);
int val1 = analogRead(analPin1);
if (val0 > val1) {
digitalWrite(outPin0, HIGH);
digitalWrite(outPin1, LOW);
} else {
digitalWrite(outPin0, LOW);
digitalWrite(outPin1, HIGH);
}
}
Este programa hara la magia para el caso de tener 2 pines de entrada y 2 de salida, sin embargo, no creo que sea la mejor forma de hacerlo para 6 pines, si bien si que es la mas clara. Para 6 pines lo mejor es almacenar todos los datos en un array, hacer una lectura con un FOR, y asi ... la verdad ... me siento con ganas de hacerlo, asi que te lo resuelvo ... ahora bien, la primera y la ultima vez
// DEBUG = 1, mostrara datos en el
// monitor de puerto serie
#define DEBUG 1
// definicion numero pines a usar
// como maximo 6, minimo 1
// lo declaramos como constante
#define numPins 6
// definicion pines digitales indicando el primer
// pin, el resto vienen en incremento
int outPin0 = 2;
// valores analogicos medidos
// almacenados en un array
int val[numPins];
void setup() {
// declara pines digitales como salidas
for (int i = 0; i < numPins; i++)
pinMode(outPin0 + i, OUTPUT);
if (DEBUG) Serial.begin(9600);
}
void loop() {
// lee todos los sensores de una vez
// y almacena los valores en el array
for (int i = 0; i < numPins; i++)
val[i] = analogRead(i);
int maxNum = 0;
for (int i = 0; i < numPins; i++)
maxNum = max(val[i], maxNum);
for (int i = 0; i < numPins; i++)
if (maxNum > val[i]) val[i] = 0;
else {
val[i] = 1;
maxNum = 1025;
}
if (DEBUG) {
for (int i = 0; i < numPins; i++)
if (val[i] != 0) Serial.print(1);
else Serial.print(0);
Serial.println();
delay(100);
}
for (int i = 0; i < numPins; i++)
if (val[i] != 0) digitalWrite(outPin0+i, HIGH);
else digitalWrite(outPin0+i, LOW);
}
A ver si te sirve,
/d