FVM Learning

Nosso maior compromisso é compartilhar conhecimentos, somos simples mas não simplórios, astuto mas não pacóvio, nos posicionamos empenhados em mostrar o caminho para desmistificação do opróbrio em legítima defesa do conhecimento compartilhado. Eng. Jemerson Marques.

terça-feira, 12 de outubro de 2021

Controlando Cargas Através do Serial Monitor com Arduino ou ESP

Fig. 1 - Controlando Cargas Através do Serial Monitor com Arduino ou ESP

Olá a Todos!

No post de hoje, iremos fazer um controle de Cargas, através do Serial Monitor da IDE Arduino, utilizando a função digitalReadString(), que receberá a String que voce digitar no Serial Monitor, para acionar uma carga que iremos utilizar um LED para exemplificar. 

Mas nada impede que você possa utilizar um módulo Relé para acionar qualquer carga, como; Motor, Lâmpadas, Equipamento de som ou qualquer outra coisa que você necessite. 

Quando temos um Arduino ou mesmo um ESP conectado ao PC, com o Serial Monitor, podemos enviar uma String com o comando, que em nosso exemplo será Ligar LED e Desligar LED, como isso o Arduino receberá essa String de comando e acionará o LED.

Hardware necessário

  • Placa Arduino
  • LED - Resistor de Diodo Emissor de Luz 220 Ohm - (vermelho, vermelho, marrom, dourado)
  • Fios de ligação
  • Protoboard (opcional)

O circuito

O circuito é bastante simples. Conectamos um LED em série com um resistor de 220 ohms para limitar a corrente no LED e conectamos a porta 9 do Arduino UNO conforme mostrado na Figura 2 abaixo.

Fig. 2 -  Controlando Cargas Através do Serial Monitor com Arduino ou ESP 


Foi utilizada uma protoboard para facilitar as conexões, mas você também pode conectar os fios diretamente ao Arduino.

O código

A função Serial.readString() é a responsável por lê os caracteres do buffer serial e os move para uma determinada string.

No nosso exemplo, iremos fazer algo muito simples, que é ligar e desligar um LED usando o comando digitado no Serial Monitor.

Depois de construir o circuito, conecte sua placa Arduino ao seu computador, execute o software Arduino (IDE), copie o código abaixo e cole-o em seu IDE Arduino.

Esse algoritmo foi retirado como exemplo de uma das aulas do Curso Básico de Arduino do nosso parceiro Electronic Circuits.

Para ficar claro para os mais iniciantes em programação de Arduino, vamos explicar o código linha a linha:
  • Na linha 3, declaramos ledPin associado ao pino digital 9, onde conectamos o LED.

  • Na linha 4, declaramos a String DataIn que receberá os Comandos do Serial Monitor.

  • Na linha 6, entramos na função void setup(). Esta função é lida apenas uma vez quando o Arduino ou o ESP é iniciado.

  • Na linha 7, começamos a comunicação serial declarando a função Serial.begin(). A 115200 bits de dados por segundo, esta é a velocidade na qual seu computador se comunicará com o Arduino Serial.

  • Na linha 8, definimos a porta 9 como a saída, usando a função pinMode();
1
2
3
4
5
6
7
8
9
10
// Controlando Cargas Através do Serial Monitor

int ledPin = 9;                   // LED connected to digital pin 9
String DataIn;                   // String that will receive the commands

void setup() {
  Serial.begin(115200);                 //Begin the Serial Monitor with bounce rate in 115200
  pinMode(ledPin, OUTPUT);      // Set the digital pin as output:
}
//------------------------------------- www.elcircuits.com --------------------------------------------
  • Na linha 11, entramos na função void loop() que faz exatamente o que seu nome sugere, loops consecutivamente.

  • Na linha 12, entramos em uma condicional if, para verificar se o Serial Monitor está disponível, se sim chamamos a próxima função.

  • Na linha 13, chamamos a função Serial.readString() para ler os caracteres do Serial Monitor e enviá-los ao String DataIn.

  • Na linha 15, inserimos uma condicional if, neste caso para comparar se os caracteres são os mesmos que os escritos no Monitor Serial, em nosso exemplo "acender led", se sim ...

  • Na linha 16, entramos na função digitalWrite(), o comando ativa o ledPin para o nível HIGH, ou seja, passa de 0V a 5V, que liga o LED.

  • Na linha 17, inserimos uma condicional if, que compara se os caracteres são os mesmos que os escritos no Monitor Serial, em nosso exemplo "desligar led", se sim ...
  • Na linha 18, entramos na função digitalWrite(), o comando desativa o ledPin para o nível LOW, ou seja, passa de 5V a 0V, que desliga o LED.
1
...
11
12
13
14
15
16
17
18
19
20
21
// Controlando Cargas Através do Serial Monitor

void loop() { // The loop function runs over and over again forever
  if (Serial.available()) {                   // Check if there is any data on the serial monitor
    DataIn = Serial.readString();       // String DataIn receives the data typed in the Serial Monitor
  }
  if (DataIn == "ligar led") {            // Check if the received String is equal to "ligar led"  
    digitalWrite(ledPin, HIGH);        // If yes, the function digitalWrite turn Led ON
  } if (DataIn == "desligar led") {    // Check if the received String is equal to "desligar led" 
    digitalWrite(ledPin, LOW);         // If yes, the function digitalWrite turn Led OFF 
  }
}
//------------------------------------- www.elcircuits.com --------------------------------------------

O código completo é mostrado no esboço abaixo!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Controlando Cargas Através do Serial Monitor

int ledPin = 9;                   // LED connected to digital pin 9
String DataIn;                   // String that will receive the commands

void setup() {
  Serial.begin(115200);                     //Begin the Serial Monitor with bounce rate in 115200
  pinMode(ledPin, OUTPUT);   
}

void loop() { // The loop function runs over and over again forever
  if (Serial.available()) {                   // Check if there is any data on the serial monitor
    DataIn = Serial.readString();       // String DataIn receives the data typed in the Serial Monitor
  }
  if (DataIn == "turn led on") {            // Check if the received String is equal to "turn led on"  
    digitalWrite(ledPin, HIGH);        // If yes, the function digitalWrite turn Led ON
  } if (DataIn == "desligar led") {    // Check if the received String is equal to "turn led off" 
    digitalWrite(ledPin, LOW);         // If yes, the function digitalWrite turn Led OFF 
  }
}
//------------------------------------- www.elcircuits.com --------------------------------------------

E por hoje é só, espero que tenham gostado!!!

Quaisquer dúvidas, sugestões, correções, por favor, deixe nos comentários abaixo, que em breve estaremos respondendo.

Se inscreva no nosso Blog!!! Click Aqui FVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom


Nenhum comentário:

Postar um comentário