///FRECUENCIOMETRO///
long rango=5; //rango por el que se disparará la salida 2 y pasa a estado lógico 1
long ultimamedicion; //contiene el valor de la ultima medición que disparó a lógico 1, la salida 2
int ciclo=0; //1=alto 0=bajo
int cambiodeciclo=0;
int picodetencion;
int valledetension=1023;
long contadorciclo;
/// ///
boolean estadoBPM=true; //guarda el estado del led (encendido o apagado)
boolean estadoLed=true; //guarda el estado del led (encendido o apagado)
int intervaloEncendido=100; //tiempo que esta encendido un led
int intervaloApagado=100; //tiempo que esta apagado un led
int IntervaloBPM=1000; //tiempo que esta apagado el led
int IntervaloBPM2=1; //tiempo que esta apagado el led
unsingned long tiempoAnteriorEncendido=0; //guarda tiempo referencia a comparar
unsingned long tiempoAnteriorApagado=0;//guarda tiempo referencia a comparar
unsingned long tiempoAnteriorBPM=0; //guarda tiempo referencia a comparar
unsingned long tiempoAnteriorBPM2=0;//guarda tiempo referencia a comparar
int pulso=0;
int pulso2=0;
int senal=0;
int buzzer=7;
void setup()
{
Serial.begin(9600);
//display.begin (SSD1306_SWITCHCAPVCC);
display.begin(SSD1306_SWITCHCAPVCC,0X3C); // //inicia pantalla con dirección 0x3D para la conexión I2C. 0x02
display.clearDisplay();
display.setTexColor(WHITE);
pinMode(buzzer, OUTPUT);
pinMode(8, OUTPUT);
display.cleardisplay();
for (int i=0; i<128; i++) //ponemos a 0 el array
data[i]=0;
}
for (int x=0; x<128; x++)
{
i=i%128;
//display.drawPixel(x,data[i++],1);
display.drawPixel(x,data[i],x,anterior,1);
anterior=data[i];
i++;
if (x==0) //quita que se repita linea 0 y 128
{
display.clearDisplay();
}
}
///BPM///
display.setCursor(0,5);
display.print("F.RESP=");
//display.setCursor(10,20);
display.setCursor(90,5);
display.print(pulso2*6);
display.display();
///FRECUENCIA RESPIRATORIA///
senal=lecturaSensor; //guardamos valor en la variable senal
if (senal>=(ultimamedicion+100)) //salida 2 pasa a 1 logico si la tencion medida en la entrada analogica 0 es mayor que la anterior
{
ultimamedicion=senal; //se asigna la variable ultimamedicion el valor medido por la entrada analogica 0
ciclo=1;
if (senal>picodetension) //si la tencion medida por la entrada 0 es la mayor a la detectada, se asigna la variable pico de tencsion
{
picodetension=senal; //se asigna el valor leido por la entrada 0 analogica y la variable de picodetension
}
}
if (senal<=(ultimamedicion-100)) //la salida 2 pasa al a 1 analogico si la tension medida en la entrada analogica 0 es menor
{
ultimamedicion=senal; //se asigna a la variable ultimamedicion la lectura memida por el puerto analogico 0
ciclo=0; //el ciclo se pone a 0, el voltaje epieza a bajar desde el pico de tension mas alta
if (senal<valledetension) //se cumple la tension detectada por el puerto analógico 0 es menor
{
valledetension=senal; //se asigna a la variable valledetension el valor medido por la entrada analogica 0
}
}
///1 minuto///
if(millis()-tiempoAnteriorBPM>=IntervaloBPM){
lecturaSensor=analogRead(sensor);
estadoBPM=false;
pulsos2=pulsos;
tiempoAnteriorBPM=millis(); //guarda el tiempo actual para contar el tiempo apago
pulsos=0
}
if (millis()-tiempoAnteriorBPM2>=IntervaloBPM2){
lecturaSensor=analogRead(sensor);
estadoBPM=true;
//pulsos2=(pulsos2+pulsos2)/2;
//Serial.print(pulso2*4);
tiempoAnteriorBPM2=millis(); //guarda el tiempo actual para comenzar a contar el tiempo apagado
}
if (millis(-tiempoAnteriorEncendido>=intervaloEncendido)&&estadoLed==true && ciclo==0)
{//si ha transcurrido el periodo programado
include
include
include
include
define OLED_RESET 13
//Adafruit_SSD11306.h display(OLED_RESET); //OLED 4 PINES Adafruit_SSD11306.h display=Adafruit_SSD11306(128,64,&Wire);
define SSD11306_128_64
int sensor=A0; int lecturaSensor=0;
byte data[128]; //Para guardar lecturas byte indexs=0; byte anterior;
///FRECUENCIOMETRO/// long rango=5; //rango por el que se disparará la salida 2 y pasa a estado lógico 1 long ultimamedicion; //contiene el valor de la ultima medición que disparó a lógico 1, la salida 2 int ciclo=0; //1=alto 0=bajo int cambiodeciclo=0; int picodetencion; int valledetension=1023; long contadorciclo; /// /// boolean estadoBPM=true; //guarda el estado del led (encendido o apagado) boolean estadoLed=true; //guarda el estado del led (encendido o apagado) int intervaloEncendido=100; //tiempo que esta encendido un led int intervaloApagado=100; //tiempo que esta apagado un led
int IntervaloBPM=1000; //tiempo que esta apagado el led int IntervaloBPM2=1; //tiempo que esta apagado el led
unsingned long tiempoAnteriorEncendido=0; //guarda tiempo referencia a comparar unsingned long tiempoAnteriorApagado=0;//guarda tiempo referencia a comparar unsingned long tiempoAnteriorBPM=0; //guarda tiempo referencia a comparar unsingned long tiempoAnteriorBPM2=0;//guarda tiempo referencia a comparar
int pulso=0; int pulso2=0; int senal=0;
int buzzer=7;
void setup() { Serial.begin(9600); //display.begin (SSD1306_SWITCHCAPVCC); display.begin(SSD1306_SWITCHCAPVCC,0X3C); // //inicia pantalla con dirección 0x3D para la conexión I2C. 0x02 display.clearDisplay(); display.setTexColor(WHITE); pinMode(buzzer, OUTPUT); pinMode(8, OUTPUT); display.cleardisplay(); for (int i=0; i<128; i++) //ponemos a 0 el array data[i]=0; }
void loop() { display.cleardisplay(); indexs=indexs%128; lecturaSensor=analogRead(sensor); Serial.println(lecturaSensor); data[indexs]=64*lecturaSensor/1024; indexs++; byte i=indexs;
for (int x=0; x<128; x++) { i=i%128; //display.drawPixel(x,data[i++],1); display.drawPixel(x,data[i],x,anterior,1); anterior=data[i]; i++; if (x==0) //quita que se repita linea 0 y 128 { display.clearDisplay(); } } ///BPM/// display.setCursor(0,5); display.print("F.RESP="); //display.setCursor(10,20); display.setCursor(90,5); display.print(pulso2*6); display.display();
///FRECUENCIA RESPIRATORIA/// senal=lecturaSensor; //guardamos valor en la variable senal
if (senal>=(ultimamedicion+100)) //salida 2 pasa a 1 logico si la tencion medida en la entrada analogica 0 es mayor que la anterior { ultimamedicion=senal; //se asigna la variable ultimamedicion el valor medido por la entrada analogica 0 ciclo=1; if (senal>picodetension) //si la tencion medida por la entrada 0 es la mayor a la detectada, se asigna la variable pico de tencsion { picodetension=senal; //se asigna el valor leido por la entrada 0 analogica y la variable de picodetension } } if (senal<=(ultimamedicion-100)) //la salida 2 pasa al a 1 analogico si la tension medida en la entrada analogica 0 es menor { ultimamedicion=senal; //se asigna a la variable ultimamedicion la lectura memida por el puerto analogico 0 ciclo=0; //el ciclo se pone a 0, el voltaje epieza a bajar desde el pico de tension mas alta if (senal<valledetension) //se cumple la tension detectada por el puerto analógico 0 es menor { valledetension=senal; //se asigna a la variable valledetension el valor medido por la entrada analogica 0 } } ///1 minuto/// if(millis()-tiempoAnteriorBPM>=IntervaloBPM){ lecturaSensor=analogRead(sensor); estadoBPM=false; pulsos2=pulsos; tiempoAnteriorBPM=millis(); //guarda el tiempo actual para contar el tiempo apago pulsos=0 }
if (millis()-tiempoAnteriorBPM2>=IntervaloBPM2){ lecturaSensor=analogRead(sensor); estadoBPM=true; //pulsos2=(pulsos2+pulsos2)/2; //Serial.print(pulso2*4); tiempoAnteriorBPM2=millis(); //guarda el tiempo actual para comenzar a contar el tiempo apagado }
if (millis(-tiempoAnteriorEncendido>=intervaloEncendido)&&estadoLed==true && ciclo==0) {//si ha transcurrido el periodo programado
}