Código Afinador

Descargar como rtf, pdf o txt
Descargar como rtf, pdf o txt
Está en la página 1de 8

int Nivel=0;

int Nivelant=0;

int Conteo=0;

int Tiempo;

int Tiempoini;

int Tiempoant;

int Periodo=0;

int Frecuenciaprom=0;

int Sumperiodos=0;

int c = 0;

int tiempo_ini;

int tiempo1;

int Dato=0;

void Display();

int Calc_Periodo();

int frecuenciaprom();

int Frecuencias[100];

void setup() {

DDRC=0b11111111; // Asigna salidas para Display 7 Segmentos al Puerto C

DDRB=0b00001111; // Asigna salidas para selección de Dígito en Display al Puerto B

}
void loop() {

Calc_Periodo();

//Periodo=2300;

//frecuenciaprom(Periodo);

if (Conteo<100){

Frecuencias[Conteo] = Periodo;

Sumperiodos = Sumperiodos + Periodo;

Display(1000/Periodo);

else{

if (c<=100){

Dato = c*100+Frecuencias[c];

Display(Dato);

// delay (500);

// c ++;

if (c == 0){

tiempo_ini = millis();

c++;

tiempo1 = millis();

if (tiempo1 - tiempo_ini >= 500){

tiempo_ini = tiempo1;
c++;

else{

Conteo = 0;

c = 0;

Periodo = Sumperiodos/100;

//Sumperiodos = 0;

/*-----------------------------CALCULO PERIODO ---------------------------------------------------------*/

int Calc_Periodo(){

const int HallSens_pin = 0;

int voltaje_HallSens;

//voltaje_HallSens = analogRead(HallSens_pin);

//if (voltaje_HallSens <= 430){

// Nivel = 0;
//}

//else {

// Nivel = 1;

Nivel = digitalRead(43);

if (Nivelant != Nivel){

if (Conteo == 1){

Tiempoini = Tiempoant = millis();

if ((Nivelant == 0) && (Nivel == 1)){

Tiempo = millis();

Periodo = Tiempo - Tiempoant;

Conteo ++;

Tiempoant = Tiempo;

Nivelant = Nivel;

return Conteo;

return Periodo;

/*----------------DISPLAY----------*/

void Display( int number ){


// Adaptado para anodo comun

static unsigned char tbl[] = { B11000000, /* 0 */

B11111001, /* 1 */ B10100100 / *2 */ B10110000, /* 3 */

B10011001, /* 4 */ B10010010, /* 5* / B10000010, /* 6 */

B11111000, /* 7* / B10000000, / *8* / B10010000 / *9 */ };

static unsigned char VECT_C [4] = {0b11111110, 0b11111101, 0b11111011, 0b11110111};

static unsigned char digit[4];

static int n = 0, previous_number;

static int current = millis();

static int previous = millis();

if( current - previous < 5 )

current = millis();
else {

if (number == 0){

digit[0] = tbl[0];

digit[1] = tbl[0];

digit[2] = tbl[0];

digit[3] = tbl[0];

if( previous_number != number ) {

int tmp = previous_number = number;

digit[0] = tbl[(tmp) % 10];

digit[1] = tbl[(tmp /= 10) % 10];

digit[2] = tbl[(tmp /= 10) % 10];

digit[3] = tbl[(tmp /= 10) % 10];

n%= 4;
PORTC = digit[n];

PORTB = VECT_C[n];

n++;

current = previous = millis();

} /* Display */

/*---------------frecuencia promedio------------*/

int frecuenciaprom (int p){

int c=0;

int tiempo_ini;

int tiempo1;

int tiempo2;

if (Conteo<100){
Frecuencias[Conteo] = p;

//Sumperiodos = Sumperiodos + Periodo;

else{

if (c<=100){

Display(Frecuencias[c]);

tiempo1 = millis();

if (tiempo1 < 1){

tiempo_ini = tiempo1;

if (tiempo1 - tiempo_ini >= 1000){

tiempo_ini = tiempo1;

c++;

else {

Conteo = 0;

c= 0;

//Frecuenciaprom = 1000/(Sumperiodos/100);

Conteo = 0;

return Frecuenciaprom;

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy