Medidor Motor ESP32.Ino
Medidor Motor ESP32.Ino
h"
#include <Ticker.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "ntc.h"
#define pwm_motor 18
#define in_rpm 12
#define out_giro2 13
#define out_giro1 14
#define in_ntc 32
#define in_pot 33
#define piloto 2
Ticker Timmer;
BluetoothSerial SerialBT;
LiquidCrystal_I2C lcd(0x27,16,2);
void Leer_BT(){
if (SerialBT.available()) {
char caracter = SerialBT.read();
if(caracter == 'a'){
digitalWrite(piloto, HIGH);
encendido = true;
} else if(caracter == 'b'){
digitalWrite(piloto, LOW);
encendido = false;
temp = 0.0;
ledcWrite(ledChannel, 0);
digitalWrite(out_giro1, LOW);
digitalWrite(out_giro2, LOW);
} else if(caracter == 'c'){
if(encendido == true){
digitalWrite(out_giro2, LOW);
delay(100);
digitalWrite(out_giro1, HIGH);
}
} else if(caracter == 'd'){
if(encendido == true){
digitalWrite(out_giro1, LOW);
delay(100);
digitalWrite(out_giro2, HIGH);
}
}
}
void lee_pot(){
uint16_t result;
uint16_t sensorValue;
uint8_t veces;
veces = 10;
sensorValue = 0;
for(uint8_t i = 0; i < veces; i++){
sensorValue += analogRead(in_pot);
delay(1);
}
void lectura_ntc(){
adc = analogRead(in_ntc);
adc = ADC_LUT[(int)adc];
temp = Tc;
if (Tc > 0) {
Serial.print("T: ");
Serial.println(Tc);
}
uint8_t Obtener_rpm() {
//float _rpm;
uint8_t _rpm;
return _rpm;
}
void muestra_pantalla(){
lcd.setCursor(0,0);
lcd.print("RPM: ");
//lcd.print("KM/H: ");
lcd.print(rpm);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("T: ");
lcd.print(temp,1);
lcd.print(" ");
lcd.printByte(0);
lcd.print("C");
lcd.print(" ");
}
void Cambio_estado(){
//timmer.detach(); // detener el contador
if(encendido == true){
time_wait++;
if(time_wait == 20){ // 2 segundos
time_wait = 0;
muestra = true;
}
count_tmr1++;
if (count_tmr1 == 10) {
count_tmr1 = 0;
_enable_med = 1;
pulsos = NumPulsos;
NumPulsos = 0;
}
void setup() {
SerialBT.begin(device_name);
#ifdef USE_PIN
SerialBT.setPin(pin);
Serial.println("Using PIN");
#endif
//pinMode(in_pot, INPUT);
//pinMode(in_ntc, INPUT);
pinMode(in_rpm, INPUT);
pinMode(piloto, OUTPUT);
pinMode(out_giro1, OUTPUT);
pinMode(out_giro2, OUTPUT);
pinMode(pwm_motor, OUTPUT);
attachInterrupt(digitalPinToInterrupt(in_rpm), velocidad, FALLING);
Timmer.attach_ms(100, Cambio_estado);
ledcSetup(ledChannel, frequency, resolution);
ledcAttachPin(pwm_motor, ledChannel);
ledcWrite(ledChannel, 0);
lcd.init();
lcd.init();
lcd.backlight();
lcd.createChar(0, grados);
lcd.home();
muestra_pantalla();
delay(500);
}
void loop() {
Leer_BT();
if(encendido == true){
lee_pot();
if(muestra == true){
lectura_ntc();
muestra = false;
}
if (_enable_med == 1) {
rpm = Obtener_rpm();
//rpm_ = (uint8_t)(rpm);
_enable_med = 0;
}
}
muestra_pantalla();
}