Hola gente.. Como van?
A ver, se me presento otro problema, Me trajeron un termómetro para ver si podía leer cuando fuese alta o normal la temperatura. (Adjunto imagen del termómetro)
Partí de tomar la señal de los led, al conectarlo al Arduino la lectura es lógica inversa, siempre esta HIGH o 1. para cuando me mido la temperatura, al ser normal me genera un pulso de 0 o LOW, y al ser alto me genera dos pulsos LOW o 0 en intermitencia 010.
Ahora mi consulta es la siguiente...
const int pinIRd = 4; // señal conectada en la señal del led RGB verde
const int pinIRd2 = 13; // señal conectada en la señal del led RGB roja
const int termometro = 2; // para encender el termometro desde arduino
int IRvalueD = 0;
int IRvalueD2 = 0;
void setup()
{
Serial.begin(9600);
pinMode(pinIRd, INPUT);
pinMode(pinIRd2, INPUT);
pinMode(termometro, OUTPUT);
}
void loop()
{
digitalWrite(termometro, HIGH);
Serial.print("\t NORMAL=");
Serial.println(IRvalueD);
Serial.print("\t FIEBRE=");
Serial.println(IRvalueD2);
Serial.println("-------------------");
delay(4000);
IRvalueD = digitalRead(pinIRd);
IRvalueD2 = digitalRead(pinIRd2);
}*/
Con este código de prueba o test anterior me lee perfecto, 10 al estar bien, 0101, al ser alta y se mantiene en 11 si no se toma la temperatura.
Pero al pasarlo al código y combinar con la puerta que venia trabajando ( los que pudieron leer mi otro post entenderán), en general al llevarlo al código general no me funciona, incluso añadiéndolo como un protothread.
Ahora indagué y conseguí el tema del la función pulseIn() la use y la recepción de pulsos es inestable.. como que me tomara uno si, 2 no, y así..
Mi consulta es, hay algún otro método con el que pudiera leerlos pulsos generados por el termómetro con el Arduino?? leí por ahí algo de micros() no se por ahí me serviría o que otra solución pudieran ver?
Adjunto el código con pulseIn()
int pin = 13;
int pin2 = 4;
unsigned long duration;
unsigned long duration2;
const int termometro = 2;
void setup() {
Serial.begin(9600);
pinMode(pin, INPUT);
pinMode(pin2, INPUT);
pinMode(termometro, OUTPUT);
}
void loop() {
digitalWrite(termometro, HIGH);
duration = 0;
duration2 = 0;
Serial.print("fiebre");
duration = pulseIn(pin, LOW);
Serial.println(duration);
Serial.print("bien");
duration2 = pulseIn(pin2, LOW);
Serial.println(duration2);
o no se si podría mezclar los 2 scketch, 2 programas separados en uno solo.. se puede tener múltiples void loop?
Desde ya gracias por lo que puedan asesorarme, soy nuevo en el mundo
SALU2
P.D: trabajo con una placa Arduino Uno