Gerador de sinal de roda fonica

Boa Tarde nobres amigos...

Solicito ajuda para o desenvolvimento de um gerador de sinal de roda fônica, para quem não conhece a roda fônica esta presente nos veículos, aonde gera o sinal abaixo, que diz a central eletrônica a real posição dos cilindros para efetuar o controle de injeção e ignição.

essa seria uma roda fônica 60 - 2

já fiz esse código que funcionou perfeitamente

int LED=13;
int Cont=0;
// the setup function runs once when you press reset or power the board
void setup() {
//  Serial.begin(115200);
 // initialize digital pin LED_BUILTIN as an output.
 pinMode(LED, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {

while (Cont < 58)
{ 
digitalWrite(LED, HIGH);  
Cont++;
delay(1) ;                   
digitalWrite(LED, LOW);
delay(1) ;  
Serial.println(Cont); 
} 
digitalWrite(LED, LOW);  
Cont++;
delay(1) ;                   
digitalWrite(LED, LOW); 
delay(1) ; 
Serial.println(Cont);

if (Cont == 60){
 Cont = 0;
 }
 
}

o problema são esses delays... ja estão no mínimo(1)... gostaria de poder dar mais velocidade nessa geração de sinal que faria com que o carro acelerasse vamos dizer assim, ai eu colocaria um potenciômetro para poder ajustar a rotação.

tudo isso e para um testador de módulos automotivos mas fico limitado em dar rotação para efetuar testes.

também não sei se o arduino tem capacidade de hardware para isso.

desde já agradeço o apoio de todos

1 Like

Use " delayMicroseconds() " para ver se você obtém as velocidades desejadas com eles.
Saudações.

1 Like

Resolvido o problema... show de bola
Segue o código caso alguém queira fazer o projeto

/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/
int LED=13;
int Cont=0;
int pinopot = 0;   //Pino ligado ao pino central do potenciometro
int valorpot = 0;  //Armazena valor lido do potenciometro, entre 0 e 1023
float velo = 0;

// the setup function runs once when you press reset or power the board
void setup() {
  Serial.begin(115200);
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED, OUTPUT);
  pinMode(pinopot, INPUT);   //Define o pino do potenciometro como entrada
}

// the loop function runs over and over again forever
void loop() {

valorpot = analogRead(pinopot);
velo = map(valorpot, 0, 1023, 200, 6000);
 
while (Cont < 58)
{ 
 digitalWrite(LED, HIGH);  
 Cont++;
delayMicroseconds(velo);                  
 digitalWrite(LED, LOW);
delayMicroseconds(velo);
// Serial.println(Cont); 
} 
 digitalWrite(LED, LOW);  
 Cont++;
delayMicroseconds(velo);                 
 digitalWrite(LED, LOW); 
delayMicroseconds(velo);
// Serial.println(Cont);

if (Cont == 60){
  Cont = 0;
  }

  Serial.println(velo);
  
}
 
1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.