Go Down

Topic: Carro Robô - Lógica Pisca alerta. AJUDA (Read 229 times) previous topic - next topic

fabiobmoraes

Amigos, tenho um projeto de um carrinho controlado via Bluetooth. Tudo funcionando, motores, luz freio, farol, seta e tudo mais. Porém preciso implementar o Pisca Alerta.
Todos os comandos são acionados com state. Veja exemplo:
--------------------Código --------------------
f (digitalRead(BTState) == LOW) {
state_rec = 'S';
}
// Salva os valores da variável 'state'
if (Serial.available() > 0) {
   state_rec = Serial.read();
   state = state_rec;
if (state != 'S') {
Serial.print(state);
}
// Se o estado recebido for igual a 'F', o carro se movimenta para frente.
if (state == 'F') {
    analogWrite(motorDB1, vSpeed);
    analogWrite(motorDA1, vSpeed);
    analogWrite(motorDA2, 0);
    analogWrite(motorDB2, 0);

    analogWrite(motorTB1, vSpeed);
    analogWrite(motorTA1, vSpeed);
    analogWrite(motorTA2, 0);
    analogWrite(motorTB2, 0);

    digitalWrite(FreioParadaEsquerda, LOW);
    digitalWrite(FreioParadaDireita, LOW);
}
else if (state == 'B') { // Se o estado recebido for igual a 'B', o carro se movimenta para trás.
    analogWrite(motorDA1, 0);
    analogWrite(motorDB1, 0);
    analogWrite(motorDB2, vSpeed);
    analogWrite(motorDA2, vSpeed);
    analogWrite(motorTA1, 0);
    analogWrite(motorTB1, 0);
    analogWrite(motorTB2, vSpeed);
    analogWrite(motorTA2, vSpeed);
    digitalWrite(FreioParadaEsquerda, LOW);
    digitalWrite(FreioParadaDireita, LOW);
    digitalWrite(ReDireita, HIGH);
    digitalWrite(ReEsquerda, HIGH);
}
-----------------E assim por diante----------------------
O pisca alerta deve ser acionado com o "X" e interrompido com "x"
Preciso de uma lógica para ele piscar ao receber "X" e para de piscar com o "x". já fiz ligar e desligar mas gostaria que piscasse.
Alguém pode me dar uma luz para isso?
Ficarei muito grato pela ajuda.

Jeff_85

Se tudo roda como esperado e apenas quer fazer o alerta, poderia usar millis(); para não boquear o recebimento dos demais comandos.

Ideia de código para adaptação:
Code: [Select]

unsigned long startMillis;  //some global variables available anywhere in the program
unsigned long currentMillis;
const unsigned long period = 1000;  //the value is a number of milliseconds
const byte ledPin = 13;    //using the built in LED

void setup()
{
  Serial.begin(115200);  //start Serial in case we need to print debugging info
  pinMode(ledPin, OUTPUT);
  startMillis = millis();  //initial start time
}

void loop()
{
  currentMillis = millis();  //get the current "time" (actually the number of milliseconds since the program started)
  if (currentMillis - startMillis >= period)  //test whether the period has elapsed
  {
    digitalWrite(ledPin, !digitalRead(ledPin));  //if so, change the state of the LED.  Uses a neat trick to change the state
    startMillis = currentMillis;  //IMPORTANT to save the start time of the current LED state.
  }
}


Faça os ajustes para ao receber "X" você deve trabalhar com um FLAG == true que vai ser incorporado ao IF para validar a entrada nele, e também quando receber o "x" para desligar o FLAG.

fabiobmoraes


Go Up