<commit_before>//----------------------------------------------------------------------------------------------------------------------------------------------//
//Prototipo NO.2 Proyecto 2 Cohete Agua. Codigo que lee 3 señales analogas de 0-5v y calcula los angulos de inclinacion.Tomando tambien los tiempos
// es capaz de predecir la distancia maxima
// Autores: <NAME>, <NAME>, <NAME>
// Universidad de los Andes
//----------------------------------------------------------------------------------------------------------------------------------------------//

//-------------------------------------------------//
//-----------------LIBRERIAS-----------------------//
//------------------------------------------------//
#include<avr/io.h>
#include<math.h>
#include<util/delay.h>
#include<stdbool.h>
//------------------------------------------------//


//------------------------------------------------//
//---------------DEFINIR FUNCIONES----------------//
//------------------------------------------------//
#define sbi(x,y) x |= _BV(y) //Hace set al yth bit del puerto X
#define cbi(x,y) x &= ~(_BV(y)) //Hace reset al yth bit del puerto X
#define tbi(x,y) x ^= _BV(y) //Cambia el estado logico del yth bit del puerto X
#define is_high(x,y) ((x & _BV(y)) == _BV(y)) //Verifica si el yth bit del puerto X es 1
#define is_low(x,y) ((x & _BV(y)) == 0) //Verifica si el yth bit del puerto X es 0
double initial_anglexz(double ax, double ay, double az); // Calcula el angulo xz inicial de lanzamiento
double initial_anglexy(double ax, double ay, double az); // Calcula el angulo xy inicial de lanzamiento
double initial_angleyz(double ax, double ay, double az); // Calcula el angulo yz inicial de lanzamiento
double final_distance(double angle0xz,double tf); // Calcula la distancia del cohete en mts usando el angulo y el tiempo
int time_counter(int Reset,int count,int count0); // Contador mientras que este activo count
void init_ports(void); //Inicializa los puertos
void select_ADC_port(int i);// Seleccion cual puerto de ADC leer
void print_Angle_Binary(int NoPortCD,double angle);// Imprime en PORTD el angulo medido en binario
//------------------------------------------------------//


//------------------------------------------------------//
//---------------------Main.c---------------------------//
//------------------------------------------------------//
void main(void)
{
	init_ports(); // Inicializa puertos A=>ADC, B=Inputs ,C=Outputs , D=Outputs
	int i=0;
	double angle0xy=0.0;
	double angle0yz=0.0;
	double angle0xz=0.0;
	double x_total=0.0;
	double a[3];
	int time=0.0;
	int Count=0;
	int Reset=0;

	while (1)
	{  for(i=0;i<4;i++){select_ADC_port(i); /*Seleccionar puerto de entrada ADC*/ a[i]=ADCH-73;} // Cargar en el vector a[i] los valores ax ay az

		angle0xy=initial_anglexy(a[0],a[1],a[2]); // Genero angulo entre x y y en grados
		angle0xz=initial_anglexz(a[0],a[1],a[2]); // Genero angulo entre x y z en grados
		angle0yz=initial_angleyz(a[0],a[1],a[2]); // Genero angulo entre y y z en grados
		print_Angle_Binary(1,angle0xz); // Imprime el angulo en binario en el puerto PORTD
		time=time+1;
		_delay_ms(1);
		x_total=final_distance(angle0xz,time); // Calcula la distancia final.<commit_msg>Update Prototipo2_AcelerometroyTiempo.c<commit_after>//----------------------------------------------------------------------------------------------------------------------------------------------//
//Prototipo NO.2 Proyecto 2 Cohete Agua. Codigo que lee 3 señales analogas de 0-5v y calcula los angulos de inclinacion.Tomando tambien los tiempos
// es capaz de predecir la distancia maxima
// Autores: <NAME>, <NAME>, <NAME>
// Universidad de los Andes
//----------------------------------------------------------------------------------------------------------------------------------------------//

//-------------------------------------------------//
//-----------------LIBRERIAS-----------------------//
//------------------------------------------------//
#include<avr/io.h>
#include<math.h>
#include<util/delay.h>
#include<stdbool.h>
//------------------------------------------------//


//------------------------------------------------//
//---------------DEFINIR FUNCIONES----------------//
//------------------------------------------------//
#define sbi(x,y) x |= _BV(y) //Hace set al yth bit del puerto X
#define cbi(x,y) x &= ~(_BV(y)) //Hace reset al yth bit del puerto X
#define tbi(x,y) x ^= _BV(y) //Cambia el estado logico del yth bit del puerto X
#define is_high(x,y) ((x & _BV(y)) == _BV(y)) //Verifica si el yth bit del puerto X es 1
#define is_low(x,y) ((x & _BV(y)) == 0) //Verifica si el yth bit del puerto X es 0
double initial_anglexz(double ax, double ay, double az); // Calcula el angulo xz inicial de lanzamiento
double initial_anglexy(double ax, double ay, double az); // Calcula el angulo xy inicial de lanzamiento
double initial_angleyz(double ax, double ay, double az); // Calcula el angulo yz inicial de lanzamiento
double final_distance(double angle0xz,double tf); // Calcula la distancia del cohete en mts usando el angulo y el tiempo
int time_counter(int Reset,int count,int count0); // Contador mientras que este activo count
void init_ports(void); //Inicializa los puertos
void select_ADC_port(int i);// Seleccion cual puerto de ADC leer
void print_Angle_Binary(int NoPortCD,double angle);// Imprime en PORTD el angulo medido en binario
//------------------------------------------------------//


//------------------------------------------------------//
//---------------------Main.c---------------------------//
//------------------------------------------------------//
void main(void)
{
	init_ports(); // Inicializa puertos A=>ADC, B=Inputs ,C=Outputs , D=Outputs
	int i=0;
	double angle0xy=0.0;
	double angle0yz=0.0;
	double angle0xz=0.0;
	double x_total=0.0;
	double a[3];
	int time=0.0;
	int Count=0;
	int Reset=0;

	while (1)
	{  for(i=0;i<4;i++){select_ADC_port(i); /*Seleccionar puerto de entrada ADC*/ a[i]=ADCH-81;} // Cargar en el vector a[i] los valores ax ay az

		angle0xy=initial_anglexy(a[0],a[1],a[2]); // Genero angulo entre x y y en grados
		angle0xz=initial_anglexz(a[0],a[1],a[2]); // Genero angulo entre x y z en grados
		angle0yz=initial_angleyz(a[0],a[1],a[2]); // Genero angulo entre y y z en grados
		print_Angle_Binary(1,angle0xz); // Imprime el angulo en binario en el puerto PORTD
		time=time+1;
		_delay_ms(1);
		x_total=final_distance(angle0xz,time); // Calcula la distancia final.
{'fraction_non_alphanumeric': 0.35351201478743066, 'fraction_numerical': 0.015249537892791128, 'mean_word_length': 1.505982246236974, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4039790', 'n_tokens_mistral': 2014, 'n_tokens_neox': 1953, 'n_words': 602}