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);
- }
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