Nesta primeira parte vamos ver os componentes mais simples.
LEDs
Qualquer projeto sobre microcontroladores deve começar piscando LEDs. É a lei. A multifuncion shield não nega fogo neste quesito, possuindo quatro LEDs ligados ao pinos digitais 10, 11, 12 e 13. Entretanto, ao contrário do costume, os LEDs são acesos quando o pino está em nível baixo. Abaixo uma brincadeira básica obrigatória:// Exemplo de uso da Multi Function Shield - LEDs // DQ, dez/2016 // http://dqsoft.blogspot.com const int pinLed1 = 10; const int pinLed2 = 11; const int pinLed3 = 12; const int pinLed4 = 13; const int leds[] = { pinLed1, pinLed2, pinLed3, pinLed4 }; #define NLEDS (sizeof(leds) / sizeof(leds[0])) void setup() { for (int i = 0; i < NLEDS; i++) { pinMode (leds[i], OUTPUT); digitalWrite (leds[i], HIGH); } } void loop() { for (int i = 0; i < NLEDS; i++) { digitalWrite (leds[i], LOW); delay (500); digitalWrite (leds[i], HIGH); } }
Botões
A placa possui três botões, ligados aos pinos A1, A2 e A3, com resistores de pullup (ou seja, a leitura é 0 com a chave apertada e 1 com a chave solta). Não custa lembrar que os pinos analógicos do Ardino podem também ser usados como digitais. Os resistores de pullup podem ser deligados abrindo o jumper J2 do shield. O exemplo abaixo usa os botões para controlar três dos LEDs.// Exemplo de uso da Multi Function Shield - Botoes // DQ, dez/2016 // http://dqsoft.blogspot.com const int pinLed1 = 10; const int pinLed2 = 11; const int pinLed3 = 12; const int pinLed4 = 13; const int pinBotao1 = A1; const int pinBotao2 = A2; const int pinBotao3 = A3; const int leds[] = { pinLed1, pinLed2, pinLed3, pinLed4 }; #define NLEDS (sizeof(leds) / sizeof(leds[0])) const int botoes[] = { pinBotao1, pinBotao2, pinBotao3 }; #define NBOTOES (sizeof(botoes) / sizeof(botoes[0])) const int nAcoes = min(NLEDS, NBOTOES); void setup() { for (int i = 0; i < NLEDS; i++) { pinMode (leds[i], OUTPUT); digitalWrite (leds[i], HIGH); } } void loop() { for (int i = 0; i < nAcoes; i++) { digitalWrite (leds[i], digitalRead(botoes[i])); } delay (50); }Existe ainda um quarto botão para Reset do Arduino.
Buzzer
Um buzzer piezoelétrico está ligado, através de um transistor, ao pino digital 3. Na placa que usei é um buzzer com oscilador interno (ou seja, você apenas o liga ou desliga conforme o nível for LOW ou HIGH), mas vi referência na internet a um modelo com um buzzer sem oscilador (você precisa gerar o som, por exemplo usando a função tone). Um exemplo que usa um botão para controlar o buzzer:// Exemplo de uso da Multi Function Shield - Buzzer // DQ, dez/2016 // http://dqsoft.blogspot.com const int pinBotao1 = A1; const int pinBuzzer = 3; void setup() { pinMode (pinBuzzer, OUTPUT); digitalWrite (pinBuzzer, HIGH); } void loop() { digitalWrite (pinBuzzer, digitalRead(pinBotao1)); }
Potenciômetro
Fechando a parte básica, temos um potenciômetro com extremidades ligadas a +5 e GND e a parte central ligada ao pino A0. No caso da minha placa é um potenciômetro multi-volta, o que dá uma boa precisão mas não é muito didático.O exemplo padrão AnalogReadSerial pode ser usado para testar o potenciômetro.
Referências
Os meus programas estão no meu github.Existe uma quantidade razoável de informações sobre este shield na internet. Abaixo as que eu usei:
http://makbit.com/web/firmware/multi-function-shield-for-arduino/
Lista as conexões, descreve LEDs e buzzer, link para documentação em chinês.
http://www.cohesivecomputing.co.uk/hackatronics/arduino-multi-function-shield/
Link para uma biblioteca específica para o shielde para um mini eBook com informações.
http://arduinolearning.com/code/multi-function-shield-examples.php
Alguns exemplos interessantes.
Atualizado para mencionar o jumper J2 que controla os pullups dos botões.
Nenhum comentário:
Postar um comentário