Verunchikc / proyecto-Buikuan

0 stars 0 forks source link

El de respirar #2

Open Verunchikc opened 9 months ago

Verunchikc commented 9 months ago

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

}