#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
#include <Arduino.h>
volatile int RPMcontados = 0; //Configuro volatil los RPM contados para que no se pierdan de una interrupcion a otra
const int Sensor = 2; //Declaro variable del pin del Sensor
const int Borrar = 3; //Reset para comenzar de nuevo
int RPM = 0; //Declaro que la variable RPM esta a 0 en cada bucle
int RPMmenor = 2000;
bool Lectura;
unsigned long tiempo = 0; //Declaro que la variable tiempo esta a 0 en cada bucle
;
void setup() {
lcd.begin(20, 4);
Serial.begin(9600); //Abro comunicacion con la consola
pinMode(Sensor, INPUT); //Declaro el Sensor como una entrada
attachInterrupt(digitalPinToInterrupt(Sensor), RPM_motor, FALLING); //Activo la interrupcion
attachInterrupt(digitalPinToInterrupt(Borrar), reset, FALLING); //Activo la interrupcion
}
void loop() {
//tiempo = millis();
Lectura = digitalRead(Sensor); //Declaro que la Lectura es leida digitalmente en el pin del Sensor
if (millis() - tiempo == 4000) { //Cada vez que pasan 1000 millis hace lo de abajo, si se altera esto cambias la duracion real de 1 segundo
//detachInterrupt(digitalPinToInterrupt(Sensor)); //Desactivo la interrupcion mientras calcula
RPM = RPMcontados * 15; //Para una interrupcion por vuelta lo multiplico por 60 para saber las RPM
float hilo = (RPM*M_PI*4.5)/(68160);
RPMmenor = min(RPMmenor,RPM );
lcd.setCursor(0,0);
lcd.print("Alimentacion en mm\t"); //Escribe las RPM en cosola
lcd.setCursor(0,1);
lcd.print("RPM = ");
lcd.setCursor(6,1);
lcd.print(RPMmenor);
lcd.setCursor(0,2);
lcd.print("HILO: ");
lcd.setCursor(6,2);
lcd.print(hilo*1000);
/*Serial.print(RPM); //Escribe las RPM en consola
Serial.print("\t Hz=\t"); //Escribe los Hz en consola
Serial.println(RPMcontados); //Escribe los Hz en consola*/
RPMcontados = 0; // Reseteo el contador de revoluciones
tiempo = millis(); // Actualizo el tiempo
attachInterrupt(digitalPinToInterrupt(Sensor), RPM_motor, FALLING); //Activo la interrupcion
}
}
void RPM_motor() {
RPMcontados++; //Se suma 1 RPM cada vez que pasa por aqui
}
void reset(){
//lcd.print("Hola");
lcd.clear();
RPMcontados = 0;
tiempo=millis();
}