Galera estou com um problema, no meu código... quando adiciono uma certa programação para ler RPM o programa fica lento...
Estou tentando fazer um logger e um gerenciamento para bico suplementar no meu carro turbo...
a questão do gerenciamento do bico (pulsar) de acordo com sensor de pressão e de mistura, já esta funcionando, mas queria poder registrar todos esses dados junto com a determinada rpm...
mas no momento que coloco o código para ler a rpm o programa fica lento.
segue codigo
//----------------------------------------LER RPM---------------------------------------------------
int rev = 12;
unsigned long duration;
unsigned long rpm;
//----------------------------------------PULSADOR---------------------------------------------------
int ledPin = 13; // LED conectado ao pino digital 13
int value = LOW; // último valor do LED
long previousMillis = 0; // último momento que o LED foi atualizado
long interval = 1000; // tempo de transição entre estados (milisegundos)
int tempoinj = 100 ;
//----------------------------------------PRESAO E LAMBDA--------------------------------------------
int pressao = A0; //defenir o pino analógico para pressao do turbo
int lambda = A1; //define pino para leitura da sonda
int val = 0; // criação da variável para armazenar o estado do turbo(variação:0~1024)
int val1 = 0; // criacao da variavel para armazenar o estado da sonda
//---------------------------------------------------------------------------------------------------
void setup()
{
pinMode(ledPin, OUTPUT); // configura o pino digital como saída
Serial.begin(230400);//processo para a comunicação serial
// pinMode(rev, INPUT);
}
//--------------------------------------------------------------------------------------------
void loop()
{
//--------------------------------------LER RPM---------------------------------------------------
[color=red]
[b]Serial.print("RPM: ");
Serial.println(rpm);
duration = pulseIn(rev, HIGH);
rpm = 30000000 / duration;[/b][/color]
//----------------------------------------------------------------------------------------------
val = analogRead(pressao); //linha de código para armazenar os valores obtidos do potênciómetro da variável "Val"
val = map(val,0,1023,0,101.5);
val = (val * 0.068948) - 1.03 ;
// Serial.print("Pressao Turbo : ");
// Serial.println(val);//envia o valor armazenado na variável "val" para a porta serial
// Para ler a pressao do turbo
val1 = analogRead(lambda); //linha de código para armazenar os valores obtidos do potênciómetro da variável "Val"
val1 = map(val1,0,204.6,1,1000);
//Serial.print("Sonda Lambda : ");
//Serial.println(val1);//envia o valor armazenado na variável "val" para a porta serial
// Para ler a sonda
if (val1 <= 100 ) {
tempoinj = 5 ;
}else if(val1 <= 200) {
tempoinj = 10 ;
}else if(val1 <= 300) {
tempoinj = 15 ;
}else if(val1 <= 400) {
tempoinj = 20 ;
}else if(val1 <= 500) {
tempoinj = 25 ;
}else if(val1 <= 600) {
tempoinj = 30 ;
}else if(val1 <= 700) {
tempoinj = 35 ;
}else if(val1 <= 800) {
tempoinj = 40 ;
}else if(val1 <= 900) {
tempoinj = 45 ;
}else if(val1 <= 1000) {
tempoinj = 50 ;
}else{
value = HIGH;
}
interval = tempoinj ;
Serial.print("Tempo de inj : ");
Serial.println(tempoinj);
if (millis() - previousMillis > interval) {
previousMillis = millis(); // lembre-se do último tempo que piscamos o LED
// se o LED está apagado, acenda-o e vice-versa.
if (value == LOW)
value = HIGH;
else
value = LOW;
digitalWrite(ledPin, value);
}
}