Bunas noches, necesito ayuda en una programación para la adquisición de las señales de los sensores TPS, APP, SENSOR DE OXÍGENO Y PULSOS DE INYECCIÓN de un vehículo, teniendo en cuenta que en el vehículo se encuentra instalado en el sensor APP un módulo de control del acelerador, el cual tiene varios modos de funcionamiento como son: Normal (NO), no afecta en el funcionamiento, Económico (EC), Confort (CO), Sport (SP), Sport + (SS), Automático (AI). Este dispositivo se lo instaló porque se supone que ayuda en la respuesta de aceleración del vehículo y elimina el lag del turbo, es por ello que se necesita obtener las señales de cada uno de los senosres antes mencionados, en los distintos modos de funcionamiento del dispositivo.
Tengo una programación, pero necesito que alguien me ayude para saber si está bien o no, la programación es la siguiente:
// Pines de los sensores
const int pinAPP = A0; // Sensor APP
const int pinTPS = A1; // Sensor TPS
const int pinO2 = A2; // Sensor de Oxígeno
const int pinInjection = 2; // Pulsos de Inyección (pin digital)
// Variables para almacenar los valores de los sensores
int valueAPP = 0;
int valueTPS = 0;
int valueO2 = 0;
volatile unsigned long pulseCount = 0;
// Modo de funcionamiento del T-fire
String modeTFire = "NO"; // Cambiar según el modo actual
void setup() {
// Iniciar comunicación serial
Serial.begin(9600);
// Configurar pines de entrada
pinMode(pinAPP, INPUT);
pinMode(pinTPS, INPUT);
pinMode(pinO2, INPUT);
pinMode(pinInjection, INPUT_PULLUP);
// Configurar interrupción para contar los pulsos de inyección
attachInterrupt(digitalPinToInterrupt(pinInjection), countPulse, RISING);
// Imprimir encabezado de los datos
Serial.println("Modo,APP,TPS,O2,Pulsos");
}
void loop() {
// Leer los valores de los sensores
valueAPP = analogRead(pinAPP);
valueTPS = analogRead(pinTPS);
valueO2 = analogRead(pinO2);
// Leer el número de pulsos
noInterrupts();
unsigned long pulseCountCopy = pulseCount;
pulseCount = 0;
interrupts();
// Imprimir los valores en la consola serial
Serial.print(modeTFire);
Serial.print(",");
Serial.print(valueAPP);
Serial.print(",");
Serial.print(valueTPS);
Serial.print(",");
Serial.print(valueO2);
Serial.print(",");
Serial.println(pulseCountCopy);
// Esperar un segundo antes de la siguiente lectura
delay(1000);
}
// Función de interrupción para contar los pulsos de inyección
void countPulse() {
pulseCount++;
}
