Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Franzininho 
 
Monte e Programe 
seu Próprio Arduino 
 
 
 
Diana Santos e Fábio Souza 
 
 
 
 
 
 
 
 
2 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
São Paulo - 2018 
 
 
 
Editora: 
 
Instituto NCB 
www.newtoncbraga.com.br 
 
 
 
 
Diretor responsável: Newton C. Braga 
Coordenação: Renato Paiotti 
Impressão: AgBook – Clube de Autores 
 
http://www.newtoncbraga.com.br/
 
FÁBIO SOUZA e DIANA SANTOS 3 
 
 
FRANZININHO – MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
Autor: Fábio Souza 
São Paulo - Brasil - 2018 
 
Palavras-chave: Eletrônica - Engenharia Eletrônica - 
Componentes – Circuitos práticos – Franzininho – Arduino – Faça 
Você Mesmo – DIY 
 
 
 
 
 
 
 
 
 
Copyright by 
INTITUTO NEWTON C BRAGA. 
1ª edição 
 
 
 
 
 
 
 
 
 
 
 
 
Este obra está licenciado com uma Licença Creative Commons 
Atribuição-CompartilhaIgual 4.0 Internacional. 
 
 
 
 
4 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Índice 
 
Apresentação 6 
Sobre o Projeto Franzininho 7 
Concepção e desenvolvimento 7 
Continuação pós Arduino Day 8 
Franzininho V2 10 
Comunidade 10 
Licença de Hardware da Franzininho 11 
Aviso Legal 11 
A estrutura da Franzininho DIY 12 
Versão da placa Franzininho V2RV0 13 
Identificando os Componentes 13 
Placa de Circuito impresso 13 
Capacitores 14 
Chave táctil 14 
Resistores 15 
LEDS 16 
Soquete 16 
Barra de pinos 17 
Regulador de Tensão 17 
Conector USB 17 
Attiny85-20P 18 
Pinagem das placas Franzininho 18 
Montando a Franzininho 19 
Montando a Versão V2RV0 19 
Programando o Franzininho 24 
Preparando o Gravador 24 
Gravação do bootloader Gemma 25 
Gravação do bootloader Micronucleus 27 
Gravando o Bootloader no Windows 29 
Gravando no Linux 31 
Instalando os Drivers no Computador 33 
 
 
FÁBIO SOUZA e DIANA SANTOS 5 
 
Configurando os Drivers para o Gemma 33 
Windows 33 
Linux 35 
MAC OSX 36 
Configuração dos drivers para Micronucleus 37 
Configuração dos drivers para Micronucleus 37 
Windows 37 
Linux 38 
Configuração Arduino IDE 39 
Digispark 40 
Upload do Sketch 42 
Programando a Franzininho 46 
Entradas e Saídas Digitais 46 
Configuração do modo de funcionamento do pino 46 
Exemplo 47 
Escrita em um pino digital 48 
Leitura de um pino digital 49 
Entradas Analógicas 50 
Função 51 
PWM 53 
O que é PWM? 53 
Usando as saídas PWM do Arduino 55 
Função 55 
I2C 56 
Exemplo: Leitura do sensor de temperatura DS1620 57 
Exemplos com a Franzininho 61 
Pisca LED 61 
Circuito 61 
Tecla Liga/Desliga 62 
Circuito 63 
Comunidade Franzininho 65 
Anexo A - Esquemático 66 
 
 
 
 
6 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
Apresentação 
 
Olá, o projeto Franzininho foi resultado da ligação de 
pontos na minha jornada. Sempre tive um pé na engenharia e 
outro na educação. Através de iniciativas open source e open 
hardware deixamos nossa contribuição para a comunidade. 
Espero que você possa inspirar a colocar a suas ideias em prática 
e nunca deixe de aprender. Lembre-se que compartilhar(ensinar) 
também é uma forma de aprendizado. 
 
Nesse livro, que escrevi com ajuda da minha parceira de 
vida, Diana Santos, tentamos deixar as informações para 
montagem e uso da Franzininho de uma forma mais clara. 
Como é nosso primeiro livro, ainda estamos aprendendo como 
organizar as informações. Caso encontre algum erro, sugestão de 
melhoria, ou crítica, por favor nos envie um e-mail para: 
contato@franzininho.com.br . 
 
Aproveito para deixar o convite para participar da 
comunidade Franzininho e acompanhar as nossas redes sociais 
e materiais on-line: 
 
www.franzininho.com.br 
 
 
Fábio Souza 
 
mailto:contato@franzininho.com.br
 
FÁBIO SOUZA e DIANA SANTOS 7 
 
Sobre o Projeto Franzininho 
 
Concepção e desenvolvimento 
 
A Franzininho foi desenvolvida para as atividades 
dentro do FAB LAB Livre SP durante o Arduino Day São Paulo 
2017. Thalis Antunes e Fábio Souza conceberam o projeto a partir 
do desafio de realizar atividades simultâneas nos 12 FABLABs 
livres em SP, em um Arduino Day realizado pela Prefeitura de São 
Paulo e com apoio de Embarcados, Fazedores e MinasUP. Como as 
atividades teriam apoio do ITS com os materiais, chegou-se a 
conclusão que seria melhor fazer placas compatíveis com Arduino 
para as pessoas montarem e terem experiência com solda. A 
condição era que o projeto fosse open hardware. A partir dos 
projetos de hardwares das placas Arduino Gemma e Digispark 
(placas open hardware) desenvolveu-se uma placa com 
componentes discretos e em face simples. 
 
 
Franzininho V0 
 
O circuito foi projetado pensando na fabricação usando 
máquinas CNCs ou através de processo de corrosão de PCI. Os 30 
técnicos se empenharam adaptaram o layout da Franzininho para 
o método de fabricação que tinham mais facilidade, foram feitas 
placas de diversas formas. 
 
 
8 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
Teste e validação do projeto dias antes do Arduino Day 2017 
 
No dia 01/04/17 (Dia do Arduino 2017) foram produzidas 
300 placas dentro dos 12 FAB LABs Livres SP. Foi incrível! 
 
 
Oficinas realizadas simultaneamente nos FabLabs durante o Arduino Day 
2017 em São Paulo 
 
 
Continuação pós Arduino Day 
 
Após o Arduino Day , o layout da PCB foi melhorado onde 
foram incluídos mais 2 furos e ajustado o tamanho da placa. 
Também foi melhorado o silk e incluída a bandeira do Brasil. 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 9 
 
 
Franzininho V0RV1 feita após o Arduino Day 
 
Para continuar, tínhamos o desafio de conseguir placas 
para novas oficinas, já que não é todo mundo que tem acesso as 
ferramentas de fabricação digital ou métodos caseiros. Para 
viabilizar a fabricação de placas Franzininho em uma empresa 
especializada, foi lançada uma espécie de compra coletiva pela 
comunidade, liderada por Fábio Souza. Nesta iniciativa foram 
feitas 600 placas, onde as pessoas tiveram acesso as placas com 
acabamento industrial. 
 
 
Primeiro lote de placas com acabamento industrial 
 
Dessas 600 placas diversas foram usadas para oficinas 
em hackerspaces , oficinas de solda, eventos. Com isso a 
comunidade só ganhou força. Com isso surgiram diversas 
contribuições da comunidade para o projetos, como: materiais 
 
 
10 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
para oficinas, layout, projetos e principalmente na documentação. 
A comunidade está crescendo cada vez mais e com diversas 
iniciativas. 
 
 
Franzininho V2 
 
Após um período trabalhando com a Franzininho V0RV1, 
foi desenvolvida uma nova versão com conector USB. Essa nova 
versão eliminou 2 problemas: facilitou a fabricação e orientação 
da placa ao conectá-la no computador. 
 
 
Franzininho V2 
 
A pinagem e funcionamento das duas versões são as 
mesmas. 
 
Comunidade 
 
Atualmente o projeto é liderado por Fábio Souza e Diana 
Santos, com apoio da comunidade. Todos os materiais 
desenvolvidos são publicados com licenças open source e 
publicamente, o que permitem que todos tenham acesso e 
possam usar como quiserem. 
 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 11 
 
Licença de Hardware da Franzininho 
O Hardware Franzininho foi publicada com a licença 
CC-SA-4.0, sendo um projeto open hardware que permite que 
qualquer pessoa possa: 
Estudar - Modificar - Construir - Distribuir - Vender. 
A proposta é que todos os interessados possam montar o 
seu Arduino compatível, entender como funciona, fazer projetos e 
contribuir para o desenvolvimentode um projeto open source. 
 
O nome Franzininho foi dado em continuação a 
placa open hardware que o Autor fez para sua 
palestra no Arduino Day de 2016, a Franzino. 
 
Aviso Legal 
O projeto é open hardware e publicado com uma licença 
que permite a venda por empresas sem a necessidade de pagar 
royalties ou obrigação de contribuir para a comunidade. 
As placas e kits oferecidos no comércio, são de 
responsabilidade das empresas que estão comercializado. Assim 
como o valor e negociação deve ser feito com eles. 
Qualquer material comercializado, oficinas, e projetos 
feitos com a Franzininho são de responsabilidade das pessoas e 
empresas que estão a frente da negociação. 
Nós tentaremos ficar em cima para manter a 
qualidade e metodologia de aplicação do projeto, porém 
não podemos garantir que as mesmas sejam garantidas. 
Sendo assim, caso tenha algum problema, antes de atacar 
o projeto Franzininho ou os seus idealizadores, verifique 
se não foi um problema da empresa ou responsável a 
frente da atividade. 
O projeto está em constante atualização, e está só no 
começo. Fica o convite para qualquer pessoa que queira 
colaborar, aprender, criar novas placas, para interagir na 
comunidade. Apesar de ser um projeto de hardware, diversas 
áreas podem somar para o projeto. 
 
 
12 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
A estrutura da Franzininho DIY 
 
A Franzininho DIY foi desenvolvida com a proposta de 
"Faça você mesmo" e com base na plataforma Arduino. Você 
trilhará a jornada do Maker de eletrônica, montando e 
programando a sua própria placa Arduino. 
Neste capítulo você encontra todas as informações para 
montagem e uso da sua placa Franzininho. Você conhecerá os 
componentes, o passo a passo da montagem e como configurar a 
IDE Arduino para programação. 
 
Hardware : Todo o projeto de 
hardware está disponível no Github: 
franzininho-diy-board. 
 
Referência Descrição 
C1 Capacitor Cerâmico 100 nF x 50 V 
C2 Capacitor eletrolítico 10 uF x 35 V 
D1 Diodo Zener 3,6 V 0,5W 
D2 Diodo Zener 3,6 V 0,5W 
D3 Diodo 1N4148 
IC1 Microcontrolador ATTINY85 - 20PU 
IC2 78L05 - Regulador de tensão 
SQ1 Soquete Para CI - 8 pinos 
JP3 Barra de pinos estampada 15 mm 180° - 8 vias 
J1 Barra de pinos estampada 15 mm 180° - 3 vias 
LED Led 3mm Amarelo Difuso 
ON Led 3mm Verde Difuso 
R1 Resistor 68 R - 5% 1/4 W 
R2 Resistor 68 R - 5% 1/4 W 
R3 Resistor 1K5 - 5% 1/4 W 
R4 Resistor 1K - 5% 1/4 W 
R5 Resistor 1K - 5% 1/4 W 
RESET Chave Táctil 6x6x5 mm 
USB Conector USB Macho 90º com trava 
PCB Placa de circuito impresso Franzininho V2 
 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 13 
 
Versão da placa Franzininho V2RV0 
 
Placa Franzininho DIY V2 
 
 
 
 
Identificando os Componentes 
 
Para deixar claro todo o funcionamento da Franzininho, 
precisamos conhecer um pouco dos componentes que compõem o 
projeto, assim poderemos fazer mudanças e aprimorar ainda 
mais este projeto. 
 
 
Placa de Circuito impresso 
A placa de circuito impresso é responsável por receber 
todos os componentes. Ela pode ser feita de fibra de vidro ou 
fenolite. Para a Franzininho DIY foi desenvolvida um projeto em 
face simples, o que permite a fabricação caseira. 
Na parte superior da placa (TOP) há os desenhos dos 
componentes, indicando a posição de cada um. O componentes 
são encaixados em seus respectivos locais e depois são soldados 
através da parte inferior (Bottom). 
 
 
14 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
TOP e Bottom da placa Franzininho DIY V2 
 
Capacitores 
Capacitores são dispositivos elétricos capazes de 
armazenar carga elétrica em um campo elétrico. Na Franzininho 
temos 2 tipos de capacitores. 
 
 
C1 - Capacitor Cerâmico 100 
nF x 50 V 
 
C2 - Capacitor eletrolítico 10uF 
x 35V 
 
 
 
Chave táctil 
É um botão de 
contato momentâneo. Na 
Franzininho usamos uma 
chave táctil NA (normalmente 
aberta) de 4,3 x 6 x 6 mm que 
tem a função de botão de 
Reset. 
 
Chave – RESET 
 
 
FÁBIO SOUZA e DIANA SANTOS 15 
 
Resistores 
Os resistores são componentes passivos que se opõem a 
passagem de corrente elétrica no circuito. Existem diversos tipos 
de resistores disponíveis. Na Franzininho DIY usamos resistores 
de carbono de 1/4 W. Os anéis coloridos indicam o valor e 
tolerância do resistor. 
 
Tabela Código de cores para resistores de 4 faixas 
Fonte: 
http://blog.render.com.br/eletronica/como-calcular-o-valor-de-um-resistor/ 
 
Na Franzininho usamos 5 resistores, com as seguintes 
referências e valores: 
 
http://blog.render.com.br/eletronica/como-calcular-o-valor-de-um-resistor/
 
16 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
R1 e R2 - 68 R (Azul, Cinza, Preto, 
Dourado) 
 
R3 - 1K5 (Marrom, Verde, 
Vermelho, Dourado) 
 
 
R4 e R5 - 1K (Marrom, Preto, 
Vermelho, Dourado) 
 
 
LEDS 
LED (Light Emitting Diode), é 
usado para a emissão de luz em locais e 
instrumentos onde se torna mais 
conveniente a sua utilização no lugar de 
uma lâmpada. 
Na Franzininho são usados dois 
leds difusos de 3 mm 
ON - LED Verde, 
LED - LED Amarelo 
 
 
 
Soquete 
Soquete é usado para o encaixe 
de circuitos integrados, facilitando a sua 
troca na placa. Na Franzininho usamos 
um soquete de 8 pinos para acomodar o 
Microcontrolador attiny85 IC1 – Soquete 
 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 17 
 
Barra de pinos 
São usadas para 
expansão de pinos e 
entrada de alimentação 
na placa. Na Franzininho 
usamos 3 vias para o 
conector de alimentação e 
8 vias para o conector de 
expansão da placa 
J1 - Barra de 3 pinos 
P0, P1...GND - Barra de 8 pinos 
 
Regulador de Tensão 
Usado para baixar a tensão 
de entrada para um nível que o 
circuito possa trabalhar. Na 
Franzininho usamos um regulador 
de tensão de 5V, o 78L05. 
 
 IC2 - 78L05 - Regulador de 
tensão 5V 
 
 
Conector USB 
Usado para conectar a placa 
ao computador ou a um circuito de 
alimentação com conector USB. Na 
Franzininho usamos um Conector 
USB Macho 90º com trava. 
 
Conector USB Macho 90º 
com trava 
 
 
 
 
 
18 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Attiny85-20P 
 
Este é a parte central da 
placa , o microcontrolador Attiny85, 
onde o programa que criarmos será 
armazenado e executado. 
Attiny85-20PU 
Pinagem das placas Franzininho 
 
Pinagem da placa Franzininho versão V2RV0* 
 
*A pinagem de saída das versões anteriores são 
iguais a esta última versão, porém na versão V2RV0 
foi incluído conector de alimentação externa. 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 19 
 
Montando a Franzininho 
 
Antes de tudo você deve preparar o ambiente, separando 
as ferramentas necessárias para a soldagem, vamos precisar de: 
● Ferro de solda 
● Rolo de estanho 
● Alicate de corte etc. 
● Óculos de proteção 
 
Você também deve separar os componentes para deixar 
organizado, para que facilite na hora de soldar. Você encontra os 
componentes na lista de materiais. Tudo organizados, então 
vamos lá?! 
 
 
Montando a Versão V2RV0 
De início você terá uma placa sem componentes, 
conforme a imagem abaixo. 
 
 
 
Para deixarmos a montagem simples e limpa, 
aconselhamos primeiramente soldarmos dos diodos como na 
imagem abaixo. Procure na placa o local onde devemos encontrar 
a referênica D3, onde colocaremos o Diodo 1N4148. Feito isso , 
devemos soldar os dois Diodos Zeners nas referências D1 e D2. 
 
 
 
20 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
Agora iremos soldar os nossos resistores, o primeiro é o 
resistor de 60 ohms (as cores de marcação sãoazul, cinza, preto 
e dourado), este deve ser soldado na referência R1. O segundo 
resistor tem a mesma resistência (68 ohms) e deverá ser soldado 
em paralelo ao primeiro onde encontramos a referência R2. 
O terceiro resistor é de 1,5 KW (as cores de marcação 
são marrom, verde, vermelho e dourado), e deverá ser soldado 
na referência R3. 
Por último devemos soldar os resistores de 1 kW 
(marcação nas cores marrom, preto, vermelho e dourado), que 
estão em paralelo com as referências R4 e R5. 
 
 
 
O nosso próximo passo é soldarmos a chave de RESET e 
depois o soquete de 8 pinos onde iremos encaixar o nosso CI 
(IC1). 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 21 
 
 
 
Agora nós iremos soldar os LEDs e capacitor C1. Para 
isso localize na placa a referência ON e LED. Na referência ON 
soldamos o LED verde e na referência LED soldamos o LED 
amarelo. Vale salientar que os LED tem uma posição correta e a 
inserção errada destes inibe o funcionamento da placa. 
Agora precisamos soldar o nosso capacitor cerâmico na 
referência C1 , este se encontra perto dos diodos D1 e D3. 
 
 
Esta versão do Franzininho possui um regulador de 
tensão de 5 V, o usado é o CI 78L05 que deverá ser soldado na 
referência IC2. 
 
 
 
22 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
 
Nosso próximo passo é soldarmos os conectores de 3 e 8 
pinos. Localize na placa as referências J1 e a sequencia GND, VCC 
e P5 a P0. Na referência J1 soldamos a barra de 3 pinos e na 
outra a barra de 8 pinos conforme podemos ver na figura abaixo. 
 
 
Agora para finalizar vamos soldar o capacitor eletrolítico 
C2, lembrando que o positivo deve ser soldado na posição 
correta, o positivo fica o mais próximo da palavra Franzininho. 
Soldamos também o conector USB por onde faremos a 
comunicação entre o computador e a placa. 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 23 
 
 
 
Por último colocamos no soquete de 8 pinos o 
microcontrolador Attiny85. 
Agora é só plugar no computador e começarmos o nosso 
primeiro programa. 
 
 
 
 
 
24 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Programando o Franzininho 
 
O microcontrolador usado no Franzininho, é o Attiny85, 
porém ele vem de fábrica totalmente limpo, sem nenhuma 
programação. Para que ele possa receber todas as programações 
que iremos criar é necessário prepará-lo , ou seja, gravar o 
bootloader. 
Precisaremos então de um computador, um Arduino que 
servirá de gravador, alguns fios que iremos conectar o arduino 
com uma placa de matriz de contato onde colocaremos o Attiny85 
e um capacitor eletrolítico para desacoplamento. 
Atualmente temos dois bootloaders possíveis para o uso 
da Franzininho. O primeiro é o usado no Arduino Gemma, que é 
mais simples de usar pois a IDE já vem preparada para a placa, 
onde não precisamos instalar pacotes adicionais. 
O segundo é o Micronucleus o qual pretendemos deixar 
como padrão no futuro, esse bootloader além de pequeno e bem 
flexível. É o mesmo usado na digispark e diversas outras placas 
que usam microcontroladores da família attiny. 
A seguir explicamos como instalar cada um deles, 
conforme a sua escolha. 
 
 
Preparando o Gravador 
 
Para gravarmos o bootloader precisamos montar o nosso 
gravador. Em nosso exemplo usaremos o Arduino Uno , mas é 
possível usar outros tipos de Arduino com AVR. 
Iremos conectar o computador ao Arduino Uno e com os 
fios tiremos conectar algumas portas do Arduino Uno à nossa 
matriz de contatos onde colocamos o microcontrolador Attiny, 
conforme o esquema da figura abaixo. 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 25 
 
 
Feitas as conexões, precisaremos configurar o Arduino 
Uno como um programador ISP. 
 
Caso não tenha IDE do Arduino 
(ambiente de programação) , acesse 
www.arduino.cc 
 
 
Gravação do bootloader Gemma 
 
O Arduino Gemma é uma criação da fabricante de placas, 
a Adafruit, e ela criou um bootloader próprio para o Attiny85. 
Você pode usar a Franzininho como se fosse um Arduino Gemma, 
 
 
26 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
para isso é só gravar esse bootloader no microcontrolador 
Attiny85. A Adafruit disponibiliza um sketch para a gravação do 
bootloader da Arduino Gemma e Trinket. 
 
Sketch – No mundo dos 
microcontroladores, “sketch” são 
programas ou parte de programas 
prontos que servem de “modelo” ou 
podem ser aplicados na íntegra nos 
microcontroladores, no bom estilo 
Copia e Colar. 
Bootloader da Adafruit: 
https://learn.adafruit.com/introducin
g-trinket/repairing-bootloader 
 
Neste exemplo utilizamos uma versão traduzida pelo 
“Mau Maker”. Você pode acessar o projeto disponibilizado na 
plataforma Arduino Create 
( https://create.arduino.cc/editor/maujabur/397f14ad-1fc1-49a5-
b9a8-2143fda15b35/preview ) . 
Você também pode baixar os arquivos que estão nesse 
repositório e gravar usando a IDE Arduino offline. 
O primeiro passo é fazer o upload do código para a 
Arduino UNO. 
Com as ligações feitas corretamente para a gravação do 
bootloader, abra o terminal serial, configure o baudrate para 
9600 bps, e envie a letra G para iniciar a gravação. Será exibida a 
seguinte mensagem: 
 
 
https://create.arduino.cc/editor/maujabur/397f14ad-1fc1-49a5-b9a8-2143fda15b35/preview
https://create.arduino.cc/editor/maujabur/397f14ad-1fc1-49a5-b9a8-2143fda15b35/preview
 
FÁBIO SOUZA e DIANA SANTOS 27 
 
 
Após a gravação do microcontrolador, você poderá 
retirá-lo da matriz de contatos e colocá-lo na Franzininho, mas 
lembre-se de colocar na posição correta. 
 
 
Gravação do bootloader Micronucleus 
Micronucleus é um bootloader desenvolvido para os 
microcontroladores AVR ATtiny que possuem restrição de 
interface USB, e baseado na ferramenta de programação 
multiplataforma o libusb, onde tem uma grande ênfase na 
compactação do bootloader, sendo o menor bootloader para 
microcontroladores AVR ATtiny. 
O Micronucleus é amplamente usado e instalado em 
milhares de dispositivos de hardware de código aberto: 
https://github.com/micronucleus/micronucleus/blob/mas
ter/Devices_with_Micronucleus.md 
Ele é opção ideal para a Franzininho e estamos 
trabalhando para padronizar esse bootloader para o nosso projeto 
(em andamento). 
A seguir vamos exibir como você pode gravar o ATtiny85 
 
https://github.com/micronucleus/micronucleus/blob/master/Devices_with_Micronucleus.md
https://github.com/micronucleus/micronucleus/blob/master/Devices_with_Micronucleus.md
 
28 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
para usar o Micronucleus. 
O primeiro passo é configurar a placa Arduino UNO como 
programador ISP. Para isso, na IDE do Arduino acesse Arquivo-> 
Exemplos->ArduinoISP->ArduinoISP 
 
 
 
Feito isso é só enviar o código para o Arduino Uno e ele 
estará configurado para ser um gravador AVR. 
O próximo passo é carregar o bootloader que iremos usar 
e enviar para o Attiny85, e para isso usaremos o firmware do 
Micronucleous , onde podemos encontrar no endereço 
https://github.com/micronucleus/micronucleus ou 
https://github.com/micronucleus/micronucleus/archive/master.zip 
Salve o arquivo no seu computador, descompacte e 
procure pela pasta: micronucleus\firmware\releases . 
Utilizaremos o arquivo: t85_default.hex 
 
 
 
 
https://github.com/micronucleus/micronucleus
https://github.com/micronucleus/micronucleus/archive/master.zip
 
FÁBIO SOUZA e DIANA SANTOS 29 
 
Gravandoo Bootloader no Windows 
Abra o prompt de comando e vá até o diretório onde está 
o Arduino. 
 
 
Agora vamos preparar o comando para gravar usando o 
avrdude: 
 
C:\arduino-1.8.2\hardware\tools\avr/bin/avrdud
e -C 
C:\arduino-1.8.2\hardware\tools\avr/etc/avrdude.conf -v 
-pattiny85 -cstk500v1 -PCOM3 -b19200 
-Uflash:w: C:\Users\fabio\Downloads\Arduino\micronucleu
s\firmware\releases/t85_default.hex:i 
 
Você precisa substituir as partes em negrito no comando 
acima, conforme os caminhos para os arquivos em seu 
computador. 
Verifique em qual porta a placa está conectada e 
substitua no comando PCOM3 . 
Certifique-se que a placa está conectada corretamente ao 
PC, assim como a ATtiny85 no Arduino Uno. 
Copie o código e cole no prompt e pressione enter. Será 
iniciada a gravação: 
 
 
30 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 31 
 
 
 
Após a gravação do microcontrolador, você poderá 
retirá-lo da matriz de contatos e colocá-lo na Franzininho, mas 
lembre-se de colocar na posição correta. 
 
 
 
Gravando no Linux 
Abra o terminal: 
Agora vamos preparar o comando para gravar usando o 
avrdude: 
 
/home/fabio/Downloads/arduino-1.8.5/hardware
/tools/avr/bin/avrdude -C 
/home/fabio/Downloads/arduino-1.8.5/hardware/tools/a
vr/etc/avrdude.conf -v -pattiny85 -cstk500v1 -P/dev/ttyACM0 
-b19200 
-Uflash:w: /home/fabio/Downloads/micronucleus-master/f
irmware/releases/t85_default.hex:i 
 
Você precisa substituir as partes em negrito no comando 
acima, conforme os caminhos para os arquivos em seu 
computador. 
Verifique em qual porta a placa está conectada e 
substitua no comando ttyACM0 . No meu caso está na ttyACM0 e 
no seu computador pode ser diferente. 
Certifique-se que a placa está conectada corretamente ao 
PC, assim como a ATtiny85 no Arduino Uno. 
Copie o código e cole no terminal e pressione enter: 
 
 
 
32 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
 
Será iniciada a gravação: 
 
 
 
Após a gravação do microcontrolador, você poderá 
retirá-lo da matriz de contatos e colocá-lo na Franzininho, mas 
lembre-se de colocar na posição correta. 
 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 33 
 
Instalando os Drivers no 
Computador 
 
Até aqui você possui a placa pronta, gravou o bootloader 
no microcontrolador através do seu Arduino e colocou o 
microcontrolador na placa. 
Agora precisamos instalar os drivers necessários para 
que você possa utilizar os seus códigos na Franzininho. Os drivers 
são códigos que servem para capturar o seu código, 
transformá-lo numa sequência binária, com as devidas posições 
de memória e portas para aquele determinado microcontrolador, 
em nosso caso o Attiny85. Mas como vimos no capítulo anterior , 
nós usamos dois tipos de bootloader, o Gemma e o Micronucleus, 
dependendo do qual você escolheu , um tipo de driver deverá ser 
instalado. Outro ponto que devemos ver é o tipo de sistema 
operacional que o seu computador possui. 
A seguir iremos detalhar cada um deles. 
 
 
Configurando os Drivers para o Gemma 
 
Windows 
Antes de usar a placa você precisa instalar o driver para 
o Windows. 
Baixe o driver: 
https://github.com/adafruit/Adafruit_Windows_Drivers/r
eleases/download/2.2.0/adafruit_drivers_2.2.0.0.exe 
E depois instale: 
 
 
34 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
 
Na próxima tela escolha a opção: Trinket / Pro Trinket 
/ Gemma (USBtinyISP): 
 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 35 
 
Depois da instalação terminar, precisamos saber se o 
computador irá reconhecer a placa Franzininho, para isso insira a 
placa no computador e veja se a mesma é reconhecida no 
gerenciador de dispositivos : 
 
 
 
Caso por algum motivo não dê certo a instalação, faça o 
download dos arquivos e mande instalar buscando os arquivos na 
pasta. Faça o download aqui : 
https://github.com/adafruit/Adafruit_Windows_D
rivers/archive/2.0.0.0.zip 
 
 
 
Linux 
Para usar com a maioria das distribuições Linux é 
necessário configurar algumas regras udev. Essa configura a USB 
para que seja programada pela Arduino IDE. 
Para instalar as regras, você precisará baixá-las e 
copiá-las para o local das regras do udev em seu sistema. Para a 
maioria dos sistemas Linux, como o Ubuntu, etc., as regras do 
udev são armazenadas em /etc/udev/rules.d/ (verifique a 
documentação da distribuição / fóruns de ajuda se você não 
encontrar essa pasta). Execute os seguintes comandos: 
 
 
 
36 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
wget 
https://raw.githubusercontent.com/Franzininho/Franzinin
ho-Linux/master/franzininho-gemma.rules 
sudo cp franzininho-gemma.rules /etc/udev/rules.d/ 
 
Em seguida, você precisará recarregar as regras do udev 
para que elas sejam aplicadas corretamente. Você pode reiniciar 
sua máquina ou executar um comando como o seguinte: 
 
sudo reload udev 
 
Se o comando acima falhar, tente executar: 
 
sudo udevadm control --reload-rules 
sudo udevadm trigger 
 
E se isso ainda falhar, reinicialize seu sistema, pois ele 
garantirá que o udev ative a nova configuração. 
Você também pode adicionar-se ao grupo de dialout com 
sudo usermod -a -G dialout $USER 
ou 
sudo usermod -a -G plugdev $USER 
 
Fonte: 
https://learn.adafruit.com/adafruit-arduino-ide-setup/linux-setup 
 
 
MAC OSX 
 
Se você estiver usando o Mac OS Mavericks, Yosemite ou 
mais atual, talvez seja necessário atualizar a configuração para 
permitir a execução do Arduino IDE. 
● Abra as Preferências do Sistema no Menu Apple. 
● Abra o painel de controle Segurança e Privacidade. 
● Clique na guia Geral. 
● Clique no ícone de bloqueio e faça o login 
 
 
FÁBIO SOUZA e DIANA SANTOS 37 
 
● Alterar Permitir Aplicativos Transferidos De Para Qualquer 
Lugar 
● Abra o IDE baixado. 
● Volte para as preferências de segurança e mude a seleção 
de volta para a Mac App Store e os desenvolvedores 
identificados 
● Você só precisa passar por esse procedimento uma vez. 
Mavericks vai lembrar que não há problema em executar o 
aplicativo. 
● É isso aí, você está pronto para começar a usar o Arduino 
IDE com a placa Arduino Gemma no OSX! 
 
Fonte: 
https://learn.adafruit.com/adafruit-ar
duino-ide-setup/mac-osx-setup 
 
 
 
Configuração dos drivers para 
Micronucleus 
 
Se você está usando o Micronucleus como bootloader e 
as bibliotecas da Digispark, precisamos executar as configurações 
a seguir. 
 
Configuração dos drivers para Micronucleus 
Se você está usando o Micronucleus como bootloader e 
as bibliotecas da Digispark, faça as configurações a seguir: 
 
Windows 
 
Precisamos fazer o download do driver no link abaixo: 
https://github.com/digistump/DigistumpArduino/
releases/download/1.6.7/Digistump.Drivers.zip 
 
 
https://learn.adafruit.com/adafruit-arduino-ide-setup/mac-osx-setup
https://learn.adafruit.com/adafruit-arduino-ide-setup/mac-osx-setup
 
38 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Descompacte e instale o arquivo. Vale lembrar que para 
Windows 32 bits é necessário executar o arquivo DPinst.exe e se 
estiver usando o Windows 64 bits executar o arquivo 
DPinst64.exe 
 
Fonte: 
http://digistump.com/wiki/digispark/t
utorials/connecting 
 
Linux 
 
Para o Linux Troubleshooting baixe o arquivo no link: 
http://digistump.com/wiki/digispark/tutorials/linuxtroubleshootin
g 
 
 
http://digistump.com/wiki/digispark/tutorials/connecting
http://digistump.com/wiki/digispark/tutorials/connecting
http://digistump.com/wiki/digispark/tutorials/linuxtroubleshooting
http://digistump.com/wiki/digispark/tutorials/linuxtroubleshootingFÁBIO SOUZA e DIANA SANTOS 39 
 
Configuração Arduino IDE 
 
Com a instalação dos devidos drivers no computador, 
precisamos configurar o Arduino IDE, o nosso compilador para o 
Arduino. Como desde o começo do livro estamos utilizando o 
Bootloader do Gemma e do Micronucleus/Digispark, precisaremos 
configurar” o Arduino IDE para compilar os nossos códigos 
corretamente para a Franzininho. 
Para configurar o Arduino IDE para compilar os códigos 
para o Arduino Gemma, clique em “Ferramentas” na barra de 
menus, depois clique em “Placas” e finalmente procure a placa 
“Arduino Gemma” na lista que aparecer. 
 
 
 
Agora precisamos informar ao Arduino IDE qual é o 
programador que iremos utilizar, e neste caso clique em 
“Ferramentas” na barra de menu, depois clique em 
“Programador” e escolha na lista que aparecer “Arduino Gemma”. 
 
 
40 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
 
Pronto, acabamos de configurar a placa e o programador 
que utilizaremos para criarmos os programas que serão utilizados 
na Franzininho que utiliza o bootloader da Arduino Gemma. Agora 
o próximo passo é fazer o upload do seu sketch para a placa. 
 
 
Digispark 
Com o micronucleus gravado no Attiny85 você pode 
programar a Franzininho usando o pacote de software 
desenvolvidos para a digispark. Para isso, você precisa instalar o 
pacote de suporte da Digispark na Arduino IDE (É necessário 
estar conectado a internet). Acesse o menu 
Arquivos->preferências e cole a URL a seguir para gerenciador 
de placas: 
http://digistump.com/package_digistump_index.json 
 
http://digistump.com/package_digistump_index.json
 
FÁBIO SOUZA e DIANA SANTOS 41 
 
 
Agora acesse o menu: Ferramentas-> Placa -> 
Gerenciador de Placas. Aguarde alguns segundos até 
atualização da lista de pacotes e digite "digi". Aparecerá o 
pacote “Digistump AVR Boards” e clique em instalar. 
 
 
Aguarde o fim da instalação e clique em fechar. 
Agora na barra de menu clique em “Ferramentas” , 
depois e “Placas” , no menu que aparecer escolha a opção 
“Digispark (Default - 16.5mhz)” . 
 
 
42 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Depois acesse através da mesma barra de menu o item 
“Ferramentas” , depois em “Programador” e na lista que 
aparecer selecione a opção “Micronucleus”. 
 
 
 
 
Pronto a IDE está pronta para programar a placa. 
 
 
Upload do Sketch 
 
Agora o nosso próximo passo é fazer o upload do Sketch 
para a Franzininho, ou seja, iremos gravar na Franzininho os 
programas que faremos mais adiante. Primeiramente vamos 
gravar um código ou Sketch sem nada dentro, só para 
aprendermos como fazer. 
Então precisamos conectar a nossa placa ao computador, 
de agora em diante não precisaremos mais da utilização de uma 
placa de Arduino para fazer a intermediação entre o computador 
e a Franzininho, uma vez que já gravamos o Bootloader na 
Franzininho. 
 
 
FÁBIO SOUZA e DIANA SANTOS 43 
 
Os primeiros passos para fazermos o upload do nosso 
Sketch é igual para os dois tipos de bootloader, tanto a Gemma 
como o Micronucleus, somente na hora das mensagens que 
ambos apresentam que são diferentes. 
Abaixo temos um esquema de como podemos fazer essa 
conexão para ambos os casos. 
Primeiramente conecte a sua Franzininho ao seu 
computador via cabo USB. 
 
 
 
Agora é necessário “Resetar” a placa. 
 
 
Na tela do Arduino IDE clique no botão “Upload” 
(Carregar). Com esse comando o computador irá gravar na 
Franzininho o Sketch. 
 
Assim que o Sketch vai sendo compilado e gravado na 
Franzininho, uma tela irá informando linha a linha o que está 
 
 
44 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
sendo feito. É aqui que as coisas tomam rumo diferentes. Caso 
você tenha optado pelo Bootloader da Gemma, aparecerá a tela a 
seguir. 
 
 
 
Caso você tenha optado pelo Bootloader da Micronucleus 
– Digispark a seguinte tela aparecerá. Caso a placa não esteja 
conectada, você tem até 60 segundos para conectá-la. 
 
 
 
Assim que Sketch estiver totalmente gravado, uma 
mensagem aparecerá como o da figura abaixo, caso tenha 
escolhido o Bootloader da Gemma. 
 
Caso tenha escolhido o Bootloader da Micronucleus – 
Digispark , aparecerá a tela apresentada abaixo. 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 45 
 
 
 
Pronto, agora você poderá utilizar a sua Franzininho. 
 
 
 
 
46 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Programando a Franzininho 
 
Neste capítulo aprenderemos a programar a Franzininho, 
e uma dica interessante para quem está iniciando neste mundo 
da programação, é buscar leituras sobre Lógica de Programação. 
 
Entradas e Saídas Digitais 
Na Franzininho temos 6 pinos que podem ser usados com 
entradas ou saídas digitais(P0 a P5), conforme pinout: 
 
Pinagem Franzininho V2 (verificar limitações de uso dos pinos) 
 
 
Configuração do modo de funcionamento do pino 
Os pinos do ATtiny85 podem ser configurados como 
entradas ou saídas, além de outras funções. Para configuração 
com entrada ou saída vamos usar a seguinte função: 
 
 
FÁBIO SOUZA e DIANA SANTOS 47 
 
 
pinMode() 
Função que configura um pino específico para ser entrada 
ou saída digital. 
 
Sintaxe: 
pinMode(pino, modo); 
 
Parâmetros: 
pino -> corresponde ao pino que você irá usar, no caso 
da Franzininho podemos usar pinos de 0 a 5. 
modo -> deve-se colocar o modo que deseja configurar 
o pino: 
INPUT = Entrada onde ele fica aguardando um sinal. 
OUTPUT = Saída onde aparece um sinal do pino para 
ativar um circuito externo. 
INPUT_PULLUP = Entrada digital com resistor de 
pull-up (ligado ao VCC) interno habilitado; 
 
Exemplo 
Vamos configurar pino P0 para leitura de uma tecla, 
portanto será uma entrada digital. Também vamos configurar o 
pino P1 para acionamento do LED, ou seja, uma saída digital: 
 
int tecla = 0; //pino da tecla 
int LED = 1; //pino do LED 
 
void setup () { 
 pinMode(tecla, INPUT); //configura pino da tecla como entrada 
 pinMode(LED, OUTPUT); //configura pino do LED como saída 
} 
 
void loop(){ 
} 
 
Geralmente as configurações são realizadas dentro da 
função setup() . Na função loop são realizadas as tarefas durante 
o funcionamento da placa, como veremos mais à frente. 
 
 
48 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Escrita em um pino digital 
Os pinos digitais configurados como saídas digitais 
podem assumir dois valores, conforme a escrita no código. Os 
valores podem ser HIGH ou LOW, que se traduzem em 5V ou 0V 
no pino da Franzininho. Para escrita digital vamos usar a seguinte 
função: 
 
digitalWrite() 
Função que coloca um nível lógico Alto (HIGH, 5V) ou 
baixo (LOW, 0V) em um pino configurado como saída digital. 
 
Sintaxe: 
digitalWrite(pino, valor) 
 
Parâmetros: 
pino: Número correspondente ao pino; 
 
valor: HIGH OU LOW 
 
Exemplo 
Inverte o estado do LED (P1) em intervalos de 1 
segundo: 
const int LED = 1; //pino digital conectado ao LED 
 
void setup(){ 
 pinMode(LED,OUTPUT); //pino digital de saída 
} 
 
void loop(){ 
 digitalWrite(LED,HIGH); //acende o led da placa 
 delay(1000); //aguarda um segundo 
 digitalWrite(LED,LOW); //apaga o led da placa 
 delay(1000); //aguarda um segundo 
} 
 
A função delay(ms) espera um tempo em milisegundos. 
No caso do exemplo acima, 1000 ms = 1 segundo. 
 
 
FÁBIO SOUZA e DIANA SANTOS 49 
 
Leitura de um pino digital 
Um pino digital pode assumir dois valores,HIGH e LOW, 
conforme o nível de tensão presente no mesmo: 5V ou 0V. 
Podemos usar o pino configurado como entrada digital para ler 
estados de sensores, que por sua vez representam estados de 
situações, por exemplo: 
● botão solto ou pressionado; 
● porta aberta ou fechada 
● presença de objeto ou não presença de objeto 
 
Para leitura de uma entrada digital usamos a seguinte 
função: 
 
digitalRead() 
Função que lê o valor presente e um pino digital. Este 
valor pode ser HIGH ou LOW. 
 
Sintaxe: 
digitalRead(pino) 
 
Parâmetros: 
pino -> valor correspondente ao pino que se deseja ler. 
 
Retorno = HIGH ou LOW. 
 
Exemplo: 
Vamos ler o estado da tecla, ligar o pino P2 e acionar o 
LED ligado a pino P1 conforme o seu estado: 
 
 
50 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
const int LED = 1; //pino para o LED 
const int BOTAO = 2; //pino para o botão 
 
int val = 0; // val será utilizado para armazenar o estado do pino 
 
void setup(){ 
 pinMode(LED,OUTPUT); //o LED é uma saída 
 pinMode(BOTAO,INPUT); //o BOTAO é uma entrada 
} 
 
void loop (){ 
 val = digitalRead(BOTAO); // lê e armazena o valor de entrada 
 digitalWrite(LED, val); //aciona LED conforme valor lido do botão 
} 
 
 
Entradas Analógicas 
 
Na Franzininho temos 1 pino que pode ser usado como 
entrada Analógica (A1). O Attiny85 possui mais entradas 
analógicas(A0,A2,A3), que também podem ser usadas mas com 
limitações no hardware* conforme pinout: 
 
 
FÁBIO SOUZA e DIANA SANTOS 51 
 
 
Pinagem Franzininho V2 (verificar limitações de uso dos pinos) 
 
Função 
Para a leitura de um sinal analógico no pino que possui 
essa função, não é necessário configurar o pino como entrada 
analógica. Isso é feito na função de leitura: 
 
int analogRead(pino) 
 
Lê o valor presente em um pino configurado como 
entrada analógica. Internamente o Arduino possui um conversor 
A/D de 10 bits. Dessa forma o valor retornado por esta função 
estará na faixa de 0 a 1023 conforme o valor presente no pino. 
 
Sintaxe: 
analogRead(pino); 
 
Parâmetros: 
pino -> valor do pino configurado como entrada 
analógica (0,1,2,3 na Franzininho) 
 
 
52 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Retorno = int (0 a 1023) 
 
Exemplo: 
Vamos ler o valor de um potenciômetro ligado ao pino 
P2(A1) e acionar o LED, quando a leitura atingir um valor 
definido: 
 
 
const byte LED = 1; //pino do LED 
const byte POT = A1; //pino do Potenciômetro 
 
void setup() { 
 pinMode(LED,OUTPUT); 
} 
 
void loop() { 
 
 int valor = analogRead(POT); // lê o valor do potenciômetro 
 
 if(valor> 511){ //se valor maior que 511 
 digitalWrite(LED,HIGH); //liga LED 
 }else{ //se não 
 digitalWrite(LED,LOW); //apaga LED 
 } 
} 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 53 
 
 
 
 
 
PWM 
 
O que é PWM? 
 
PWM, do inglês Pulse Width Modulation, é uma técnica 
utilizada por sistemas digitais para variação do valor médio de 
uma forma de onda periódica. A técnica consiste em manter a 
frequência de uma onda quadrada fixa e variar o tempo que o 
sinal fica em nível lógico alto. Esse tempo é chamado de duty 
cycle, ou seja, o ciclo ativo da forma de onda. No gráfico a seguir 
estão exibidas algumas modulações PWM: 
 
 
 
54 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
 
Analisando as formas de onda nota-se que a frequência 
da forma de onda tem o mesmo valor e varia-se o duty cycle da 
forma de onda. Quando o duty cicle está em 0% o valor médio da 
saída encontra-se em 0 V e consequentemente para um duty 
cycle de 100% a saída assume seu valor máximo, que no caso é 
5V. Para um duty cycle de 50% a saída assumirá 50% do valor da 
tensão, 2,5 V e assim sucessivamente para cada variação no duty 
cycle. Portanto, para calcular o valor médio da tensão de saída de 
um sinal PWM pode-se utilizar a seguinte equação: 
 
Vout = (duty cycle/100)* Vcc 
 
Onde : 
Vout - tensão de saída em V; 
duty cycle - valor do ciclo ativo do PWM em %; 
Vcc - tensão de alimentação em V. 
 
O PWM pode ser usada para diversas aplicações, como 
por exemplo: 
 
● controle de velocidade de motores; 
● variação da luminosidade de leds; 
 
 
FÁBIO SOUZA e DIANA SANTOS 55 
 
● geração de sinais analógicos; 
● geração de sinais de áudio. 
Usando as saídas PWM do Arduino 
Na Franzininho temos 3 pinos que pode ser usado como 
saídas PWM(PWM0,PWM1 e PWM4) conforme pinout: 
 
 
 
 
 
Função 
A função analogWrite() escreve um valor de PWM em 
um pino digital que possui a função PWM. Para usar o pino como 
saída PWM é necessário configurá-lo como saída digital. 
 
Sintaxe: 
analogWrite(pino, valor) 
 
Parâmetros: 
pino -> corresponde ao pino que será gerado o sinal 
PWM (0,1,4 na Franzininho); 
valor -> corresponde ao duty cycle, ou seja, o valor que 
permanecerá em nível alto o sinal. O valor deve ser de 0 a 255 
onde com 0 a saída permanece sempre em nível baixo e 255 a 
saída permanece sempre em nível alto. 
 
 
56 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Exemplo: 
Vamos controlar o brilho do LED conforme o valor lido no 
potenciômetro. 
 
 
 
 
const byte LED = 1; //pino do LED 
const byte POT = A1; //pino do Potenciômetro 
void setup() { 
 pinMode(LED,OUTPUT); 
} 
void loop() { 
 int valor = analogRead(POT); // lê o valor do potenciômetro 
 analogWrite(LED,valor/4); //escreve no LED valor entre 0 e 255 
} 
 
 
I2C 
A biblioteca Wire usada para aplicações I2C não é 
compatível com o ATtiny85 . Para a função de I2C podemos usar 
a biblioteca TinyWireM , disponibilizada pela Adafruit. Você pode 
baixá-la no github ou instalar através do gerenciador de 
bibliotecas no Arduino, como a ilustração a seguir. 
 
 
FÁBIO SOUZA e DIANA SANTOS 57 
 
 
Os pinos da I2C na Franzininho são: P0(SDA) e P2(SCL), 
conforme pinout mostrado a seguir. 
 
 
 
 
Exemplo: Leitura do sensor de temperatura 
DS1620 
No próximo exemplo faremos a leitura do sensor de 
temperatura utilizando o protocolo I2C para a coleta dos dados. 
 
 
58 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
 
/* ATtiny85 as an I2C Master Ex1 BroHogan 
 * I2C master reading DS1621 temperature sensor. (display with leds) 
 * SETUP: 
 * ATtiny Pin 1 = (RESET) N/U ATtiny Pin 2 = (D3) LED3 
 * ATtiny Pin 3 = (D4) to LED1 ATtiny Pin 4 = GND 
 * ATtiny Pin 5 = SDA on DS1621 ATtiny Pin 6 = (D1) to LED2 
 * ATtiny Pin 7 = SCK on DS1621 ATtiny Pin 8 = VCC (2.7-5.5V) 
 * NOTE! - It's very important to use pullups on the SDA & SCL lines! 
 * DS1621 wired per data sheet. This ex assumes A0-A2 are 
 * set LOW for an addeess of 0x48 
 * TinyWireM USAGE & CREDITS: - see TinyWireM.h 
 * NOTES: 
 * The ATtiny85 + DS1621 draws 1.7mA @5V when leds are not 
 * on and not reading temp. 
 * Using sleep mode, they draw .2 @5V @ idle - 
 * see http://brownsofa.org/blog/archives/261 
 */ 
 
#include <TinyWireM.h> // I2C Master lib for ATTinys which use USI 
 
#define DS1621_ADDR 0x48 // 7 bit I2C address for DS1621 
 // temperature sensor 
#define LED1_PIN 4 // ATtiny Pin 3 
#define LED2_PIN 1 // ATtiny Pin 6 
 
 
FÁBIO SOUZA e DIANA SANTOS 59 
 
#define LED3_PIN 3 // ATtiny Pin 2 
 
int tempC = 0; // holds temp in C 
int tempF = 0; // holds temp in F 
 
void setup(){ 
 pinMode(LED1_PIN,OUTPUT); 
 pinMode(LED2_PIN,OUTPUT); 
 pinMode(LED3_PIN,OUTPUT); 
 Blink(LED1_PIN,2);// show it's alive 
 TinyWireM.begin(); // initialize I2C lib 
 Init_Temp(); // Setup DS1621 
 delay (3000); 
} 
 
void loop(){ 
 Get_Temp(); 
 Blink(LED1_PIN,tempC/10); // blink 10's of temperature on LED 1 
 delay (1000); 
 Blink(LED2_PIN,tempC%10); // blink 1's of temperature on LED 2 
 delay (4000); // wait a few sec before next reading 
} 
 
void Init_Temp(){ // Setup the DS1621 for one-shot mode 
 TinyWireM.beginTransmission(DS1621_ADDR); 
 TinyWireM.send(0xAC); // Access Command Register 
 TinyWireM.send(B00000001); // One-shot mode for battery savings 
 //TinyWireM.send(B00000000); // if setting cont.mode for fast reads 
 TinyWireM.endTransmission(); // Send to the slave 
} 
 
 
void Get_Temp(){ // Get the temperature from a DS1621 
 TinyWireM.beginTransmission(DS1621_ADDR); 
 
 
60 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 TinyWireM.send(0xEE); // if one-shot, start conversions now 
 TinyWireM.endTransmission(); // Send 1 byte to the slave 
 delay(750); // if one-shot, must wait ~750 ms for conversion 
 TinyWireM.beginTransmission(DS1621_ADDR); 
 TinyWireM.send(0xAA); // read temperature (for either mode) 
 TinyWireM.endTransmission(); // Send 1 byte to the slave 
 TinyWireM.requestFrom(DS1621_ADDR,1); // Request 1 byte from slave 
 tempC = TinyWireM.receive(); // get the temperature 
 tempF = tempC * 9 / 5 + 32; // convert to Fahrenheit 
} 
 
 
void Blink(byte led, byte times){ // poor man's GUI 
 for (byte i=0; i< times; i++){ 
 digitalWrite(led,HIGH); 
 delay (400); 
 digitalWrite(led,LOW); 
 delay (175); 
 } 
} 
 
 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 61 
 
Exemplos com a Franzininho 
 
Com tudo pronto e configurado é hora de se divertir, mas 
antes de criarmos nosso primeiro programa é bom copiar e 
entender como funciona o código-fonte do Arduino. Uma coisa 
interessante para que utiliza a Franzininho é que existem 
milhares de códigos prontos , que podemos copiar e modificar 
conforme as nossas necessidades, sem ter que partir do zero. 
O primeiro código que iremos testar é o Pisca LED, o qual 
chamamos de “Olá Mundo”. Um código e uma montagem bem 
simples. Lembrando que no site da Comunidade Franzininho 
existem outros códigos que podem ser usados e convidamos você 
a participar compartilhando as suas criações em nosso site 
 
http://www.franzininho.com.br 
 
 
Pisca LED 
O primeiro contato com a programação com o Arduino, 
você faz o blink (que faz com que o led pisque em intervalos de 
tempo). Com a Franzininho não é diferente, você pode testar com 
o próprio LED que ela tem ou caso você queira, pode ligar um 
LED em uma protoboard. A seguir vamos explicar como fazer um 
blink com a Franzininho. 
 
Materiais: 
Placa Franzininho; 
Protoboard; 
LED 3mm; 
Resistor 330; 
Jumpers 
 
Circuito 
Na protoboard ou Matriz de Contatos montamos o 
circuito para acionamento do LED conforme a figura abaixo. 
 
http://www.fabiosouza.com.br/
 
62 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
 
 
 
/* Pisca LED - Blink - Esse exemplo exibe como piscar o LED presente 
na placa ou um LED externo ligado ao pino 1 da Franzininho em 
intervalos de 1 segundo. */ 
const int LED = 1; //pino digital conectado ao LED 
void setup(){ 
 pinMode(LED,OUTPUT); //pino digital de saída 
} 
void loop(){ 
 digitalWrite(LED,HIGH); //acende o led da placa 
 delay(1000); //aguarda um segundo 
 digitalWrite(LED,LOW); //apaga o led da placa 
 delay(1000); //aguarda um segundo 
} 
 
 
 
Tecla Liga/Desliga 
 
Nesse exemplo vamos fazer uma projeto com uma tecla 
liga/desliga, que pode ser usada para acionamentos de diversos 
outros projetos, ou fazer parte de um projeto maior onde este 
módulo pode ser aplicado com o botão liga e desliga. 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 63 
 
Materiais: 
Placa Franzininho; Protoboard; LED 
3mm; 1 Resistor 220; 1 Resistor de 
1K; 1 Botão; Jumpers; 
 
Circuito 
 
No protoboard ou Matriz de Contatos vamos inserir um 
LED, resistores e um botão, conforme a imagem abaixo. 
 
 
 
 
 
64 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
/* 
 Franzininho 
 Exemplo: Tecla liga/desliga 
 Esse exemplo exibe como fazer ligar e desligar 
 uma saída através de uma tecla 
*/ 
const int LED = 1; //pino para o LED 
const int BOTAO = 2; //pino para o botão 
int estadoAnteriorBotao = 0; // armazena o estado anterior do botão 
 
void setup(){ 
 pinMode(LED,OUTPUT); //o LED é uma saída 
 pinMode(BOTAO,INPUT); //o BOTAO é uma entrada 
} 
 
void loop (){ 
 int estadoAtualBT= digitalRead(BOTAO); // Lê estado do botão 
 delay(10); 
if ((estadoAtualBT != estadoAnteriorBotao)&& (estadoAtualBT == 
LOW)){ //Se o botão foi pressionado e o seu estado mudou 
 digitalWrite(LED,!digitalRead(LED)); //inverte estado do LED 
 } 
 
 estadoAnteriorBotao = estadoAtualBT; 
 //salva o estado do botão para comparar na próxima leitura 
} 
 
 
 
 
 
 
FÁBIO SOUZA e DIANA SANTOS 65 
 
Comunidade Franzininho 
 
O projeto Franzininho possui uma grande comunidade 
ativa, compartilhando e trocando conhecimento. O bacana da 
comunidade Franzininho é que pessoas de várias áreas podem 
colaborar e interagir contribuindo assim com a melhoria do 
projeto e com novas ideias para aplicação. 
Hoje temos uma comunidade no Facebook e também no 
Telegram. Fique a vontade para participar, ficaremos muito felizes 
em ver você na comunidade Franzininho: 
 
Comunidade Franzininho no Facebook: 
https://www.facebook.com/groups/299236843857849/ 
 
Comunidade Franzininho no Telegram: 
https://t.me/franzininho 
 
 
 
 
 
 
 
66 MONTE E PROGRAME SEU PRÓPRIO ARDUINO 
 
Anexo A - Esquemático

Mais conteúdos dessa disciplina