MCO018703 2024 2 AULA04: mudanças entre as edições
(18 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
= | =Mapa das Entradas e Saídas do Arduino= | ||
;OBJETIVOS | ;OBJETIVOS | ||
Linha 5: | Linha 6: | ||
O aluno será capaz de: | O aluno será capaz de: | ||
* Apresentar o mapa das entradas e saídas do Arduino; | |||
* Saber utilizar as funções na linguagem do Arduino. | |||
;METODOLOGIA | ;METODOLOGIA | ||
:A aula será expositiva e dialogada, utilizando apresentação de texto base na Internet, onde serão mostrados exemplos executados programas para programação de microcontroladores. Na prática | :A aula será expositiva e dialogada, utilizando apresentação de texto base na Internet, onde serão mostrados exemplos executados programas para programação de microcontroladores. Na prática utilizaremos os pinos digitais como entrada digital fazendo uso de ''pushbotton''. | ||
;INTRODUÇÃO | |||
Nessa aula vamos aprender alguns conceitos básicos para começar a utilizar uma placa Arduíno. Este conteúdo mostrará como configurar e manipular as entradas e saídas digitais em uma placa Arduino, de modo que, no decorrer deste material você aprenderá a desenvolver programas capazes de utilizar as funções, por exemplo, de fazer com que o seu Arduíno realize o acionamento de um LED e também com que ele consiga saber se um botão foi pressionado. | |||
[[imagem: | [[imagem:Fig041_MCO018703.jpg|600px|center|border]] | ||
<center> | <center> | ||
Figura 1 - | Figura 1 - Mapa das Entradas e Saídas do Arduino. | ||
</center> | </center> | ||
;Pinos Digitais: São usados para detecção ou transmissão de controles digitais. | |||
:Funções em C: | |||
::pinMode( ) | |||
::digitalRead( ) | |||
::digitalWrite( ) | |||
::analogWrite( ) | |||
::attachInterrupt( ) | |||
::pulseIn( ) | |||
;Pinos analógicos: São usados para leitura de sinais de sensores análogicos. | |||
:Funções em C: | |||
::analogRead( ) | |||
;Porta USB: É usada para comunicação serial com um computador. | |||
:Funções em C: | |||
::begin( ) | |||
::end( ) | |||
::available( ) | |||
::read( ) | |||
::print( ) | |||
::println( ) | |||
;Pinos de Alimentação: São usados para alimentação de circuitos externos e ''reset'' do Arduino. | |||
==Funções das Portas de E/S== | |||
;PINOS DIGITAIS | |||
São 14 pinos marcados com o nome DIGITAL logo abaixo de duas barras de 8 pinos. São numerados de 0 a 13 da direita para a esquerda e podem ser configurados pela função | |||
'''pinMode( )''' para detetarem ou transmitirem níveis lógicos digitais (verdadeiro/falso, 1/0 ou HIGH/LOW). A Figura 2 mostra o mapa de pinos Digitais do Arduino. | |||
[[imagem:Fig042_MCO018703.jpg|600px|center|border]] | |||
<center> | |||
Figura 2 - Mapa dos Pinos Digitais do Arduino. | |||
</center> | |||
{| class="wikitable" style="background-color:#ffffff; text-align: center;" | |||
! style="background:#2E8B57; color:white; font-weight:bold;" | Função | |||
! style="background:#2E8B57; color:white; font-weight:bold;" | Exemplo | |||
! style="background:#2E8B57; color:white;font-weight:bold;" | Notas | |||
# | |||
! style="background:#2E8B57; color:white;" | | |||
! style="background:#2E8B57; color:white;" | | |||
! style="background:#2E8B57; color:white;" | | |||
|- | |- | ||
| '''pinMode(pino,modo)''' | |||
Serve para estabelecer a direção do | |||
fluxo de informações em qualquer dos 14 | |||
pinos digitais. Dois parâmetros devem | |||
ser passados à função: o primeiro indica | |||
qual pino vai ser usado; o segundo, se | |||
esse pino vai ser entrada ou se vai ser | |||
saída dessas informações. | |||
| '''pinMode(2,OUTPUT);''' | |||
Aqui o pino 2 é selecionado para | |||
transmitir informações do Arduino | |||
para um circuito externo qualquer. | |||
Para configurar esse pino como | |||
entrada, o segundo parâmetro dessa | |||
função deve ser INPUT. | |||
| Essa função é sempre | |||
escrita dentro da | |||
função | |||
setup( ). | |||
|- | |- | ||
|'''digitalRead(pino) ''' | |||
| | Uma vez configurado um certo pino | ||
como entrada com a função | |||
pinMode( ), a informação presente | |||
nesse pino pode ser lida com a função | |||
digitalRead( ) e armazenada | |||
numa variável qualquer. | |||
| '''int chave = digitalRead(3);''' | |||
Nesse exemplo a variável inteira | |||
‘chave’ vai guardar o estado lógico | |||
(verdadeiro/falso) presente no | |||
pino digital 3. | |||
| | |||
|- | |- | ||
| '''digitalWrite(pino,valor) ''' | |||
Para enviar um nível lógico para qualquer | |||
pino digital do Arduino utiliza-se essa | |||
função. Dois parâmetros são requeri | |||
dos: o número do pino e o estado lógico | |||
(HIGH/LOW ) em que esse pino deve | |||
permanecer. | |||
| '''digitalWrite(2,HIGH);''' | |||
Aqui uma tensão de 5 volts é colo | |||
cada no pino 2. Para enviar terra | |||
para esse pino o segundo parâmetro | |||
deverá ser LOW. | |||
| É necessário configurar previamente o | |||
pino como saída com a função | |||
pinMode( ). | |||
|- | |- | ||
| '''analogWrite(pino,valor)''' | |||
| | O Arduino pode gerar tensões analógicas | ||
em 6 de seus 14 pinos digitais com a função | |||
'''analogWrite( )'''. Dois parâmetros devem | |||
ser passados à função: o primeiro indica em | |||
qual pino será gerada a tensão; o segundo | |||
determina a amplitude dessa tensão, e | |||
deve ter valores entre 0 (para 0 volt) e | |||
255 (para 5 volts). | |||
| '''analogWrite(10,128);''' | |||
Com esses parâmetros uma | |||
tensão analógica de 2,5 volts | |||
vai aparecer no pino 10. Não é | |||
necessário configurar um pino | |||
PWM como saída com a função | |||
'''pinMode( )''' quando se chama | |||
função '''analogWrite( )'''. | |||
| Modulação por Largura de Pulsos, ou | |||
PWM (Pulse Width Modulation) na | |||
língua inglesa, é uma técnica usada | |||
para gerar tensões analógicas a partir | |||
de uma sequência de pulsos digitais. | |||
|- | |- | ||
| '''attachInterrupt(pino,função,modo)''' | |||
| | Essa função é uma rotina de serviço de | ||
interrupção, ou ISR (Interrupt Service | |||
Routine) em inglês. Toda vez que ocorrer | |||
uma interrupção por hardware no pino digi | |||
tal 2 ou no 3 do Arduino uma outra função, | |||
criada pelo programador, vai ser chamada. | |||
O terceiro parâmetro, modo, informa | |||
como a interrupção vai ser disparada, se | |||
na borda de subida do pulso detetado no | |||
pino do Arduino, se na borda de descida, se | |||
quando o pulso for baixo ou se na mudança | |||
de nível desse pulso. | |||
| '''attachInterrupt(0,contador,RISING);''' | |||
Nesse exemplo a função | |||
‘contador’ vai ser chamada | |||
quando o Arduino detetar uma | |||
mudança do nível LOW para | |||
o nível HIGH em seu pino 2. | |||
Nessa ISR o parâmetro 0 | |||
monitora o pino 2, o parâmetro 1 | |||
monitora o pino 3. | |||
| LOW - dispara a interrupção quando | |||
o pino está em 0; | |||
CHANGE - dispara sempre que o | |||
pino muda de estado (de 0 para 1, | |||
ou vice-versa); | |||
RISING - somente quando o pino | |||
muda de 0 para 1; | |||
FALLING - somente quando o pino | |||
muda de 1 para 0. | |||
|- | |- | ||
| '''pulseIn(pino,valor,espera)''' | |||
Essa função mede a largura em microssegundos | |||
de um pulso em qualquer pino digital. | |||
O parâmetro ‘valor’ diz à função que | |||
tipo de pulso deve ser medido, se HIGH | |||
ou LOW. O parâmetro ‘espera’ (time out) é | |||
opcional e se passado à função faz com que | |||
a medida do pulso só comece após o tempo | |||
em microssegundos ali especificado. | |||
| '''pulseIn(4,HIGH);''' | |||
Aqui essa função vai monitorar | |||
o pino 4, e quando o nível | |||
nesse pino mudar de LOW | |||
para HIGH a sua largura vai | |||
ser medida até que seu nível | |||
volte para LOW. Se, por | |||
exemplo, for passado o valor 100 | |||
como terceiro parâmetro, a | |||
medida da largura do pulso só | |||
será disparada após 100 uS. | |||
| Uma aplicação interessante para | |||
essas duas últimas funções seria | |||
o de montar um contador de dois dígitos | |||
com mostradores de 7-segmentos. | |||
|} | |} | ||
;EXEMPLO | |||
No programa abaixo essas três funções: pinMode(), digitalRead() e digitalWrite() são utilizadas para acender um LED no pino 2 toda vez que | |||
uma chave normalmente aberta no pino 3 for pressionada. | |||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
void setup() | |||
{ | |||
pinMode(11,OUTPUT); | |||
// led no pino 11 como saída | |||
pinMode(5,INPUT); // Pode-se definir um resistor interno de pull-up com INPUT_PULLUP | |||
// chave no pino 5 como entrada | |||
} | |||
void loop() | |||
{ | |||
int chave = digitalRead(5); | |||
// variável ‘chave’ guarda estado do pino 5 | |||
if (chave==HIGH) | |||
digitalWrite(11,LOW); | |||
else | |||
digitalWrite(11,HIGH); | |||
// estado de ‘chave’ é passado para pino 11 | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[imagem: | A Figura 3 mostra como ficaria as ligações para acender o LED toda vez que a chave for pressionada. | ||
[[imagem:Fig043_MCO018703.jpg|400px|center]] | |||
<center> | <center> | ||
Figura 3 - | Figura 3 - Fios vermelhos são 5V, fios pretos GND e fios verdes conexões com os Pinos de E/S. | ||
</center> | </center> | ||
O botão ''push-button'' também é chamado micro ''switch''. A Figura 4 ilustra o seu funcionamento. | |||
[[imagem:Fig013_MCO18703.png|500px|center]] | |||
<center> | |||
Figura 4 - ''Push-button'' de pólo simples com 2 ou 4 pinos de contato. | |||
</center> | |||
</ | |||
LED, ou ''Light Emitter Diode'' é um diodo emissor de luz que, quando alimentado corretamente, permite o fluxo de energia apenas em um sentido. É um componente polarizado (com pólos positivo e negativo) e deve ser corretamente conectado para funcionar. Note que o polo positivo possui uma perna maior (terminal maior) que a outra (veja a figura abaixo). Já o polo negativo possui a menor perna (terminal menor). | |||
[[imagem: | [[imagem:Fig004_MCO18703.jpg|500px|center]] | ||
<center> | <center> | ||
Figura | Figura 5 - ''Diodo emissor de luz. | ||
</center> | </center> | ||
<blockquote style="background:#FAFAD2; border: 2px solid #2E8B57; margin-left: 200px; margin-right: 200px; padding: 2em;"> | |||
;Nota: Alguns LED's apresentam o polo negativo chanfrado (plano) no seu exterior. | |||
</blockquote> | |||
==Enviando estado de chave para Monitor Serial== | |||
;EXEMPLO 2: Neste teste, o estado de uma chave externa será lido e enviado pro Monitor Serial. | |||
;ESQUEMÁTICO | |||
[[imagem:Fig022_MCO18703.png|500px|center]] | |||
;CÓDIGO FONTE | |||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
int pushButton=2; | |||
void setup() { | |||
void setup() | |||
{ | |||
Serial.begin(9600); | |||
pinMode(pushButton, INPUT); | |||
} | } | ||
void loop() | void loop() | ||
{ | |||
int buttonState=digitalRead(pushButton); | |||
Serial.println(buttonState); | |||
delay(1); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
;No protoshield do laboratório: | |||
[[imagem:Fig023_MCO18703.jpg|400px|center]] | |||
;Quando pressiona a chave, efeito no Monitor Serial: | |||
[[imagem:Fig024_MCO18703.png|500px|center]] | |||
==Pushbutton como interruptor liga/desliga== | |||
Criar um circuito para atribuir duas funções em um único botão (pushbutton). O botão servirá como um interruptor para ligar e desligar um componente eletrônico. Neste exemplo vamos ligar e desligar um led utilizando o pushbutton como interruptor. | |||
;EXEMPLO 3 | |||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
const int buttonPin = 6; | |||
const int ledPin = 13; | |||
int estado = 0; // variável para leitura do pushbutton | |||
int guarda_estado = LOW; // variável para armazenar valores do pushbutton | |||
void setup() { | void setup() { | ||
pinMode( | pinMode(ledPin, OUTPUT); | ||
pinMode(buttonPin, INPUT); // resistor de pullup -> pinMode(buttonPin, INPUT_PULLUP); | |||
} | } | ||
void loop(){ | |||
estado = digitalRead(buttonPin); | |||
if (estado == LOW) { // para pullup (estado==LOW) | |||
guarda_estado = !guarda_estado; // inverte valor da variável variable_buttonEstado | |||
delay(500); //esperera o tempo de 500ms para evitar que haja várias vezes alterações | |||
} | |||
if (guarda_estado == HIGH) { | |||
digitalWrite(ledPin, HIGH); | |||
} | |||
else { | |||
digitalWrite(ledPin, LOW); | |||
} | |||
} | |||
</syntaxhighlight> | |||
=Exercícios= | |||
:1. Altere o programa Button para trocar o estado do LED quando o botão é pressionado. | |||
:2. Explique e implemente o código abaixo: | |||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
#define BOTAO 6 | |||
#define LED 13 | |||
void setup() { | void setup() { | ||
pinMode(LED, OUTPUT); | |||
pinMode(BOTAO, INPUT); | |||
} | } | ||
void loop() { | void loop() { | ||
digitalWrite(LED, !digitalRead(BOTAO)); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
;Nota: O operador !, em linguagem C, significa negação ('''NOT''') e tem como finalidade complementar a expressão que segue à sua direita. | |||
= | =Referências= | ||
[1] https://portal.vidadesilicio.com.br/entradas-e-saidas-digitais/ | |||
[2] http://ordemnatural.com.br/pdf-files/CartilhadoArduino_ed1.pdf | |||
[3] https://www.tinkercad.com/circuits | |||
[4] http://www.um.pro.br/arduino/index.php?c=ArduinoUno | |||
----- | ----- |
Edição atual tal como às 13h07min de 14 de novembro de 2024
1 Mapa das Entradas e Saídas do Arduino
- OBJETIVOS
O aluno será capaz de:
- Apresentar o mapa das entradas e saídas do Arduino;
- Saber utilizar as funções na linguagem do Arduino.
- METODOLOGIA
- A aula será expositiva e dialogada, utilizando apresentação de texto base na Internet, onde serão mostrados exemplos executados programas para programação de microcontroladores. Na prática utilizaremos os pinos digitais como entrada digital fazendo uso de pushbotton.
- INTRODUÇÃO
Nessa aula vamos aprender alguns conceitos básicos para começar a utilizar uma placa Arduíno. Este conteúdo mostrará como configurar e manipular as entradas e saídas digitais em uma placa Arduino, de modo que, no decorrer deste material você aprenderá a desenvolver programas capazes de utilizar as funções, por exemplo, de fazer com que o seu Arduíno realize o acionamento de um LED e também com que ele consiga saber se um botão foi pressionado.

Figura 1 - Mapa das Entradas e Saídas do Arduino.
- Pinos Digitais
- São usados para detecção ou transmissão de controles digitais.
- Funções em C:
- pinMode( )
- digitalRead( )
- digitalWrite( )
- analogWrite( )
- attachInterrupt( )
- pulseIn( )
- Pinos analógicos
- São usados para leitura de sinais de sensores análogicos.
- Funções em C:
- analogRead( )
- Porta USB
- É usada para comunicação serial com um computador.
- Funções em C:
- begin( )
- end( )
- available( )
- read( )
- print( )
- println( )
- Pinos de Alimentação
- São usados para alimentação de circuitos externos e reset do Arduino.
1.1 Funções das Portas de E/S
- PINOS DIGITAIS
São 14 pinos marcados com o nome DIGITAL logo abaixo de duas barras de 8 pinos. São numerados de 0 a 13 da direita para a esquerda e podem ser configurados pela função pinMode( ) para detetarem ou transmitirem níveis lógicos digitais (verdadeiro/falso, 1/0 ou HIGH/LOW). A Figura 2 mostra o mapa de pinos Digitais do Arduino.

Figura 2 - Mapa dos Pinos Digitais do Arduino.
Função | Exemplo | Notas |
---|---|---|
pinMode(pino,modo)
Serve para estabelecer a direção do fluxo de informações em qualquer dos 14 pinos digitais. Dois parâmetros devem ser passados à função: o primeiro indica qual pino vai ser usado; o segundo, se esse pino vai ser entrada ou se vai ser saída dessas informações. |
pinMode(2,OUTPUT);
Aqui o pino 2 é selecionado para transmitir informações do Arduino para um circuito externo qualquer. Para configurar esse pino como entrada, o segundo parâmetro dessa função deve ser INPUT. |
Essa função é sempre
escrita dentro da função setup( ). |
digitalRead(pino)
Uma vez configurado um certo pino como entrada com a função pinMode( ), a informação presente nesse pino pode ser lida com a função digitalRead( ) e armazenada numa variável qualquer. |
int chave = digitalRead(3);
Nesse exemplo a variável inteira ‘chave’ vai guardar o estado lógico (verdadeiro/falso) presente no pino digital 3. |
|
digitalWrite(pino,valor)
Para enviar um nível lógico para qualquer pino digital do Arduino utiliza-se essa função. Dois parâmetros são requeri dos: o número do pino e o estado lógico (HIGH/LOW ) em que esse pino deve permanecer. |
digitalWrite(2,HIGH);
Aqui uma tensão de 5 volts é colo cada no pino 2. Para enviar terra para esse pino o segundo parâmetro deverá ser LOW. |
É necessário configurar previamente o
pino como saída com a função pinMode( ). |
analogWrite(pino,valor)
O Arduino pode gerar tensões analógicas em 6 de seus 14 pinos digitais com a função analogWrite( ). Dois parâmetros devem ser passados à função: o primeiro indica em qual pino será gerada a tensão; o segundo determina a amplitude dessa tensão, e deve ter valores entre 0 (para 0 volt) e 255 (para 5 volts). |
analogWrite(10,128);
Com esses parâmetros uma tensão analógica de 2,5 volts vai aparecer no pino 10. Não é necessário configurar um pino PWM como saída com a função pinMode( ) quando se chama função analogWrite( ). |
Modulação por Largura de Pulsos, ou
PWM (Pulse Width Modulation) na língua inglesa, é uma técnica usada para gerar tensões analógicas a partir de uma sequência de pulsos digitais. |
attachInterrupt(pino,função,modo)
Essa função é uma rotina de serviço de interrupção, ou ISR (Interrupt Service Routine) em inglês. Toda vez que ocorrer uma interrupção por hardware no pino digi tal 2 ou no 3 do Arduino uma outra função, criada pelo programador, vai ser chamada. O terceiro parâmetro, modo, informa como a interrupção vai ser disparada, se na borda de subida do pulso detetado no pino do Arduino, se na borda de descida, se quando o pulso for baixo ou se na mudança de nível desse pulso. |
attachInterrupt(0,contador,RISING);
Nesse exemplo a função ‘contador’ vai ser chamada quando o Arduino detetar uma mudança do nível LOW para o nível HIGH em seu pino 2. Nessa ISR o parâmetro 0 monitora o pino 2, o parâmetro 1 monitora o pino 3. |
LOW - dispara a interrupção quando
o pino está em 0; CHANGE - dispara sempre que o pino muda de estado (de 0 para 1, ou vice-versa); RISING - somente quando o pino muda de 0 para 1; FALLING - somente quando o pino muda de 1 para 0. |
pulseIn(pino,valor,espera)
Essa função mede a largura em microssegundos de um pulso em qualquer pino digital. O parâmetro ‘valor’ diz à função que tipo de pulso deve ser medido, se HIGH ou LOW. O parâmetro ‘espera’ (time out) é opcional e se passado à função faz com que a medida do pulso só comece após o tempo em microssegundos ali especificado. |
pulseIn(4,HIGH);
Aqui essa função vai monitorar o pino 4, e quando o nível nesse pino mudar de LOW para HIGH a sua largura vai ser medida até que seu nível volte para LOW. Se, por exemplo, for passado o valor 100 como terceiro parâmetro, a medida da largura do pulso só será disparada após 100 uS. |
Uma aplicação interessante para
essas duas últimas funções seria o de montar um contador de dois dígitos com mostradores de 7-segmentos. |
- EXEMPLO
No programa abaixo essas três funções: pinMode(), digitalRead() e digitalWrite() são utilizadas para acender um LED no pino 2 toda vez que
uma chave normalmente aberta no pino 3 for pressionada.
void setup()
{
pinMode(11,OUTPUT);
// led no pino 11 como saída
pinMode(5,INPUT); // Pode-se definir um resistor interno de pull-up com INPUT_PULLUP
// chave no pino 5 como entrada
}
void loop()
{
int chave = digitalRead(5);
// variável ‘chave’ guarda estado do pino 5
if (chave==HIGH)
digitalWrite(11,LOW);
else
digitalWrite(11,HIGH);
// estado de ‘chave’ é passado para pino 11
}
A Figura 3 mostra como ficaria as ligações para acender o LED toda vez que a chave for pressionada.

Figura 3 - Fios vermelhos são 5V, fios pretos GND e fios verdes conexões com os Pinos de E/S.
O botão push-button também é chamado micro switch. A Figura 4 ilustra o seu funcionamento.

Figura 4 - Push-button de pólo simples com 2 ou 4 pinos de contato.
LED, ou Light Emitter Diode é um diodo emissor de luz que, quando alimentado corretamente, permite o fluxo de energia apenas em um sentido. É um componente polarizado (com pólos positivo e negativo) e deve ser corretamente conectado para funcionar. Note que o polo positivo possui uma perna maior (terminal maior) que a outra (veja a figura abaixo). Já o polo negativo possui a menor perna (terminal menor).

Figura 5 - Diodo emissor de luz.
- Nota
- Alguns LED's apresentam o polo negativo chanfrado (plano) no seu exterior.
1.2 Enviando estado de chave para Monitor Serial
- EXEMPLO 2
- Neste teste, o estado de uma chave externa será lido e enviado pro Monitor Serial.
- ESQUEMÁTICO

- CÓDIGO FONTE
int pushButton=2;
void setup()
{
Serial.begin(9600);
pinMode(pushButton, INPUT);
}
void loop()
{
int buttonState=digitalRead(pushButton);
Serial.println(buttonState);
delay(1);
}
- No protoshield do laboratório

- Quando pressiona a chave, efeito no Monitor Serial

1.3 Pushbutton como interruptor liga/desliga
Criar um circuito para atribuir duas funções em um único botão (pushbutton). O botão servirá como um interruptor para ligar e desligar um componente eletrônico. Neste exemplo vamos ligar e desligar um led utilizando o pushbutton como interruptor.
- EXEMPLO 3
const int buttonPin = 6;
const int ledPin = 13;
int estado = 0; // variável para leitura do pushbutton
int guarda_estado = LOW; // variável para armazenar valores do pushbutton
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT); // resistor de pullup -> pinMode(buttonPin, INPUT_PULLUP);
}
void loop(){
estado = digitalRead(buttonPin);
if (estado == LOW) { // para pullup (estado==LOW)
guarda_estado = !guarda_estado; // inverte valor da variável variable_buttonEstado
delay(500); //esperera o tempo de 500ms para evitar que haja várias vezes alterações
}
if (guarda_estado == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
2 Exercícios
- 1. Altere o programa Button para trocar o estado do LED quando o botão é pressionado.
- 2. Explique e implemente o código abaixo:
#define BOTAO 6
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
pinMode(BOTAO, INPUT);
}
void loop() {
digitalWrite(LED, !digitalRead(BOTAO));
}
- Nota
- O operador !, em linguagem C, significa negação (NOT) e tem como finalidade complementar a expressão que segue à sua direita.
3 Referências
[1] https://portal.vidadesilicio.com.br/entradas-e-saidas-digitais/
[2] http://ordemnatural.com.br/pdf-files/CartilhadoArduino_ed1.pdf
[3] https://www.tinkercad.com/circuits
[4] http://www.um.pro.br/arduino/index.php?c=ArduinoUno