5
Robótica
IFMG
52
Robótica
UMG
8
Robótica
UNISAL
15
Robótica
UMG
11
Robótica
UMG
2
Robótica
UNISAL
9
Robótica
UNINGA
6
Robótica
UMG
1
Robótica
IFSP
1
Robótica
IFSP
Texto de pré-visualização
Entradas Digitais O sketch mostrado no Código 1 possibilita que o estado aceso ou apagado do LED LD1 ligado ao pino 26 do Arduino MEGA seja definido pelo estado aberta ou fechada da chave CH1 Figura 1 ligada ao pino 4 define CH1 4 define LD1 26 void setup pinModeCH1 INPUT pinModeLD1 OUTPUT void loop if digitalReadCH1 1 digitalWriteLD1 1 if digitalReadCH1 0 digitalWriteLD1 0 Código 1 Acender ou apagar um LED de acordo com o estado da chave 1ª Versão Figura 1 Chave simples A linha de comando pinModeCH1 INPUT foi utilizada para definir o pino 4 do Arduino com uma entrada digital Com a função digitalRead podemos ler o es tado 0 ou 1 de um pino digital configurado como entrada enquanto que num teste condicional do tipo if as linhas de comando entre as chaves só são executadas Autor Édilus de Carvalho Castro Penido Pág 1 Arduíno Teoria Prática Área Computação Prof Édilus de Carvalho Castro Penido se a condição testada entre parênteses for verdadeira Se ela for falsa nada acontece e o programa continua a sua execução na próxima linha de comando depois do if Como o pino 4 de entrada digital do Arduino pode estar apenas em dois estados lógicos diferentes 0 ou 1 utilizamos dois testes condicionais if para testar cada uma dessas hipóteses e produzir o efeito necessário no caso apagar ou acender o LED O sketch com o Código 2 apresenta uma variante desse programa com o teste condicional ifelse Com esse teste se a condição entre parênteses for verdadeira o primeiro conjunto de linhas de comando entre chaves será executado se a condição for falsa o segundo conjunto de linhas de comando localizado após o else é que se rá executado Os testes que podem ser realizados com as estruturas if e ifelse envolvem normalmente comparações dos tipo igual diferente menor maior menor ou igual e maior ou igual entre dois valores define CH1 4 define LD1 26 void setup pinModeCH1 INPUT pinModeLD1 OUTPUT void loop if digitalReadCH1 1 digitalWriteLD1 1 else digitalWriteLD1 0 Código 2 Acender ou apagar um LED de acordo com o estado da chave 2ª Versão Em muitas situações de programação é necessário realizar o teste de duas ou mais condições simultaneamente em uma mesma estrutura if ou ifelse No Ar duino quando isso ocorre podemos usar os operadores e conforme mostrado no Código 3 Nesse exemplo o LED LD1 pino 26 só estará aceso se as chaves CH1 pino 4 e CH2 pino 5 estiverem em nível alto 1 simultaneamente enquanto o LED LD2 pino 27 estará aceso se pelo menos uma das chaves CH1 e CH2 estiver com nível alto Autor Édilus de Carvalho Castro Penido Pág 2 define CH1 4 define CH2 5 define LD1 26 define LD2 27 void setup pinModeCH1 INPUT pinModeCH2 INPUT pinModeLD1 OUTPUT pinModeLD2 OUTPUT void loop if digitalReadCH1 1 digitalReadCH2 1 digitalWriteLD1 1 else digitalWriteLD1 0 if digitalReadCH1 1 digitalReadCH2 1 digitalWriteLD2 1 else digitalWriteLD2 0 Código 3 Acender ou apagar um LED de acordo com o estado de duas chaves Quando usamos o operador e o resultado do teste do if ou ifelse só será considerado verdadeiro se todas as condições testadas forem verdadeiras Se pelo menos uma delas for falsa o teste condicional da estrutura também resultará em falso Já quando utilizamos o operador ou o resultado do teste do if ou ifelse será verdadeiro se pelo menos uma das condições testadas for verdadeira sendo que o teste condicional só resultará em falso se todas as condições testadas fo rem falsas As Tabelas 1 e 2 apresentam essas possiblidades para os operadores e respectivamente Tabela 1 Resultado final de um teste condicional com operador e 1ª Condição 2ª Condição Resultado final com o operador Falsa Falsa Falso Falsa Verdadeira Falso Verdadeira Falsa Falso Verdadeira Verdadeira Verdadeiro Autor Édilus de Carvalho Castro Penido Pág 3 Tabela 2 Resultado final de um teste condicional com operador ou 1ª Condição 2ª Condição Resultado final com o operador Falsa Falsa Falso Falsa Verdadeira Verdadeiro Verdadeira Falsa Verdadeiro Verdadeira Verdadeira Verdadeiro Ligações de Componentes no Simulador UnoArduSim a Chaves simples define CH1 4 1ª chave simples define CH2 5 2ª chave simples define CH3 6 3ª chave simples define CH4 7 4ª chave simples Quando uma chave Figura 2 é acionada ela troca de estado aberta ou fecha da depois desse acionamento Figura 2 Chaves simples b Botão simples define BT1 2 1º botão simples define BT2 3 2º botão simples define BT3 18 3º botão simples define BT4 19 4º botão simples Quando um botão Figura 3 é acionado ele só troca de estado aberto ou fecha do enquanto durar esse pressionamento voltando ao estado anterior quando ele ter mina Figura 3 Botões simples Autor Édilus de Carvalho Castro Penido Pág 4 O Código 4 por exemplo mostra uma forma de exibir os números 0 1 ou 2 no display de sete segmentos de acordo com último botão pressionado define BT1 2 1º botão simples define BT2 3 2º botão simples define BT3 18 3º botão simples define DP1 35 1º dígito do display define DP2 36 2º dígito do display define DP3 37 3º dígito do display define DP4 38 4º dígito do display define DPH 39 Habilitação do display void setup pinModeBT1 INPUT pinModeBT2 INPUT pinModeBT3 INPUT pinModeDP1 OUTPUT pinModeDP2 OUTPUT pinModeDP3 OUTPUT pinModeDP4 OUTPUT pinModeDPH OUTPUT digitalWriteDPH 0 Pino de habilitação CS em nível 0 void loop if digitalReadBT1 1 Número 0 digitalWriteDP1 0 digitalWriteDP2 0 digitalWriteDP3 0 digitalWriteDP4 0 if digitalReadBT2 1 Número 1 digitalWriteDP1 1 digitalWriteDP2 0 digitalWriteDP3 0 digitalWriteDP4 0 if digitalReadBT3 1 Número 2 digitalWriteDP1 0 digitalWriteDP2 1 digitalWriteDP3 0 digitalWriteDP4 0 Código 4 Mostrar os números 0 1 ou 2 de acordo com o último botão pressionado Autor Édilus de Carvalho Castro Penido Pág 5
5
Robótica
IFMG
52
Robótica
UMG
8
Robótica
UNISAL
15
Robótica
UMG
11
Robótica
UMG
2
Robótica
UNISAL
9
Robótica
UNINGA
6
Robótica
UMG
1
Robótica
IFSP
1
Robótica
IFSP
Texto de pré-visualização
Entradas Digitais O sketch mostrado no Código 1 possibilita que o estado aceso ou apagado do LED LD1 ligado ao pino 26 do Arduino MEGA seja definido pelo estado aberta ou fechada da chave CH1 Figura 1 ligada ao pino 4 define CH1 4 define LD1 26 void setup pinModeCH1 INPUT pinModeLD1 OUTPUT void loop if digitalReadCH1 1 digitalWriteLD1 1 if digitalReadCH1 0 digitalWriteLD1 0 Código 1 Acender ou apagar um LED de acordo com o estado da chave 1ª Versão Figura 1 Chave simples A linha de comando pinModeCH1 INPUT foi utilizada para definir o pino 4 do Arduino com uma entrada digital Com a função digitalRead podemos ler o es tado 0 ou 1 de um pino digital configurado como entrada enquanto que num teste condicional do tipo if as linhas de comando entre as chaves só são executadas Autor Édilus de Carvalho Castro Penido Pág 1 Arduíno Teoria Prática Área Computação Prof Édilus de Carvalho Castro Penido se a condição testada entre parênteses for verdadeira Se ela for falsa nada acontece e o programa continua a sua execução na próxima linha de comando depois do if Como o pino 4 de entrada digital do Arduino pode estar apenas em dois estados lógicos diferentes 0 ou 1 utilizamos dois testes condicionais if para testar cada uma dessas hipóteses e produzir o efeito necessário no caso apagar ou acender o LED O sketch com o Código 2 apresenta uma variante desse programa com o teste condicional ifelse Com esse teste se a condição entre parênteses for verdadeira o primeiro conjunto de linhas de comando entre chaves será executado se a condição for falsa o segundo conjunto de linhas de comando localizado após o else é que se rá executado Os testes que podem ser realizados com as estruturas if e ifelse envolvem normalmente comparações dos tipo igual diferente menor maior menor ou igual e maior ou igual entre dois valores define CH1 4 define LD1 26 void setup pinModeCH1 INPUT pinModeLD1 OUTPUT void loop if digitalReadCH1 1 digitalWriteLD1 1 else digitalWriteLD1 0 Código 2 Acender ou apagar um LED de acordo com o estado da chave 2ª Versão Em muitas situações de programação é necessário realizar o teste de duas ou mais condições simultaneamente em uma mesma estrutura if ou ifelse No Ar duino quando isso ocorre podemos usar os operadores e conforme mostrado no Código 3 Nesse exemplo o LED LD1 pino 26 só estará aceso se as chaves CH1 pino 4 e CH2 pino 5 estiverem em nível alto 1 simultaneamente enquanto o LED LD2 pino 27 estará aceso se pelo menos uma das chaves CH1 e CH2 estiver com nível alto Autor Édilus de Carvalho Castro Penido Pág 2 define CH1 4 define CH2 5 define LD1 26 define LD2 27 void setup pinModeCH1 INPUT pinModeCH2 INPUT pinModeLD1 OUTPUT pinModeLD2 OUTPUT void loop if digitalReadCH1 1 digitalReadCH2 1 digitalWriteLD1 1 else digitalWriteLD1 0 if digitalReadCH1 1 digitalReadCH2 1 digitalWriteLD2 1 else digitalWriteLD2 0 Código 3 Acender ou apagar um LED de acordo com o estado de duas chaves Quando usamos o operador e o resultado do teste do if ou ifelse só será considerado verdadeiro se todas as condições testadas forem verdadeiras Se pelo menos uma delas for falsa o teste condicional da estrutura também resultará em falso Já quando utilizamos o operador ou o resultado do teste do if ou ifelse será verdadeiro se pelo menos uma das condições testadas for verdadeira sendo que o teste condicional só resultará em falso se todas as condições testadas fo rem falsas As Tabelas 1 e 2 apresentam essas possiblidades para os operadores e respectivamente Tabela 1 Resultado final de um teste condicional com operador e 1ª Condição 2ª Condição Resultado final com o operador Falsa Falsa Falso Falsa Verdadeira Falso Verdadeira Falsa Falso Verdadeira Verdadeira Verdadeiro Autor Édilus de Carvalho Castro Penido Pág 3 Tabela 2 Resultado final de um teste condicional com operador ou 1ª Condição 2ª Condição Resultado final com o operador Falsa Falsa Falso Falsa Verdadeira Verdadeiro Verdadeira Falsa Verdadeiro Verdadeira Verdadeira Verdadeiro Ligações de Componentes no Simulador UnoArduSim a Chaves simples define CH1 4 1ª chave simples define CH2 5 2ª chave simples define CH3 6 3ª chave simples define CH4 7 4ª chave simples Quando uma chave Figura 2 é acionada ela troca de estado aberta ou fecha da depois desse acionamento Figura 2 Chaves simples b Botão simples define BT1 2 1º botão simples define BT2 3 2º botão simples define BT3 18 3º botão simples define BT4 19 4º botão simples Quando um botão Figura 3 é acionado ele só troca de estado aberto ou fecha do enquanto durar esse pressionamento voltando ao estado anterior quando ele ter mina Figura 3 Botões simples Autor Édilus de Carvalho Castro Penido Pág 4 O Código 4 por exemplo mostra uma forma de exibir os números 0 1 ou 2 no display de sete segmentos de acordo com último botão pressionado define BT1 2 1º botão simples define BT2 3 2º botão simples define BT3 18 3º botão simples define DP1 35 1º dígito do display define DP2 36 2º dígito do display define DP3 37 3º dígito do display define DP4 38 4º dígito do display define DPH 39 Habilitação do display void setup pinModeBT1 INPUT pinModeBT2 INPUT pinModeBT3 INPUT pinModeDP1 OUTPUT pinModeDP2 OUTPUT pinModeDP3 OUTPUT pinModeDP4 OUTPUT pinModeDPH OUTPUT digitalWriteDPH 0 Pino de habilitação CS em nível 0 void loop if digitalReadBT1 1 Número 0 digitalWriteDP1 0 digitalWriteDP2 0 digitalWriteDP3 0 digitalWriteDP4 0 if digitalReadBT2 1 Número 1 digitalWriteDP1 1 digitalWriteDP2 0 digitalWriteDP3 0 digitalWriteDP4 0 if digitalReadBT3 1 Número 2 digitalWriteDP1 0 digitalWriteDP2 1 digitalWriteDP3 0 digitalWriteDP4 0 Código 4 Mostrar os números 0 1 ou 2 de acordo com o último botão pressionado Autor Édilus de Carvalho Castro Penido Pág 5