O Shield Arduino Multifunções Nível Intermediário é um shield que conecta diretamente com o Arduino Uno ou com o Arduino Mega e já possui diversas entradas e saídas possíveis. Utilizando as bibliotecas próprias para o shield, é possível utilizar essas entradas e saídas facilmente sem a necessidade de saber em qual pino está cada uma dessas entradas e saídas.
O shield conta com display 7 segmentos de 4 dígitos , potenciômetro, botões, buzzer, saídas para sensores de temperatura LM35 e DS18B20, conector para módulo APC220, wireless, bluetooth e outros. Para auxiliar a programação, existe uma biblioteca própria do shield Arduino multifunções nível intermediário, a <MultiFuncShield.h>. Nessa biblioteca contém diversas funções prontas que facilitam o uso das funcionalidades do shield. Junto com a biblioteca também vêm alguns exemplos de como utilizar as funções.
A montagem do shield é bastante simples, tanto no Arduino Uno quanto no Arduino Mega. O único cuidado que se deve tomar é com o conector USB da placa, ela pode entrar em contato com os pinos do shield causando alguns efeitos indesejados. Para evitar esse contato, basta colocar uma fita (de preferência isolante) em cima do conector USB.
Exemplos
A seguir, vamos apresentar alguns projetos que utilizam funções básicas da biblioteca própria do shield.
Beep
A função MFS.beep(); é uma forma de utilizar o buzzer que existe na biblioteca. A função recebe diversos parâmetros que definem a duração do som e o padrão feito. O exemplo a seguir foi retirado dos exemplos da própria biblioteca.
//Programa : Demonstracao do buzzer no Shield multifuncoes //Autor : MakerHero // Adaptado do exemplo da biblioteca <MultiFuncShield.h> #include <TimerOne.h> #include <Wire.h> #include <MultiFuncShield.h> void setup() { // Esse trecho de codigo so ira rodar uma vez Timer1.initialize(); MFS.initialize(&Timer1); // Inicializa a biblioteca do shield multifuncoes // A funcao "beep()" e feita em segundo plano e o arduino pode realizar outras tarefas enquanto roda // 4 bips curtos, repetindo 3 vezes MFS.beep(5, // O bip dura 50 milisegundos 5, // Fica em silencio por mais 50 milisegundos 4, // Repetir o padrao definido acima por 4 vezes 3, // Repetir 4 vezes (Loop) 50 // Delay de 500 milisegundos entre loops ); } void loop() { }
LEDs
Para utilizar os LEDs no Shield Arduino Multifunções Nível Intermediário a própria biblioteca fornece algumas funções como MFS.writeLeds, que acende e apaga os LEDs e MFS.blinkLeds, que faz os LEDs piscarem. O exemplo a seguir foi retirado dos exemplos da própria biblioteca.
//Programa : Demonstracao dos LEDs no Shield multifuncoes //Autor : MakerHero // Adaptado do exemplo da biblioteca <MultiFuncShield.h> #include <TimerOne.h> #include <Wire.h> #include <MultiFuncShield.h> void setup() { Timer1.initialize(); MFS.initialize(&Timer1); // Inicializa a biblioteca do shield multifuncoes MFS.writeLeds(LED_ALL, ON); // Acende todos os LEDs delay(2000); MFS.blinkLeds(LED_1 | LED_2, ON); // Pisca o LED1 e o LED2 delay(2000); MFS.blinkLeds(LED_1 | LED_2, OFF); // Para de piscar MFS.blinkLeds(LED_3 | LED_4, ON); // Pisca o LED1 e o LED2 delay(2000); MFS.blinkLeds(LED_3 | LED_4, OFF);// Para de piscar delay(2000); MFS.blinkLeds(LED_ALL, ON);// Pisca todos os LEDs delay(2000); MFS.blinkLeds(LED_ALL, OFF); // Para de piscar delay(2000); MFS.writeLeds(LED_ALL, OFF); // Desliga todos os LEDs } void loop() { }
Display de 7-segmentos
Para utilizar os LEDs no Shield Arduino Multifunções Nível Intermediário a própria biblioteca fornece algumas funções como MFS.write(), que permite apresentar números e até mesmo algumas letras nos 4 dígitos. Neste programa, retirado da biblioteca, alguns números são apresentados enquanto piscam os dígitos.
//Programa : Demonstracao do display de 7-segmentos no shield multifuncoes //Autor : MakerHero // Adaptado do exemplo da biblioteca <MultiFuncShield.h> #include <TimerOne.h> #include <Wire.h> #include <MultiFuncShield.h> void setup() { // put your setup code here, to run once: Timer1.initialize(); MFS.initialize(&Timer1); // initialize multi-function shield library MFS.write("ola"); // E possivel escrever algumas letras delay(2000); MFS.write(-123); // Pode-se escrever numeros de ate 4 digitos, ou 3 se tiver o sinal negativo delay(2000); MFS.blinkDisplay(DIGIT_1, ON); // Tambem e possivel piscar os digitos delay(500); MFS.blinkDisplay(DIGIT_2, ON); delay(500); MFS.blinkDisplay(DIGIT_1, OFF); delay(500); MFS.blinkDisplay(DIGIT_3, ON); delay(500); MFS.write(3.1415, 2); // E escrever numeros com virgula. O 2 define o numero de casas depois da virgula delay(200); MFS.blinkDisplay(DIGIT_2, OFF); delay(500); MFS.blinkDisplay(DIGIT_4, ON); delay(500); MFS.blinkDisplay(DIGIT_3, OFF); delay(500); MFS.blinkDisplay(DIGIT_ALL, ON); delay(3000); MFS.blinkDisplay(DIGIT_ALL, OFF); } int contador=0; // definimos contador boolean fim = false; // e um booleano para parar void loop() { if (contador < 9999) { MFS.write((int)contador); // Escreve variavel no display contador++; } else if (!fim) { fim = true; MFS.write("cabo"); // Acabou a contagem MFS.blinkDisplay(DIGIT_ALL, ON); } delay(5); }
Contador com botões
Para finalizar, este projeto utiliza o display de 7-segmentos e os botões para fazer um contador. O Botão 3 aumenta em 1 o valor do contador, o Botão 2, em 10 enquanto o Botão 1 diminui em 1 o valor do contador. O display de 7 segmentos apresenta o valor do contador a todo momento. Quando quiser zerar o contador, basta apertar o botão de Reset.
//Programa : Contador utilizando botoes no shieldmultifuncoes //Autor : MakerHero #include <TimerOne.h> #include <Wire.h> #include <MultiFuncShield.h> void setup() { Timer1.initialize(); MFS.initialize(&Timer1); // inicializa a biblioteca } int valor = 0; // Valor do contador void loop() { byte botao = MFS.getButton(); // Recebe o Byte da função MFS.getButton(); if(botao){ // Se for pressionado algum botao if(botao == BUTTON_1_PRESSED ){ // Se o botao pressionado for o 1, diminui em 1 o valor valor = valor -1; } else if(botao == BUTTON_2_PRESSED ){ // Se o botao pressionado for o 2, aumenta 10 no valor valor = valor + 10; } else if(botao == BUTTON_3_PRESSED ){ // Se o botao pressionado for o 3, aumenta em 1 o valor valor = valor + 1; } } MFS.write((int) valor); // Mostra os valores no display de 7 segmentos, independentemente do botao apertado }
Existem diversos exemplos com todo tipo de função na própria biblioteca, se tiver com dúvidas de como se usa alguma funcionalidade.
Gostou de ver projetos utilizando o Shield Arduino Multifunções Nível Intermediário? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.
Qual a placa arduíno recomendada para trabalhar com este shield?
Olá, tenho uma pequena duvida, eu montei um contador regressivo ou progressivo, com um SENSOR DE OBSTÁCULOS REFLEXIVO INFRAVERMELHO, a duvida é, como faço para travar a contagem em um determinado valor, como por exemplo, na contagem regressiva, o contador parar no 0 e na progressiva parar no 30?
André, legal! Parabéns e obrigado. Os Códigos para testes e exemplos funcionaram direitinho. Foi um grande adianto. Vlw!
Olá,
É muito bom saber que nosso trabalho pode te ajudar!
Abraço!
Rosana – Equipe MakerHero