#if CONFIG_FREERTOS_UNICORE
static const BaseType_t app_cpu = 0;
#else
static const BaseType_t app_cpu = 1;
#endif
bool arrancado=LOW; //indica si se ha encendido el carro
int leido_conductor=0; //variable que guarda lectura analogica asiento conductor
bool conductor=LOW; //bandera de si hay un conductor
float voltaje_conductor=0; //convierte la lectura a analogico
float resistencia_conductor=0; //variable que guarda la resistencia del sensor de presion del asiento del conductor
bool error_conductor=LOW;
int leido_rpm=0; //guarda lectura analogica senwsor hall
float rpm=0;
float velocidad=0;
void encendido(void *parameters){
while(1){
if(digitalRead(35)==HIGH){
Serial.println("BRRRRM");
}else{
Serial.println("zzz");
}
}
}
void asientoconductor(void *parameters){
while(1){
leido_conductor=analogRead(36); //ADC1_0, VN
voltaje_conductor=(leido_conductor*5.0)/4095.0; //convierto el entero en voltaje
resistencia_conductor=(5000.0-(voltaje_conductor*1000.0))/voltaje_conductor;
//Serial.println(resistencia_conductor);
if(resistencia_conductor>=480){
error_conductor=HIGH; //falla en el sensor del asiento
//hay alguien sentado
error_conductor=LOW;
//Serial.println("Error");
}else{
if(resistencia_conductor>=120){
conductor=LOW; //no hay nadie sentado
error_conductor=LOW;
//Serial.println("Nadie");
}else{
conductor=HIGH;
//Serial.println("Se sentaron");
}
}
}
}
void RPM(void *parameters){
while(1){
//en lugar de usar un sensor hall para el tacometro, el potenciometro manda la cantidad de pulsos leidos en un minuto
leido_rpm=analogRead(4); //ADC2_0, D04
rpm=(leido_rpm*6000.0)/4095; //para que lo maximo que pueda leer sean 6x1000r/min
//Serial.println(rpm);
}
}
//se considera una llanta de 200m en un rin de 16". que aproximadamente da un diametro de 80 cm
void velocimetro(void *parameters){
while(1){
//el radio es de 40cm - 0.4m. por lo tanto por cada revolucion avanza 2.51 m
velocidad=((rpm*2.51327412287)/1000)*60;//formula para convertir rpm a km/h
//Serial.println(velocidad);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//declaracion de tareas
xTaskCreatePinnedToCore(encendido,"Arranque?",1024,NULL,1,NULL,app_cpu); //adc en 2
xTaskCreatePinnedToCore(asientoconductor,"Hay alguien en el asiento de conductor?",1024,NULL,1,NULL,0);
xTaskCreatePinnedToCore(RPM,"RPM",1024,NULL,1,NULL,1); //adc en 2
xTaskCreatePinnedToCore(velocimetro,"A que velocidad voy",1024,NULL,1,NULL,app_cpu); //adc en 2
}
void loop() {
}