Prof_Carvalho icon

Untitled

Prof_Carvalho | PRO | 03/17/22 12:59:15 AM UTC (Edited) | 0 ⭐ | 1281 👁️ | Never ⏰ | []
C++ |

3.55 KB

|

None

|

0 👍

/

0 👎

//Definição dos PINOS
#define POT A0
#define LED1 10
#define LED2 11
#define LED3 12
#define BOTAO 3
#define ECHO 8
#define TRIG 7
#define LIGADO 0
#define DESLIGADO 1
#define SERIAL_BAUD 115200
//Cria um buffer global - modo RAIZ
#define LIMITE_BUFFER 10
String buffer_msg;
int estado_sistema;
 
void configuraHardware(){
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    pinMode(BOTAO, INPUT_PULLUP);
    pinMode(TRIG, OUTPUT);
    digitalWrite(TRIG, LOW);
    pinMode(ECHO, INPUT);
    Serial.begin(SERIAL_BAUD);
}
 
void setup(){
    configuraHardware();
    buffer_msg = "";
    Serial.println("*************************");
    Serial.println("*   SISTEMA FATEC       *");
    Serial.println("*************************");
    estado_sistema = 0;
 
}
 
void inverterLed(int LED){
    digitalWrite(LED, !digitalRead(LED));
    delay(300);
}
 
void atingiuLimite(int saida, int valor, int limite){
    if(valor > limite)
        digitalWrite(saida, LIGADO);
    else
        digitalWrite(saida, DESLIGADO);
}
 
void escalaPot(int valor){
    atingiuLimite(LED1, valor, 300);
    atingiuLimite(LED2, valor, 600);
    atingiuLimite(LED3, valor, 900);
}
 
void estavaNaLoop(){
    DisparaPulsoUltrassonico();
    float TempoEcho = pulseIn(ECHO, HIGH);
    float distancia_metros = CalculaDistancia(TempoEcho);
    Serial.print("Distancia:");
    Serial.println(distancia_metros, DEC);
    delay(2000);
}
 
void loop(){
    if(estado_sistema == 0){
        mostrarMenu();
        estado_sistema = 1;
    } else if(estado_sistema == 1){
        if(Serial.available()>0){
            buffer_msg = Serial.readStringUntil('#');
            if(buffer_msg.equals("1")){
                estado_sistema = 2;
            } else if(buffer_msg.equals("2")){
                estado_sistema = 3;
            } else if(buffer_msg.equals("3")){
                estado_sistema = 8;
            }
        }
    } else if(estado_sistema == 2){
        exibeEstadoSistema();
        estado_sistema = 0;
    } else if(estado_sistema == 3){
        exibeMenuEstado3();
        estado_sistema = 4;
    } else if(estado_sistema == 4){
        if(Serial.available()>0){
            buffer_msg = Serial.readStringUntil('#');
            if(buffer_msg.equals("1")){
                estado_sistema = 5;
            } else if(buffer_msg.equals("2")){
                estado_sistema = 6;
            } else if(buffer_msg.equals("3")){
                estado_sistema = 7;
            } else if(buffer_msg.equals("0")){
                estado_sistema = 0;
            }
        }
    } else if(estado_sistema == 5){
        inverterLed(LED1);
        estado_sistema = 3;
    } else if(estado_sistema == 6){
        inverterLed(LED2);
        estado_sistema = 3;
    } else if(estado_sistema == 7){
        inverterLed(LED3);
        estado_sistema = 3;
    }
}
 
void exibeMenuEstado3(){
    Serial.println("1 - Inverte LED1");
    Serial.println("2 - Inverte LED2");
    Serial.println("3 - Inverte LED3");
}
void mostrarMenu(){
    Serial.println("1 - Exibe Estado do Sistema");
    Serial.println("2 - Controla Saidas");
    Serial.println("3 - Logger Distância");
}
 
void exibeEstadoSistema(){
    Serial.println("ESTADO SISTEMA!");
}
 
void DisparaPulsoUltrassonico(){
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
}
 
 
float CalculaDistancia(float tempo_us){
    const float VelocidadeSom_mporus = 0.000340;
    return((tempo_us*VelocidadeSom_mporus)/2);
}

Comments