#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Definición de pines
const int sensorPinContar = 4; // Pin para el sensor magnético que cuenta
const int sensorPinDescontar = 2; // Pin para el sensor magnético que descuenta
volatile int contador = 0; // Variable para almacenar el conteo de vueltas
int estadoSensorContarAnterior = 0; // Estado previo del sensor que cuenta
int estadoSensorContarActual = 0; // Estado actual del sensor que cuenta
int estadoSensorDescontarAnterior = 0; // Estado previo del sensor que descuenta
int estadoSensorDescontarActual = 0; // Estado actual del sensor que descuenta
// Configuración de la pantalla OLED
#define SCREEN_WIDTH 128 // Ancho de la pantalla OLED
#define SCREEN_HEIGHT 64 // Altura de la pantalla OLED
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
// Configuración de pines como entrada
pinMode(sensorPinContar, INPUT);
pinMode(sensorPinDescontar, INPUT);
// Inicializar comunicación serie para monitoreo
Serial.begin(115200);
// Inicializar pantalla OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Error al inicializar la pantalla OLED"));
for (;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
// Adjuntar las interrupciones a los pines de los sensores
//attachInterrupt(digitalPinToInterrupt(sensorPinContar), manejarSensorContar, CHANGE);
//attachInterrupt(digitalPinToInterrupt(sensorPinDescontar), manejarSensorDescontar, CHANGE);
}
void loop() {
// Imprimir el contador de vueltas en el monitor serie
Serial.print("Vueltas: ");
Serial.println(contador);
estadoSensorDescontarActual = digitalRead(sensorPinDescontar);
Serial.println(estadoSensorDescontarActual);
estadoSensorContarActual = digitalRead(sensorPinContar);
Serial.println(estadoSensorContarActual);
if (estadoSensorContarActual == HIGH) {
contador++;
}
if (estadoSensorDescontarActual == HIGH) {
contador--;
}
// Mostrar el contador de vueltas en la pantalla OLED
display.clearDisplay();
display.setCursor(0, 0);
display.print("Vueltas:");
display.setCursor(0, 10);
display.print(contador);
display.display();
delay(5000);
}