Commit cbfed917 authored by Jesus Fabian Calixto Mendez's avatar Jesus Fabian Calixto Mendez
Browse files

actulizando local

parent abafd4df
/*
* @algoritmo.c
*
*
* Proyecto final
* Modulo Round Robin OBTENER DATOS POR UART
*
* Este modulo agrupa las funciones de manejo del timer
*
* @version 1.0
* @author Leoncio Rios, Jesus Calixto
* Version inicial
* @date 20 de Mayo 2022
*
**********************************************************/
* @algoritmo.c
*
*
* Proyecto final
* Modulo Round Robin OBTENER DATOS POR UART
*
* Este modulo agrupa las funciones de manejo del timer
*
* @version 1.0
* @author Leoncio Rios, Jesus Calixto
* Version inicial
* @date 20 de Mayo 2022
*
**********************************************************/
#include <algoritmo.h>
#include <msp430.h>
......@@ -21,8 +20,8 @@
#include <math.h>
#include <stdio.h>
int q =0;
int k =0;
int q = 0;
int k = 0;
char charY;
char charZ;
......@@ -35,8 +34,8 @@ uint8_t zz = 0;
unsigned int promedioY = 0;
unsigned int promedioZ = 0;
unsigned int sumaY= 0;
unsigned int sumaZ= 0;
unsigned int sumaY = 0;
unsigned int sumaZ = 0;
int restaVarY = 0;
int restaVarZ = 0;
......@@ -59,15 +58,16 @@ unsigned int minimoZ = 100;
uint8_t promedioFinal = 0;
uint8_t subiendoEscaleras = 0;
char concatenado;
void recopilarDatos(int16_t* ejeX, int16_t* ejeY, int16_t* ejeZ){
void recopilarDatos(int16_t *ejeX, int16_t *ejeY, int16_t *ejeZ)
{
if(q<datos){
if (q < datos)
{
yy = (int)division(ejeY,100);
zz = (int)division(ejeZ,10);
yy = (int)division(ejeY, 100);
zz = (int)division(ejeZ, 10);
buffer_Y[q] = yy;
buffer_Z[q] = zz;
......@@ -76,126 +76,134 @@ void recopilarDatos(int16_t* ejeX, int16_t* ejeY, int16_t* ejeZ){
}
}
void procesarDatos(uint8_t* resultado){
void procesarDatos(uint8_t *resultado)
{
sumaY = 0;
sumaZ = 0;
//Suma
for(k = 0; k<datos ; k++){
sumaVarY = 0;
sumaVarZ = 0;
maximoY = 0;
maximoZ = 0;
minimoY = 0;
minimoZ = 0;
// Suma
for (k = 0; k < datos; k++)
{
sumaY = sumaY + buffer_Y[k];
sumaZ = sumaZ + buffer_Z[k];
//Maximos Y
if(buffer_Y[k]> maximoY){
// Maximos Y
if (buffer_Y[k] > maximoY)
{
maximoY = buffer_Y[k];
}
//minimos Y
else if (buffer_Y[k]< minimoY){
// minimos Y
else if (buffer_Y[k] < minimoY)
{
minimoY = buffer_Y[k];
}
//Maximos Z
if(buffer_Z[k]> maximoZ){
// Maximos Z
if (buffer_Z[k] > maximoZ)
{
maximoZ = buffer_Z[k];
}
//minimos Z
else if (buffer_Z[k]< minimoZ){
// minimos Z
else if (buffer_Z[k] < minimoZ)
{
minimoZ = buffer_Z[k];
}
}
// Promedio
promedioY = sumaY / datos;
promedioZ = sumaZ / datos;
//Promedio
promedioY = sumaY/datos;
promedioZ = sumaZ/datos;
// Varianza
for (k = 0; k < datos; k++)
{
restaVarY = buffer_Y[k] - promedioY;
sumaVarY = sumaVarY + (restaVarY * restaVarY);
//Varianza
for(k = 0; k<datos ; k++){
restaVarY = buffer_Y[k] - promedioY;
sumaVarY = sumaVarY + (restaVarY*restaVarY);
restaVarZ = buffer_Z[k] - promedioZ;
sumaVarZ = sumaVarZ + (restaVarZ*restaVarZ );
restaVarZ = buffer_Z[k] - promedioZ;
sumaVarZ = sumaVarZ + (restaVarZ * restaVarZ);
}
varianzaY = sumaVarY/(datos-1);
varianzaZ = sumaVarZ/(datos-1);
varianzaY = sumaVarY / (datos - 1);
varianzaZ = sumaVarZ / (datos - 1);
//Desviacion estandar
// Desviacion estandar
desEstandarY = sqrt(varianzaY);
desEstandarZ = sqrt(varianzaZ);
subiendoEscaleras = 0;
promedioFinal = 0;
//PROMEDIO
if(promedioZ > 60){
if(promedioY < 39){
// PROMEDIO
if (promedioZ > 60)
{
if (promedioY < 39)
{
promedioFinal++;
}
}
}
//SUMA
if(sumaZ > 9000){
if(sumaY < 5750){
// SUMA
if (sumaZ > 9000)
{
if (sumaY < 5750)
{
promedioFinal++;
}
}
//VARIANZA
if(varianzaZ > 50){
if(varianzaY > 7){
// VARIANZA
if (varianzaZ > 2500)
{
if (varianzaY > 60)
{
promedioFinal++;
}
}
//DESVIACION ESTANDAR
if(desEstandarZ > 50){
if(desEstandarY > 7){
// DESVIACION ESTANDAR
if (desEstandarZ > 50)
{
if (desEstandarY > 7)
{
promedioFinal++;
}
}
//MAXIMOS
if(maximoZ > 200){
if(maximoY > 57){
// MAXIMOS
if (maximoZ > 200)
{
if (maximoY > 57)
{
promedioFinal++;
}
}
//se calcula el porcentaje obtenido de 0 a 100
promedioFinal = promedioFinal*20;
// se calcula el porcentaje obtenido de 0 a 100
promedioFinal = promedioFinal * 20;
//si es mayor a 80%
if(promedioFinal > 80){
// si es mayor a 80%
if (promedioFinal >= 80)
{
subiendoEscaleras = 1;
}
else{
else
{
subiendoEscaleras = 0;
}
q=0;
//se manda el resultado 1 o 0
*resultado = subiendoEscaleras;
q = 0;
// se manda el resultado 1 o 0
*resultado = subiendoEscaleras;
}
division(int a, int b)
{
return(a / b);
}
return (a / b);
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment