Como vimos no artigo anterior, escrito pelo Augusto Mattos, a PQDB foi adaptada e a PQDB Mini foi criada. A campanha de arrecadação de fundos para sua fabricação foi um sucesso e agora, com ela em mãos, podemos então dar os primeiros passos para desenvolvermos algumas aplicações com ela.
Instalação das bibliotecas
O primeiro passo para você começar a utilizar a PQDB Mini é a instalação das bibliotecas e os exemplos. Os arquivos podem ser baixados neste link.
Depois de fazer o download dos arquivos, abra a IDE do Arduino, e vá em Sketch >> Incluir Biblioteca >> Adicionar Biblioteca .ZIP, como pode ser observado na Figura 1. Selecione a pasta como na Figura 2.
Para confirmar a instalação dos arquivos, em Arquivos >> Exemplos, procure a seção Exemplos de Bibliotecas Personalizadas.
Preparando a PQDB Mini
Depois de todos os arquivos instalados, vamos preparar a PQDB Mini para poder rodar alguns exemplos.
Encaixe a PQDB Mini no Arduino como na Figura 5. A pinagem pode ser vista no primeiro artigo desta série.
Depois, vamos conectar o display LCD 5110 na PQDB Mini, já que vamos utilizá-lo no próximo tópico. Por fim, conecte o cabo USB no Arduino.
Com o Hardware já preparado, vamos configurar a IDE. Selecione a placa, no caso estamos usando o Arduino Uno, Ferramentas >> Placa >> Arduino/Genuino Uno.
Depois, conecte o hardware em seu computador, e selecione a porta serial, em Ferramentas >> Porta, como na Figura 8.
Testando um exemplo na PQDB Mini
Com tudo pronto e configurado, podemos agora testar um dos exemplos. Para começar rodei o testaPQDB.ino, para testar e ver se as principais funcionalidades estavam OK. É realizado o teste do display 5110, o display de 7 segmentos, o teclado de 10 teclas, o LED RGB, o Buzzer e o LDR. O código e o resultado podem ser vistos abaixo.
#include "ad.h"
//#include "lcd.h"
#include "keypad.h"
#include "io.h"
#include "nokia5110.h"
#include "console.h"
#include "pwm.h"
#include "rgb.h"
#include "serial.h"
#include "so.h"
#include "ssd.h"
#include "timer.h"
#include "i2c.h"
#include "ds1307.h"
unsigned long tempoAntigo;
void setup() {
//RTC e LCD
Serial.begin(115200);
//LCD
//lcdInit();
initializeDisplay(0xC0,0x07,0x014);
//RTC
dsInit();
//74HC595
soInit();
//Teclado
kpInit();
//Timer
timerInit();
//Conversor AD
adInit();
//Display 7 Seg.
ssdInit();
//RGB
rgbInit();
//Buzzer
pwmInit();
turnOff(BLUE); // Desliga a cor Azul
turnOn(RED); // Liga a cor Vermelha
pwmBuzzer(1000);
timerDelay(500); // Delay
turnOff(RED); // Desliga a cor Azul
turnOn(GREEN); // Liga a cor Verde
pwmBuzzer(1200);
timerDelay(500); // Delay
turnOff(GREEN); // Desliga a cor Verde
turnOn(BLUE); // Liga a cor Azul
pwmBuzzer(1500);
timerDelay(500); // Delay
pwmBuzzer(0);
for(int i=0; i<504; i++) LcdWriteData(0x00); // clear LCD
dsStartClock();
dsWrite(0x57,SEC);
dsWrite(0x59,MIN);
dsWrite(0x23,HOUR);
dsWrite(5,WEEKDAY);
dsWrite(0x08,DAY);
dsWrite(7,MONTH);
dsWrite(0x94,YEAR);
tempoAntigo = millis();
}
void loop() {
int i = 0;
int k = 0;
int j = 0;
int l = 0;
//LM35
i = adRead(0);
i = i - 30;
LcdXY(0,0);
LcdWriteCharacter((i / 10) % 10 + 48);
LcdWriteCharacter((i / 1) % 10 + 48);
//RTC e LCD
while(millis() - tempoAntigo < 5000) {
i = getHours();
LcdXY(0,1);
LcdWriteCharacter((i / 10) % 10 + 48);
LcdWriteCharacter((i / 1) % 10 + 48);
LcdWriteCharacter(':');
i = getMinutes();
LcdWriteCharacter((i / 10) % 10 + 48);
LcdWriteCharacter((i / 1) % 10 + 48);
LcdWriteCharacter(':');
i = getSeconds();
LcdWriteCharacter((i / 10) % 10 + 48);
LcdWriteCharacter((i / 1) % 10 + 48);
LcdXY(0,2);
i = getDays();
LcdWriteCharacter((i / 10) % 10 + 48);
LcdWriteCharacter((i / 1) % 10 + 48);
LcdWriteCharacter('/');
i = getMonths();
LcdWriteCharacter((i / 10) % 10 + 48);
LcdWriteCharacter((i / 1) % 10 + 48);
LcdWriteCharacter('/');
i = getYears();
LcdWriteCharacter((i / 10) % 10 + 48);
LcdWriteCharacter((i / 1) % 10 + 48);
}
LcdXY(0,4);
kpDebounce(); //Realiza o Debounce do teclado
for (k = 0; k < 10; k++) { //Varredura
if (kpRead() & (1 << k)) { //Identifica qual tecla foi pressionada
LcdWriteCharacter(k + 48);
break;
}
}
j = adRead(2); // Leitura do POT
l = adRead(1); //Leitura LDR
ssdDigit(3, (j / 10) % 10); // Dezena POT
ssdDigit(2, (j / 100) % 10); // Unidade POT
ssdDigit(1, (l / 10) % 10); // Dezena LDR
ssdDigit(0, (l / 100) % 10); // Unidade LDR
for(j = 0; j < 8; j++){ // Delay
ssdUpdate();
timerDelay(5);
}
}
Conclusão
A PQDB Mini é uma placa com diversas possibilidades de aplicações e de fácil manuseio, já que usa um Arduino como base, o que a torna de fácil acesso, tanto para quem está começando a mexer com eletrônica agora, quanto para os que possuem mais experiência. E para auxiliar nos estudos vale a pena utilizar o livro Programação de Sistemas Embarcados, do Rodrigo Almeida, em conjunto com a placa.
Agora é a sua vez, conte nos comentários os seus projetos com a PQDB Mini!















Oi Renata, tudo bem?
Parabéns pelo Artigo!
Fui tentar instalar a biblioteca, dá erro tanto se eu coloco o arquivo .zip ou se eu copio a pasta pra \Arduino\libraries.
Tentei renomear também e dá erro. Fechei e abri novamente a IDE.
Estou com a versão 1.8.5.
Obrigada, att
Oi Gedeane, tudo bem sim e você? Obrigada! Eu usei a versão 1.6.12 , teve mais gente que também falou que não deu certo e usou umas das versões 1.8. Vou atualizar minha versão e tentar. Seu eu conseguir te aviso!
Tive or mesmo problema Renata 🙁