Menu

009 - Arduino - Utilizando funções

A utilização de funções na programação, além de facilitar no desenvolvimento do código o deixa muito mais organizado. 

Este código colocamos três botões pulsantes, onde cada um chamará uma função.

O esquema no thinkercad.


O código:
//--------------------------------------------
//Aulas Online - Arduino
//Aula:- Otimizando o código ( uso de funções )
//Auto:- Clodoaldo
//Revisão:- 06Out2020
//--------------------------------------------
//--------------------------------------------
//DEFINIÇÃO DE ENTRADAS E SAÍDAS
//ENTRADAS
#define S0 A0
#define S1 A1
#define S2 A2

//SAÍDAS
#define VM 8
#define AM 7
#define VD 6
//--------------------------------------------

//--------------------------------------------
//DEFINIÇÃO DE VARIÁVEIS
// aqui suas variáveis

//--------------------------------------------
//--------------------------------------------
//INCLUI AS BIBLIOTECAS NECESSÁRIAS
#include <LiquidCrystal.h>   // biblioteca do LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Pinos onde o LCD está ligado
//--------------------------------------------

//--------------------------------------------
void setup()
{
  lcd.begin(16, 2); //Inicializa LCD
  //pinos configurados com entrada
  pinMode(S0, INPUT);
  pinMode(S1, INPUT);
  pinMode(S2, INPUT);
  
  //pinos configurados com Saídas
  pinMode(VM, OUTPUT);
  pinMode(AM, OUTPUT);
  pinMode(VD, OUTPUT);
}
//-------------------------------------
//Função secundária
void HORARIO()
{
  lcd.setCursor(0,0);
  lcd.print("horario          ");
  
  digitalWrite(VM, HIGH);
  delay(500);
  digitalWrite(AM, HIGH);
  delay(500);
  digitalWrite(VD, HIGH);
  delay(500);
  }
//-------------------------------------

//-------------------------------------
//Função secundária
void ANTIHORARIO()
{
  lcd.setCursor(0,0);
  lcd.print("Antihorario      ");
  
  digitalWrite(VD, HIGH);
  delay(500);
  digitalWrite(AM, HIGH);
  delay(500);
  digitalWrite(VM, HIGH);
  delay(500);
  }
//-------------------------------------
//Função secundária
void DESLIGA()
{
  lcd.setCursor(0,0);
 lcd.print("Testa funcao...");
  
  digitalWrite(VD, LOW);
  digitalWrite(AM, LOW);
  digitalWrite(VM, LOW);
}
//-------------------------------------
//-------------------------------------
//Chama função principal
void loop() 
{
  lcd.setCursor(0,0);
  lcd.print("Testa funcao...");
  
  if(digitalRead(S0)==HIGH)
    {
    HORARIO(); // chama função horário
    }
  if(digitalRead(S1)==HIGH)
    {
     ANTIHORARIO(); // chama função horário 
    }
  if(digitalRead(S2)==HIGH)
    {
     DESLIGA(); // chama função desliga 
    }    
}

Agora, vamos programas um semáforo com um bo
tão para ligar e um para desligar. Ainda não utilizamos interrupção, portando, devemos manter BD um tempo pressionado.

O esquema no thinkercad.
www.clubedaeletronica.com.br

O código:

//-------------------------------------------------

//Aulas: Arduino Online
//Projeto: M4A - Semáforo com função
//Autor: Clodoaldo
//Revisão: 07_10_2020
//-------------------------------------------------

//-------------------------------------------------
//DEFININIÇÃO DE ENTRADAS E SAÍDAS (TAG)
//Saídas
#define VM1 2
#define AM1 3
#define VD1 4
#define VM2 5
#define AM2 6
#define VD2 7

//Entradas
#define LIGA 12
#define DESLIGA 13
//-------------------------------------------------
//DEFININIÇÃO DE VÁRIÁVEIS AUXILIARES
//Variáveis
 bool SELO = 0;
//-------------------------------------------------
void setup()
{
  pinMode(VM1, OUTPUT);
  pinMode(AM1, OUTPUT);
  pinMode(VD1, OUTPUT);
  pinMode(VM2, OUTPUT);
  pinMode(AM2, OUTPUT);
  pinMode(VD2, OUTPUT);

  pinMode(LIGA, INPUT);
  pinMode(DESLIGA, INPUT);
}

void ESTADO_00()
{
  digitalWrite(VM1, LOW);
  digitalWrite(AM1, LOW);
  digitalWrite(VD1, LOW);
  digitalWrite(VM2, LOW);
  digitalWrite(AM2, LOW);
  digitalWrite(VD2, LOW);
}

void ESTADO_01()
{
  digitalWrite(VM1, HIGH);
  digitalWrite(AM1, LOW);
  digitalWrite(VD1, LOW);
  digitalWrite(VM2, LOW);
  digitalWrite(AM2, LOW);
  digitalWrite(VD2, HIGH);
}

void ESTADO_02()
{
  digitalWrite(VM1, HIGH);
  digitalWrite(AM1, LOW);
  digitalWrite(VD1, LOW);
  digitalWrite(VM2, LOW);
  digitalWrite(AM2, HIGH);
  digitalWrite(VD2, LOW);
}

void ESTADO_03()
{
  digitalWrite(VM1, LOW);
  digitalWrite(AM1, LOW);
  digitalWrite(VD1, HIGH);
  digitalWrite(VM2, HIGH);
  digitalWrite(AM2, LOW);
  digitalWrite(VD2, LOW);
}

void ESTADO_04()
{
  digitalWrite(VM1, LOW);
  digitalWrite(AM1, HIGH);
  digitalWrite(VD1, LOW);
  digitalWrite(VM2, HIGH);
  digitalWrite(AM2, LOW);
  digitalWrite(VD2, LOW);
}
void loop()
{
  if(digitalRead(LIGA)==HIGH)
    {
    SELO=HIGH; 
    }
      if(SELO==HIGH)
      {
      ESTADO_01();
      delay(2000);
      ESTADO_02();
      delay(2000);
      ESTADO_03();
      delay(2000);
      ESTADO_04();
      delay(2000);
      }
  if(digitalRead(DESLIGA)==HIGH)
    {
    SELO=LOW;
    }
    if(SELO==LOW)
      {
      ESTADO_00();
      }    
}


"Todo grande problema deve ser dividido em problemas menores"
www.clubedaeletronica.com.br

008 - Arduino - Contador simples

Contar sempre foi e sempre será de grande interesse e na eletrônica não é diferente, então vamos conhecer alguns.  

O código

//--------------------------------------------------------------
//  Aulas Online - Arduino
//  Programa/hardware: 008 - Contador simples
//  Autor: Clodoaldo Silva
//  Revisão: 27Set2020
//---------------------------------------------------------------
//---------------------------------------------------------------
//inclui a biblioteca do LCD
//http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay
#include <LiquidCrystal.h>
//---------------------------------------------------------------
//---------------------------------------------------------------
//DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO
//Entradas
//Não há

//Saídas
//Não há

//DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
   Respectivamente
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD R/W pin to ground
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
*/
//---------------------------------------------------------------
//---------------------------------------------------------------
//Definindo variáveis
int conta = 0; //A variável int armazena um valor de 16 bits.
//---------------------------------------------------------------
//---------------------------------------------------------------
void setup()
{
  // Inicializa o LCD com 16 colunas e 2 linhas
  lcd.begin(16, 2);

  //Configurando os pinos definidos como entrada.
  //Não há
  //Configurando os pinos definidos como saídas.
  //Não há
  //---------------------------------------------------------------
  //---------------------------------------------------------------
  // Mostra informações iniciais no display
  lcd.setCursor(0, 0); //escreve no LCD (linha,Coluna)
  lcd.print("Contador Simples");
  delay(2000);
  //---------------------------------------------------------------
}
//---------------------------------------------------------------
//---------------------------------------------------------------

void loop()
{
  conta = conta + 1;
  lcd.setCursor(0, 0);
  lcd.print("Contador");
  lcd.setCursor(0, 1);
  lcd.print(conta);
}
//---------------------------------------------------------------

Agora, contaremos os pulsos gerados pelo botão colocado no pino A0 do Arduino.
O código:
//--------------------------------------------------------------
//  Aulas Online - Arduino
//  Programa/hardware: 008 - Ccontador simples
//  Autor: Clodoaldo Silva
//  Revisão: 27Set2020
//---------------------------------------------------------------
//---------------------------------------------------------------
//inclui a biblioteca do LCD
//http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay
#include <LiquidCrystal.h>
//---------------------------------------------------------------
//---------------------------------------------------------------
//DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO
//Entradas
#define CHAVE A0 

//Saídas
//Não há

//DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
   Respectivamente
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD R/W pin to ground
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
*/
//---------------------------------------------------------------
//---------------------------------------------------------------
//Definindo variáveis
int conta = 0; //A variável int armazena um valor de 16 bits.
//---------------------------------------------------------------
//---------------------------------------------------------------
void setup()
{
  // Inicializa o LCD com 16 colunas e 2 linhas
  lcd.begin(16, 2);

  //Configurando os pinos definidos como entrada.
  pinMode(CHAVE,INPUT);
  //Configurando os pinos definidos como saídas.
  //Não há
  //---------------------------------------------------------------
  //---------------------------------------------------------------
  // Mostra informações iniciais no display
  lcd.setCursor(0, 0); //escreve no LCD (linha,Coluna)
  lcd.print("Contador Simples");
  delay(2000);
  //---------------------------------------------------------------
}
//---------------------------------------------------------------
//---------------------------------------------------------------

void loop()
{
  if(digitalRead(CHAVE)==HIGH)
  {
  conta = conta + 1;
  lcd.setCursor(0, 0);
  lcd.print("Contador");
  lcd.setCursor(0, 1);
  lcd.print(conta);
  }
  while(digitalRead(CHAVE)==HIGH);
}
//---------------------------------------------------------------

007 - Arduino - Um pouco de lógica

Sistemas lógicos sempre fizeram e sempre farão parte da eletrônica, porém, aquelas portas 74XX serão substituídas por programação, então vamos conhecer um pouco.

Operadores Boleanos

! (NÃO lógico) Resulta em verdadeiro se o operando é falso, e vice-versa. Vale lembrar que condições verdadeiras e falsas na linguagem Arduino são representadas por true e false respectivamente.

&& (E lógico) Resulta em verdadeiro, apenas se ambos os operandos são verdadeiros. Vale lembrar que condições verdadeiras e falsas na linguagem Arduino são representadas por true e false respectivamente.

|| (OU lógico) - Resulta em verdadeiro se pelo menos um dos operandos é verdadeiro .Vale lembrar que condições verdadeiras e falsas na linguagem Arduino são representadas por true e false respectivamente.

 Mais em https://www.arduino.cc/reference/pt/ 

O hardware:


O Código: Lógica AND (&&)

//--------------------------------------------------------------
//  Aulas Online - Arduino
//  Programa/hardware: 007 - Um pouco de lógica com status no LCD
//  Autor: Clodoaldo Silva
//  Revisão: 25Abr2020
//---------------------------------------------------------------
//---------------------------------------------------------------
//inclui a biblioteca do LCD
//http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay
#include <LiquidCrystal.h>
//---------------------------------------------------------------
//---------------------------------------------------------------
//DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO
//Entradas
#define BL1 A3
#define BL2 A2

//Saídas
#define LED_01 13

//DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
   Respectivamente
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD R/W pin to ground
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
*/
//---------------------------------------------------------------
//---------------------------------------------------------------
//Definindo variáveis
//não há
//---------------------------------------------------------------
//---------------------------------------------------------------
void setup()
{
  // Inicializa o LCD com 16 colunas e 2 linhas
  lcd.begin(16, 2);

  //Configurando os pinos definidos como entrada.
  pinMode(BL1, INPUT);
  pinMode(BL2, INPUT);

  //Configurando os pinos definidos como saídas.
  pinMode(LED_01, OUTPUT);
  //---------------------------------------------------------------
  //---------------------------------------------------------------
  // Mostra informações iniciais no display
  lcd.setCursor(0, 0); //escreve na primeira linha coluna, primeira linha
  lcd.print("Aula 007 - Lógica  ");
  delay(2000);
  //---------------------------------------------------------------
}
//---------------------------------------------------------------
//---------------------------------------------------------------

void loop()
{
  // Lógica AND = &&
  // Lógica OR = ||
  // Lógica NOT = !

  if ((digitalRead(BL1) == HIGH) && (digitalRead(BL2) == HIGH))
  {
    digitalWrite(LED_01, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("LED Ligado....  ");
  }
  else
  {
    digitalWrite(LED_01, LOW);
    lcd.setCursor(0, 0);
    lcd.print("LED Desligado...");
  }
}
//---------------------------------------------------------------

O Código: Lógica OR (||)
/--------------------------------------------------------------
//  Aulas Online - Arduino
//  Programa/hardware: 007 - Um pouco de lógica com status no LCD
//  Autor: Clodoaldo Silva
//  Revisão: 25Abr2020
//---------------------------------------------------------------
//---------------------------------------------------------------
//inclui a biblioteca do LCD
//http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay
#include <LiquidCrystal.h>
//---------------------------------------------------------------
//---------------------------------------------------------------
//DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO
//Entradas
#define BL1 A3
#define BL2 A2

//Saídas
#define LED_01 13

//DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
   Respectivamente
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD R/W pin to ground
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
*/
//---------------------------------------------------------------
//---------------------------------------------------------------
//Definindo variáveis
//não há
//---------------------------------------------------------------
//---------------------------------------------------------------
void setup()
{
  // Inicializa o LCD com 16 colunas e 2 linhas
  lcd.begin(16, 2);

  //Configurando os pinos definidos como entrada.
  pinMode(BL1, INPUT);
  pinMode(BL2, INPUT);

  //Configurando os pinos definidos como saídas.
  pinMode(LED_01, OUTPUT);
  //---------------------------------------------------------------
  //---------------------------------------------------------------
  // Mostra informações iniciais no display
  lcd.setCursor(0, 0); //escreve na primeira linha coluna, primeira linha
  lcd.print("Aula 007 - Lógica  ");
  delay(2000);
  //---------------------------------------------------------------
}
//---------------------------------------------------------------
//---------------------------------------------------------------

void loop()
{
  // Lógica AND = &&
  // Lógica OR = ||
  // Lógica NOT = !

  if ((digitalRead(BL1) == HIGH) || (digitalRead(BL2) == HIGH))
  {
    digitalWrite(LED_01, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("LED Ligado....  ");
  }
  else
  {
    digitalWrite(LED_01, LOW);
    lcd.setCursor(0, 0);
    lcd.print("LED Desligado...");
  }
}
//---------------------------------------------------------------

O Código: Lógica NOT (!)
//--------------------------------------------------------------
//  Aulas Online - Arduino
//  Programa/hardware: 007 - Um pouco de lógica com status no LCD
//  Autor: Clodoaldo Silva
//  Revisão: 25Abr2020
//---------------------------------------------------------------
//---------------------------------------------------------------
//inclui a biblioteca do LCD
//http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay
#include <LiquidCrystal.h>
//---------------------------------------------------------------
//---------------------------------------------------------------
//DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO
//Entradas
#define BL1 A3
#define BL2 A2

//Saídas
#define LED_01 13

//DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
   Respectivamente
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD R/W pin to ground
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
*/
//---------------------------------------------------------------
//---------------------------------------------------------------
//Definindo variáveis
//não há
//---------------------------------------------------------------
//---------------------------------------------------------------
void setup()
{
  // Inicializa o LCD com 16 colunas e 2 linhas
  lcd.begin(16, 2);

  //Configurando os pinos definidos como entrada.
  pinMode(BL1, INPUT);
  pinMode(BL2, INPUT);

  //Configurando os pinos definidos como saídas.
  pinMode(LED_01, OUTPUT);
  //---------------------------------------------------------------
  //---------------------------------------------------------------
  // Mostra informações iniciais no display
  lcd.setCursor(0, 0); //escreve na primeira linha coluna, primeira linha
  lcd.print("Aula 007 - Logica  ");
  delay(2000);
  //---------------------------------------------------------------
}
//---------------------------------------------------------------
//---------------------------------------------------------------

void loop()
{
  // Lógica AND = &&
  // Lógica OR = ||
  // Lógica NOT = !

  if (!digitalRead(BL1) == HIGH)
  {
    digitalWrite(LED_01, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("LED Ligado....  ");
  }
  else
  {
    digitalWrite(LED_01, LOW);
    lcd.setCursor(0, 0);
    lcd.print("LED Desligado...");
  }
}
//---------------------------------------------------------------

“Dificuldades preparam pessoas comuns para destinos extraordinários” 
C.S Lewis

006 - Arduino - Liga/Desliga LED com status no LCD

Quando ligamos uma carga, precisamos informar ao usuário que a carga foi ligada e o LCD nos ajudará nesta etapa...

O Hardware:

O código:

//--------------------------------------------------------------

//  Aulas Online - Arduino
//  Programa/hardware: 006 - Ligando um LED com status no LCD
//  Autor: Clodoaldo Silva
//  Revisão: 25Abr2020
//---------------------------------------------------------------
//---------------------------------------------------------------
//inclui a biblioteca do LCD
//http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay
#include <LiquidCrystal.h>
//---------------------------------------------------------------
//---------------------------------------------------------------
//DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO
//Entradas
#define Liga A3
#define Desliga A2

//Saídas
#define LED_01 13

//DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
   Respectivamente
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD R/W pin to ground
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
*/
//---------------------------------------------------------------
//---------------------------------------------------------------
//Definindo variáveis
bool X = 0; //variável auxiliar
//---------------------------------------------------------------
//---------------------------------------------------------------
void setup()
{
  // Inicializa o LCD com 16 colunas e 2 linhas
  lcd.begin(16, 2);

  //Configurando os pinos definidos como entrada.
  pinMode(Liga, INPUT);
  pinMode(Desliga, INPUT);

  //Configurando os pinos definidos como saídas.
  pinMode(LED_01, OUTPUT);
  //---------------------------------------------------------------
  //---------------------------------------------------------------
  // Mostra informações iniciais no display
  lcd.setCursor(0, 0); //escreve na primeira linha coluna, primeira linha
  lcd.print("Arduino-Online  ");
  delay(2000);
  //---------------------------------------------------------------
}
//---------------------------------------------------------------
//---------------------------------------------------------------

void loop()
{
  if (digitalRead(Liga) == HIGH) // Se a chave estiver pressionada o pino receberá 0.
  {
    X = 1;
  }
  if (X == 1)
  {
    digitalWrite(LED_01, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("LED Ligado....  ");
  }
  if (digitalRead(Desliga) == HIGH)
  {
    X = 0;
  }
  if (X == 0)
  {
    digitalWrite(LED_01, LOW);
    lcd.setCursor(0, 0);
    lcd.print("LED Desligado...");
  }
}
//---------------------------------------------------------------

"Tente mover o mundo – o primeiro passo será mover a si mesmo."
Platão

005 - Arduino - Usando um LCD

Escrever no LCD é muito importante, pois informa ao usuário o que está acontecendo no sistema. Faremos, um programa básico que pode ser otimizado para qualquer processo.

O Hardware:


O código:


//--------------------------------------------------------------
//  Aulas Online - Arduino
//  Programa/hardware: 005 - Interface para o usuário LCD
//  Autor: Clodoaldo Silva
//  Revisão: 25Abr2020
//---------------------------------------------------------------
//---------------------------------------------------------------
//inclui a biblioteca do LCD
//http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay
#include <LiquidCrystal.h>
//---------------------------------------------------------------
//---------------------------------------------------------------
//DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO
//Entradas
#define S3 A2

//Saídas
//não há

//DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
   Respectivamente
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD R/W pin to ground
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
*/
//---------------------------------------------------------------
void setup()
{
  // Inicializa o LCD com 16 colunas e 2 linhas
  lcd.begin(16, 2);

  //Configurando os pinos definidos como entrada.
  pinMode(S3, INPUT);

  //Configurando os pinos definidos como saídas.
  //não há

  // Mostra informações iniciais no display
  lcd.setCursor(0, 0); //escreve na primeira linha coluna, primeira linha
  lcd.print("Aulas Online      ");
  lcd.setCursor(0, 1); //escreve na primeira linha coluna, segunda linha
  lcd.print("Arduino           ");
  delay(2000);
}
//---------------------------------------------------------------
//---------------------------------------------------------------
void loop()
{
  if (digitalRead(S3) == HIGH) // Se a chave estiver pressionada o pino receberá 0.
  {

    lcd.clear(); // limpa o LCD
    lcd.setCursor(0, 0);
    lcd.print("Teste do LCD ..."); 
    delay(1000);
    lcd.setCursor(0, 1);
    lcd.print("LCD OK          ");
    delay(1000);
  }
  else // Senão
  {
    //mensagem no LCD
    lcd.setCursor(0, 0);
    lcd.print("Pressione S3     ");
    lcd.setCursor(0, 1);
    lcd.print(".............    ");
  }
}
//---------------------------------------------------------------

004 - Arduino - Sequência de LEDs

Nos sistemas industriais, pressionamos um botão e iniciá-se um processo que se repetirá até que pressionamos um botão para desligar. O melhor circuito para esta ideia é uma sequência de LEDs. Então, vamos a ele. 

O hardware:


O código:

//-----------------------------------------------------------
//Arduino - Aula online
//Projeto: Sequência de LEDs
//Autor: Clodoaldo Silva
//Revisão:26/07/2020
//-----------------------------------------------------------
//-----------------------------------------------------------
//Definições de hardware
//Entradas ( Nome do pino e número do pino)
#define Liga 3
#define Desliga 2

//Saídas ( Nome do pino e número do pino)
#define LED_vermelho 8
#define LED_amarelo 11
#define LED_verde 13
//-----------------------------------------------------------
//-----------------------------------------------------------
//Variáveis auxiliares
bool X = 0; //Variável auxiliar
//-----------------------------------------------------------
//-----------------------------------------------------------
void setup()
{
  //Nome do pino e modo de trabalho(entrada ou saída)

  pinMode(Liga, INPUT);
  pinMode(Desliga, INPUT);
  pinMode(LED_vermelho, OUTPUT);
  pinMode(LED_amarelo, OUTPUT);
  pinMode(LED_verde, OUTPUT);
}
//-----------------------------------------------------------
//-----------------------------------------------------------
void loop()
{
  if (digitalRead(Liga) == HIGH) //se liga for 1
  {
    X = 1; //coloca a variável X em 1 
  }
  if (X == 1) //se X for 1
  {
    digitalWrite(LED_vermelho, HIGH); // inicia o processo...
    digitalWrite(LED_amarelo, LOW);
    digitalWrite(LED_verde, LOW);
    
    delay(500);
    
    digitalWrite(LED_vermelho, LOW); 
    digitalWrite(LED_amarelo, HIGH);
    digitalWrite(LED_verde, LOW);
    
    delay(500);

    digitalWrite(LED_vermelho, LOW); 
    digitalWrite(LED_amarelo, LOW);
    digitalWrite(LED_verde, HIGH);
    delay(500);
  }

  if (digitalRead(Desliga) == HIGH) // se desliga for 1 
  {
    X = 0; // coloca X em 0 
  }
  if (X == 0) // se x for 0 
  {
    digitalWrite(LED_vermelho, LOW); // desliga o processo...
    digitalWrite(LED_amarelo, LOW);
    digitalWrite(LED_verde, LOW);
  }
}