quinta-feira, 22 de junho de 2023

AA_A1 - Programa: Pisca Led com Arduino

 Ao abrir a IDE Arduino você se depara com uma estrutura padrão de programa contendo as funções setup() e loop().

  • setup() – É nessa parte do programa que você configura as opções iniciais do seu programa: os valores iniciais de uma variável, se uma porta será utilizada como entrada ou saída, mensagens para o usuário, etc. Essa função irá executar apenas uma vez no início do programa.
  • loop() – Diferente da função setup(), essa parte do programa repete uma estrutura de comandos de forma contínua ou até que alguma comando de “parar” seja enviado ao Arduino.

Vamos ver exatamente como isso funciona, levando em consideração o programa que acende e apaga o led embutido na placa Arduino em intervalos de 1 segundo.

A primeira coisa que fazemos no início do programa é colocar uma pequena observação sobre o nome do programa, sua função e quem o criou:

1
2
3
// Programa : Pisca Led Arduino
// Autor : Sinésio Gomes
// Data :15/05/2023

Comece uma linha com barras duplas ( // ) e tudo o que vier depois dessa linha será tratado como um comentário. Uma das boas práticas de programação é documentar o seu código por meio das linhas de comentário. Com elas, você pode inserir observações sobre como determinada parte do programa funciona ou o que significa aquela variável xyz que você criou. Isso será útil não só para você, se precisar alterar o código depois de algum tempo, como também para outras pessoas que utilizarão o seu programa.

Após os comentários, vem a estrutura do setup(). É nela que definimos que o pino 13 do Arduino será utilizado como saída.

1
2
3
4
5
void setup()
{
  //Define a porta do led como saida
  pinMode(13, OUTPUT);
}

Por último, temos o loop(), que contém as instruções para acender e apagar o led, e também o intervalo entre essas ações.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void loop()
{
  //Acende o led
  digitalWrite(13, HIGH);
   
  //Aguarda o intervalo especificado
  delay(1000);
   
  //Apaga o led
  digitalWrite(13, LOW);
   
  //Aguarda o intervalo especificado
  delay(1000);
}

A linha do código contendo digitalWrite(13, HIGH) coloca a porta 13 em nível alto (HIGH, ou 1), acendendo o led embutido na placa. O comando delay(1000), especifica o intervalo, em milissegundos, no qual o programa fica parado antes de avançar para a próxima linha.

Figura 01 - Circuito "Pisca_Led"
O comando digitalWrite(13, LOW), apaga o led, colocando a porta em nível baixo (LOW, ou 0), e depois ocorre uma nova parada no programa, e o processo é então reiniciado.

Quando o código estiver pronto para ser carregado na placa, conecte a placa Arduino no seu computador, entre no menu ferramentas, escolha o modelo da placa e a porta na qual a mesma está conectada.

Então clique no botão de compilação. Isso irá verificar se existe algum erro no código e gerar o arquivo de programa necessário para carregar na placa.

Se estiver tudo OK, clique no botão carregar. Isso irá gravar o programa na placa. Caso não apareça nenhum erro, você deverá ver o LED piscando em um intervalo de 1 segundo.

Exercício proposto pelo Professor Murilo Henrique Miranda.

Arquivos do código fonte - Pisca Led está disponível em: 21_01_01_Pisca_LED_SRG (PDF)

© Direitos de autor. 2023: Gomes; Sinésio Raimundo. Última atualização: 15/05/2023

terça-feira, 20 de abril de 2021

EX38 - Potenciômetro e LED's com shield multi funções e Arduino Uno


 Este projeto também vai usar os dois leds, mas controlados por um potenciômetro que está ligado na porta analógica

 
A0 do Arduino. Os leds piscam alternadamente e quanto mais você girar o potenciômetro para a direita, mais lentamente eles vão piscar.

//Programa: Shield Arduino Multifuncoes
//Objetivo: Potenciometro com leds
//Autor: Prof. Sinésio Raimundo Gomes
//Definicao dos pinos
#define Pino_Led_Azul 13
#define Pino_Led_Vermelho 12
#define Pino_Pot A0
//Armazena valor lido do potenciometro
int valor_pot;
void setup()
{
//Pinos led e buzzer como saida
pinMode(Pino_Led_Azul , OUTPUT);
pinMode(Pino_Led_Vermelho , OUTPUT);
//Pino potenciometro como entrada
pinMode(Pino_Pot, INPUT);
}
void loop()
{
//Le o valor do potenciometro
valor_pot = analogRead(Pino_Pot);
valor_pot = map(valor_pot, 0, 1024, 100, 500);
//Pisca o led de acordo com o valor lido
digitalWrite(Pino_Led_Azul, HIGH);
digitalWrite(Pino_Led_Vermelho, LOW);
delay(valor_pot);
digitalWrite(Pino_Led_Azul, LOW);
digitalWrite(Pino_Led_Vermelho, HIGH);
delay(valor_pot);
}

Este programa utiliza o comando MAP (linha 26), que “converte” o valor lido da porta analógica A0, entre 0 e 1024, em um valor entre 100 e 500, que é o valor que será usado para determinar o tempo no comando DELAY, que os leds ficarão acesos. Lembrando que esse tempo é em milissegundos (ms).

© Direitos de autor. 2020: Gomes; Sinésio Raimundo. Última atualização: 14/06/2023 

domingo, 18 de abril de 2021

EX37 - Botões, LED's e Buzzer com shield multi funções e Arduino Uno


 O primeiro projeto é bem básico e nele você vai utilizar os botões SW1 e SW2, no lado esquerdo do shield, para acionar os leds azul e vermelho, e ao mesmo tempo fazer com que o buzzer emita um som. Neste programa não é utilizada nenhuma biblioteca, já que apenas efetuamos a escrita e leitura das portas digitais dos botões (portas digitais D2 e D3), dos leds (D12 e D13) e do buzzer (D5).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Programa: Shield Arduino Multifuncoes
//Objetivo: Uso de botoes, led e buzzer //Autor: Prof. Sinésio Raimundo Gomes
//Definicao dos pinos #define Pino_SW1 2 #define Pino_SW2 3 #define Pino_Led_Azul 13 #define Pino_Led_Vermelho 12 #define Pino_Buzzer 5
//Armazena valor botoes int valor_SW1, valor_SW2;
void setup() { //Pinos led e buzzer como saida pinMode(Pino_Led_Azul , OUTPUT); pinMode(Pino_Led_Vermelho , OUTPUT); pinMode(Pino_Buzzer, OUTPUT);
//Pinos botoes SW1 e SW2 como entrada pinMode(Pino_SW1, INPUT); pinMode(Pino_SW2, INPUT); }
void loop() { //Verifica se o botao SW1 foi acionado valor_SW1 = digitalRead(Pino_SW1); if (valor_SW1 == 0) { //Acende o led azul digitalWrite(Pino_Led_Azul, HIGH); //Aciona o buzzer tone(Pino_Buzzer, 50,30); } else { //Desliga o led azul e o buzzer digitalWrite(Pino_Led_Azul, LOW); noTone(Pino_Buzzer); } //Verifica se o botao SW2 foi acionado valor_SW2 = digitalRead(Pino_SW2); if (valor_SW2 == 0) { //Acende o led vermelho digitalWrite(Pino_Led_Vermelho, HIGH); //Aciona o buzzer tone(Pino_Buzzer, 900,50); } else { //Desliga o led azul e o buzzer digitalWrite(Pino_Led_Vermelho, LOW); noTone(Pino_Buzzer); } }

Altere o valor da frequência do som emitido pelo buzzer nas linhas 36 e 51 do programa. 
© Direitos de autor. 2020: Gomes; Sinésio Raimundo. Última atualização: 14/06/2023.