Вы находитесь на странице: 1из 47

I - LINGUAGENS PROGRAMAÇÃO C/C++

1. Origens das Linguagens de Programação C/C++

1.1 Linguagem de Programação C

A linguagem de programação C foi desenvolvida e implementada primeiramente por Dennis


Ritchie em um minicomputador chamado PDP-11 que utilizava o sistema operacional UNIX.

Minicomputador PDP-11.

Fonte: Blog Bobilhas.

Certo que seu surgimento foi fruto de um resultado de desenvolvimento de uma linguagem
anterior chamada BCPL, que atualmente é muito utilizado em sua forma original no
continente Europeu. A linguagem BCPL foi desenvolvida por Martim Richards e influenciou

1
I - LINGUAGENS PROGRAMAÇÃO C/C++

uma linguagem chamada B, inventada por Ken Thompson. E


na década de 70, a linguagem B originou o desenvolvimento da
linguagem C.

A linguagem C é frequentemente referenciada como uma


linguagem de nível médio, posicionando-se entre o Assembly
(baixo nível) e o Pascal (alto nível). Uma das razões da invenção
da linguagem C foi dar ao programador uma linguagem de alto
nível que poderia ser utilizada como uma substituta para a
linguagem Assembly.

1.2 Linguagem de Programação C++

A linguagem C++ foi desenvolvida por Bjarne Stroustrup


quando trabalhava para a Bell Labs, durante a década de
1980. Nesta época, o Unix, sistema operacional também
desenvolvido pela Bell Labs, era desenvolvido na
linguagem C. Era importante que fosse mantida
compatibilidade entre a nova linguagem C++ e a antiga
linguagem C.

Então em 1983 o nome da linguagem foi alterado de “C com Classes”, C with Classes em
inglês, para C++. Uma novidade importante da linguagem C++ é que ela contém uma
biblioteca padrão de recursos que também foi sendo melhorada ao longo do tempo.

2
I - LINGUAGENS PROGRAMAÇÃO C/C++

Assim, o C++ proporciona ao programador a liberdade e o controle da linguagem C junto


com o poder dos objetos. As características da orientação a objetos em C++, usando as
palavras de Stroustrup, “permite aos programas serem estruturados quanto à clareza e
extensibilidade, tornando fácil a manutenção sem perda de eficiência”.

1.3 Sistema Operacional UNIX

O sistema operacional Unix surge na sequência de um projeto iniciado nos anos 60 nos Bell
Labs da AT&T para desenvolver um sistema de operativo de tempo partilhado. Em 1965, os
Bell Labs com Dennis Ritchie iniciaram um projeto conjunto com a General Electric e o MIT
para desenvolver um sistema operativo de tempo partilhado designado Multics. No entanto,
pouco depois do seu início, os Bell Labs consideraram que o projeto estava mal encaminhado
e decidiram abandonar o consórcio. Dada a necessidade de ser encontrada uma alternativa
ao Multics para uso interno, Kenneth Thompson, um dos investigadores dos Bell Labs, iniciou
um projeto de desenvolvimento próprio que conduziu, em 1969, a primeira versão do sistema
operacional Unix.

Sistema Operacional UNIX.

Fonte: Site Ninja do Linux.

3
I - LINGUAGENS PROGRAMAÇÃO C/C++

Uma das inovações do sistema Unix relativamente a outros sistemas operacionais da época
era o conceito de que muitos dos comandos associados a gestão de máquina devem ser
executados por pequenos programas independentes, funcionando de forma cooperativa.
Esta estratégia permitiu simplificar significativamente as tarefas associadas ao núcleo do
sistema operacional, aumentando simultaneamente a sua robustez e modularidade.

Ken Thompson em pé ao lado de Dennis Ritchie sentado programando no DPD-11.

Fonte: Site Exame.

Com o aparecimento do protocolo TCP/IP (o principal protocolo atualmente utilizado na


Internet), deu a origem em 1983 ao Unix Sistema V.

4
II - SOFTWARES

2. Softwares

2.1 Ambiente de Desenvolvimento Integrado

IDE, ou Ambiente de Desenvolvimento Integrado em tradução livre, é um software criado


com a finalidade de facilitar a vida dos programadores. Neste tipo de aplicação estão todas
as funções necessárias para o desenvolvimento desde programas de computador a
aplicativos mobile, assim como alguns recursos que diminuem a ocorrência de erros nas
linhas de código.

Uma das principais vantagens dos IDEs está na capacidade de compilar bibliotecas completas de
linguagem. Outra função bastante comum neste tipo de programa são os debuggers, que apontam
os erros que ocasionalmente podem ocorrer ao escrever o código. Alguns IDEs também possuem o
auto completar.

2.2 Arduino Software IDE

Figura 19: Tela de abertura do IDE Arduino Software.

Fonte: Adaptação Próprio Autor.

5
II - SOFTWARES

Para o Arduino ser carregado com a programação e consequentemente executada a ação,


o Arduino IDE é utilizado. Este software é um editor de texto que conecta ao hardware do
Arduino, verifica se a programação está correta e faz o upload para a placa correspondente.

O IDE permite a criação de Sketches para a placa ARDUINO. A linguagem de programação


é modelada a partir da linguagem processing (www.processing.org). Quando pressionado o
botão upload da IDE, o código escrito é traduzido para a linguagem C/C++ e é transmitido
para o compilador avr-gcc, que realiza a tradução dos comandos para uma linguagem que
pode ser compreendida pelo microcontrolador.

O Ciclo de programação do ARDUINO pode ser dividido da seguinte maneira:

1. Conexão da placa a uma porta USB do computador;

2. Desenvolvimento de um sketch com comando para a placa;

3. Upload do sketch para a placa, utilizando a comunicação USB;

4. Aguardar a reinicialização, após ocorrerá à execução do sketch criado.

A partir do momento que o software é gravado no ARDUINO não precisa mais do


computador: o ARDUINO funciona como um computador independente e conseguirá sozinho
executar o sketch criado, desde que seja ligado a uma fonte de energia.

6
II - SOFTWARES

2.2.1 Interface do Arduino Software

Quando se abre o IDE do ARDUINO, será exibido algo semelhante à figura abaixo:

Figura 20: Interface do IDE Arduino Software.

Fonte: Adaptação Próprio Autor.

7
II - SOFTWARES

O IDE é dividido em três partes: A Toolbar no topo, o código ou a Sketch Window no centro,
e a janela de mensagens na base, conforme é exibido na Figura 15.

Sob a Toolbar há uma guia, ou um conjunto de guias, com o nome do arquivo do sketch.
Também há um botão posicionado no lado direito que habilita o serial monitor. Ao longo do
topo há uma barra de menus, com os itens File, Edit, Sketch, Tools e Help.

Figura 15: Interface do IDE Arduino Software.

Fonte: Adaptação Próprio Autor.

8
II - SOFTWARES

Os botões na Toolbar fornecem acesso conveniente às funções mais utilizadas dentro


desses menus.

Abaixo são identificados os ícones de atalho da IDE:

• Verify - Verifica se existe erro no código digitado;

• Upload - Compila o código e grava na placa Arduino se corretamente conectada;

• New - Cria um novo sketch em branco;

• Open - Abre um arquivo sketch;

• Save - Salva o sketch ativo;

• Seria monitor - Abre o monitor serial.

Assista aos Vídeos Para Maiores Detalhes

9
2.2.2 Linguagem Utilizada

Segundo o Professor Caetano (2016), em um artigo publicado em seu blog titulado


Linguagem Arduino, [...o microcontrolador na placa Arduino é programado com a linguagem
de programação Arduino, baseada na linguagem Wiring. O seu IDE (Ambiente Integrado de
Desenvolvimento), é baseado no ambiente Processing.

Wiring e Processing são projetos que surgiram antes do Arduino onde os projetos são
escritos/desenvolvidos em JAVA, C e C++.

Fonte: Estrutura de Código.

Fonte: Adaptação Próprio Autor.

10
II - SOFTWARES

2.2.3 Sketches

Os programas escritos para Arduino são chamados de sketches (esboços). Muitas coisas
acontecem antes do sketch ser transferido para a placa Arduino.

Um projeto do Arduino é chamado de sketch, e consiste tipicamente em duas partes (rotinas):


a rotina de setup, que inicializa o sketch, e a rotina de loop, que normalmente contém o
código principal do programa (é como a função main() da linguagem C).

2.2.3.1 Rotina de setup

Antes que possamos trabalhar com o Arduino, precisamos configurar alguns itens. Essa
configuração é realizada dentro de uma rotina chamada setup(), a qual é chamada sempre
que o sketch é inicializado. Geralmente inicializamos os pinos de entrada e saída digitais, e
podemos também definir a taxa de transmissão serial, entre outras coisas. É comum
declaramos as variáveis usadas no programa antes da definição da função setup().

Veja um exemplo da função setup:

void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
}

11
II - SOFTWARES

Assista aos Vídeos Para Maiores Detalhes

2.2.3.2 Rotina de loop

A rotina de loop é onde o programa é efetivamente executado. Trata-se exatamente do que


o nome sugere – um loop infinito. Os códigos contidos nessa rotina são executados
eternamente – ou até que o Arduino seja interrompido.

É na rotina de loop que escreveremos nosso programa efetivamente. Veja um exemplo de


uma rotina de loop:

void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

Assista aos Vídeos Para Maiores Detalhes

12
II - SOFTWARES

2.3 Software Fritzing

Fritzing é um programa que busca tornar a eletrônica e a programação acessível a todos. É


uma ferramenta intuitiva e rápida para quem deseja documentar, digitalmente, projetos feitos
com Arduino. Ele possui diversas opções para a montagem de circuitos sobre uma
protoboard virtual, disponibilizando inúmeros modelos de Arduino para o usuário. Além disso,
o Fritzing permite exportar esquemáticos, pode ser usado como IDE, entre outras funções.

Software Fritzing.

Fonte: Site Fritzing.

13
III – PROJETO 1: PISCAR LED

Assista aos Vídeos Para Maiores Detalhes

3. Projeto 1 – Piscar LED

Começaremos com um projeto simples onde terá a função apenas de fazer o efeito de
piscar o LED.

3.1 Materiais utilizados

• 1 Protoboard de 400 ou 830 furos;


• 1 LED;
• 1 Resistor de valor entre 100 a 200 Homhs;
• 2 Fios jumpers Macho x Macho;
• 1 Arduino Uno ou Mega.

3.1.2 Protoboards

A Protoboard é um dos equipamentos mais úteis no aprendizado em eletrônica, consiste em


uma placa didática composta de uma matriz de contatos que permite a construção de
circuitos experimentais sem a necessidade de efetuar a solda dos componentes isso permite
que seja efetuado uma série de experimentos com os mesmos componentes inserindo ou
removendo os mesmos com rapidez e segurança.

14
III – PROJETO 1: PISCAR LED

Figura 16: Protoboard de 830 furos.

Fonte: Blog Tecnosolution.

É constituída por uma base plástica, contendo inúmeros orifícios destinados à inserção de
terminais de componentes eletrônicos. Internamente existem ligações determinadas que
interconectam os orifícios, permitindo a montagem de circuitos eletrônicos sem a utilização
de solda.

Existem vários tamanhos e tipos de Protoboard, nos quais são selecionados de acordo a
necessidade do usuário pela quantidade de componentes que será necessário no
experimento.

15
III – PROJETO 1: PISCAR LED

Figura 17: Tamanhos diferentes de protoboard.

Fonte: Adaptação próprio Autor.

3.1.2.1 Funcionamento do Protoboard

a) Alimentação interligadas na horizontal – Dois grupos de filamentos de


alimentação do circuito nos quais são identificados pelos sinais de positivo (+) e
negativo (-). Estas linhas são longas faixas condutivas conectadas no sentido
horizontal usadas normalmente para plugar cabos de alimentação (bateria);

16
III – PROJETO 1: PISCAR LED

b) Área de Trabalho interligadas na vertical – Colunas formadas exatamente por cinco


furos nos quais servem para implementação do circuito. Os furos (alvéolos) possuem
na sua parte interna contatos elétricos de metal (grampos), de modo que são
encaixados fios (jumpers) ou terminais de componentes sem utilização de solda.
Assim, cada fila vertical de furos estará interligada. Isso quer dizer que todos os
terminais de componentes que estejam numa mesma fila vertical estarão interligados.

Figura 18: Organização das interligações da protoboard.

Fonte: Site Dream Inc.

Desta forma, uma vez comprovado o funcionamento de um circuito, o mesmo deverá ser
montado em uma placa de circuito impresso, caso deseje utilizá-lo em definitivo.

17
III – PROJETO 1: PISCAR LED

3.1.3 LED

O LED é um componente eletrônico semicondutor, ou seja, um diodo emissor de luz (LED =


Light Emitter Diode), mesma tecnologia utilizada nos chips dos computadores, que tem a
propriedade de transformar energia elétrica em luz. Tal transformação é diferente da
encontrada nas lâmpadas convencionais que utilizam filamentos metálicos, radiação
ultravioleta e descarga de gases, dentre outras. Nos LEDs, a transformação de energia
elétrica em luz é feita na matéria, sendo, por isso, chamada de Estado Sólido (Solid State).

É considerado um componente do tipo bipolar, ou seja, tem um terminal chamado anodo e


outro, chamado catodo. Dependendo de como for polarizado, permite ou não a passagem
de corrente elétrica e, consequentemente, a geração ou não de luz.

Figura 7: LEDs.

Fonte: Site Mundo da Elétrica.

18
III – PROJETO 1: PISCAR LED

O LED geralmente é utilizado em eletroeletrônicos, onde é vantajosa sua aplicação para


sinalização (ligado ou desligado), por exemplo. É muito fácil encontrar LEDs em vários
aparelhos domésticos, como as TVs de LED, também em rádios, computadores, em alguns
tipos de semáforos e etc. Porém, a partir de crises energéticas e a preocupação no uso
adequado da energia elétrica e na economia da mesma, o LED vem tomando também
espaço na iluminação de residências.

O tamanho dos LEDs geralmente pode variar de 3 a 10 milímetros, outros tamanhos,


menores ou maiores, geralmente são para casos específicos. A quantidade de iluminação
do LED sempre é medida em lúmens, e seu tempo de vida útil é dependente do local e
maneira de utilização, mas varia de 25 mil a 100 mil horas.

3.1.3.1 Estrutura do LED

O raio laser “... é formado por partículas de luz (fótons) concentradas e emitidas em forma
de um feixe contínuo. Essa luz é canalizada com a ajuda de espelhos para formar um feixe”.
(JOKURA, 2015, online).

19
III – PROJETO 1: PISCAR LED

Figura 8: Estrutura do LED.

Fonte: Adaptação Próprio Autor.

Nos LEDs as características de polarização são semelhantes à de um diodo semicondutor,


onde a maioria dos fabricantes adota um código de identificação dos terminais: o terminal do
catodo é aquele junto a um chanfro na lateral da base do invólucro ou sendo o terminal mais
curto.

3.1.4 Resistor

Os resistores são resistências elétricas com a capacidade de um corpo qualquer se opor à


passagem da corrente elétrica mesmo quando existe uma diferença de potencial aplicada. A
sua medida é em homs (O).

A finalidade de um resistor é oferecer uma oposição à passagem de corrente elétrica. Então


a essa resistência denominamos (resistência elétrica). Elas causam quedas de tensão em

20
III – PROJETO 1: PISCAR LED

alguma parte de um circuito elétrico, mas não causam quedas de corrente elétrica, apesar
de limitar a corrente. Isso significa que a corrente elétrica que entra em um terminal do

resistor será exatamente a mesma que sai pelo outro terminal, porém há uma queda de
tensão. Então os resistores entram com a função de controlar a tensão sobre os
componentes desejados.

O valor de um resistor, pode ser facilmente identificado analisando as cores que apresenta
em torno dele, ou então utilizando um ohmímetro, que é um instrumento de medição de
resistores (JACQUET, et al, 2011).

Figura 13: Resistor de carbono 2,7 Ohm +/- 5%.

Fonte: Site Milinfo Hobby.

21
III – PROJETO 1: PISCAR LED

3.1.4.1 Resistores de filme de carbono

Resistor que possui um cilindro de cerâmica que é coberto por uma película de carbono. Na
fabricação a determinação da resistência é feita através da largura e da espessura da
película do filme de carbono. Este componente é o mais barato entre todos os outros, más
de outro modo emite muitos ruídos quando energizado. O valor de sua resistência é
disponibilizado em cores, e é possível identificar a resistência através da tabela de código
de cores.

A sua característica consiste em um cilindro de porcelana recoberto por um filme (película)


de carbono. O valor da resistência é obtido mediante a formação de um sulco, transformando
a película em uma fita helicoidal. Esse valor pode variar conforme a espessura do filme ou a
largura da fita. Como revestimento, encontramos uma resina protetora sobre a qual é
impresso um código de cores, identificando seu valor nominal e tolerância.

Os resistores de filme de carbono são destinados ao uso geral e suas dimensões físicas
determinam a máxima potência que eles podem dissipar.

22
III – PROJETO 1: PISCAR LED

Figura 14: Resistor de filme de carbono ou metal.

Fonte: Site Mundo da Elétrica.

3.1.4.2 Código de cores

Os valores ôhmicos dos resistores podem ser reconhecidos pelas cores das faixas em suas
superfícies, cada cor e sua posição no corpo do resistor representam um número, de acordo
com o seguinte esquema:

A leitura dessas faixas deve ser feita sempre da extremidade para o centro, obedecendo ao
seguinte critério:

1ª faixa: (a mais próxima da extremidade) indica o primeiro algarismo do valor


da resistência;

2ª faixa: indica o segundo algarismo do valor da resistência;

23
III – PROJETO 1: PISCAR LED

3ª faixa: indica o número de zeros que devem ser acrescentados aos dois algarismos
anteriores;

Pode ainda existir uma 4ª faixa para indicar a imprecisão ou tolerância do valor
da resistência.

Figura 15: Código de cores.

Fonte: Blog Elétrons da Depressão.

24
III – PROJETO 1: PISCAR LED

3.1.5 jumpers

Jumpers são ligações móveis utilizadas entre dois pontos dentro de um circuito eletrônico.
São, geralmente pequenas peças ou fios metálicos, isolados por um material não condutivo,
responsáveis pela condução de eletricidade tanto em placas de circuitos impressos (PCI)
quanto em Protoboards.

Figura 18: Jumpers.

Fonte: Site Mercadolivre.

Além de facilitar projetos de eletrônica, por possuírem tamanhos variados e diferentes cores
para facilitar as conexões de perto, médio e longo alcance. A divisão de cores é um grande
auxilio que lhe proporcionará, já que além de facilitar a montagem de seus projetos, identifica
a ligação entre as conexões do circuito eletrônico.

25
III – PROJETO 1: PISCAR LED

3.1.6 Arduino
3.1.6.1 Histórico

O conceito Arduino teve seu início no Interaction Design Institute1 na cidade de Ivrea, na
Itália, em 2005. O professor Massimo Banzi procurava um meio barato de tornar mais fácil
para os estudantes de design trabalharem com tecnologia. Ele discutiu seu problema com
David Cuartielles, um pesquisador visitante da Universidade de Malmö, na Suécia, que
estava procurando uma solução semelhante, e o Arduino nasceu.

Figura 2: Arduino Mega 2560 (frente e fundo).

Fonte: Site Robotistan.

1
Instituto de Design de Interação Ivrea (Interação-Ivrea) é uma organização independente sem fins lucrativos, fundada
pela Telecom Italia e Olivetti, e agora parte da iniciativa da Progetto Italia de Telecom Italia.

26
III – PROJETO 1: PISCAR LED

Os produtos existentes no mercado eram caros e relativamente difíceis de usar. Banzi e


Cuartielles decidiram desenvolver um microcontrolador que poderia ser utilizado pelos seus
estudantes de arte e design em seus projetos.

David Cuartielles desenhou a placa, e um aluno de Massimo, David Mellis, programou o


software para executar a placa. Massimo contratou um engenheiro local, Gianluca Martino,
que também trabalhou no Design Institute ajudando alunos com seus projetos. Gianluca
concordou em produzir uma tiragem inicial de duzentas placas.

A nova placa foi chamada Arduino em referência a um bar local frequentado por membros
do corpo docente e alunos do instituto. As placas eram vendidas em forma de kit para que
os alunos fizessem seus próprios projetos. A tiragem inicial foi rapidamente vendida, e mais
unidades foram produzidas para manter a demanda.

Designers e artistas de outras áreas ouviram falar do Arduino e quiserem usá-lo em seus
projetos. Sua popularidade cresceu rapidamente quando o grande público percebeu que o
Arduino era um sistema de fácil utilização, de baixo custo e que poderia ser usado em seus
próprios projetos, bem como era uma excelente introdução para programação de
microcontroladores. O projeto original foi melhorado e novas versões foram introduzidas.

27
III – PROJETO 1: PISCAR LED

3.1.6.2 Interface eletrônica

A plataforma Arduino consiste em uma plataforma Open-source baseada em hardware e


software para as áreas de automação e robótica (SILVA, 2014). O Arduino consiste, por
definição, em um microcontrolador de placa única e um conjunto de software para programá-
lo.

Segundo (EVANS, 2013), O Arduino é uma plataforma de prototipagem eletrônica, de


hardware livre e de placa única, projetada com um microcontrolador da família Atmel. A
construção do hardware livre é baseada em um projeto com suporte embutido de
entrada/saída.

Figura 3: Microcontrolador-ATmega2560 da família Atmel.

Fonte: Site Embarcados.

De acordo aos autores acima citados, podemos então definir o Arduino como uma plataforma
de hardware open-source de fácil utilização e ideal para criação de dispositivos que permitam
interação com o ambiente, através de dispositivos que utilizem dos mais variados tipos de

28
III – PROJETO 1: PISCAR LED

sensores de temperatura, luz, som, etc..., criando desta forma possibilidades infinitas e
ilimitadas de projetos.

As placas podem ser produzidas a mão ou compradas pré-montadas (Shields), que permitem
expandir a as funções do microcontrolador. Seu objetivo é a criação de ferramentas
acessíveis, com baixo custo, flexíveis e fáceis de usar voltados para fins comerciais,
domésticos ou móveis. Podendo ser utilizado de forma independente ou conectado a um
computador que possa oferecer informações, recursos e serviços.

3.1.6.3 Características do Arduino Mega 2560

Existem diversos modelos de placas Arduino, que variam em seu tamanho e quantidade de
portas disponíveis para ligar as shields ou dispositivos. Assim, o Arduino Mega possui várias
facilidades para se comunicar com um computador, com outro Arduino ou outro
microcontrolador. O que iremos abordar neste artigo é o modelo Arduino Mega 2560.

29
III – PROJETO 1: PISCAR LED

Figura 4: Resumo das características do Arduino Mega ATmega2560.

Fonte: Site Embarcados.

O Arduino Mega 2560 é uma placa de micro controlador baseada no ATmega 2560
(datasheet). Ele possui 54 pinos de entradas/saídas digitais, 16 entradas analógicas, 4
UARTs (portas seriais de hardware), um oscilador de cristal de 16 MHz, uma conexão USB,
uma entrada de alimentação, uma conexão ICSP e um botão de reset.

30
III – PROJETO 1: PISCAR LED

Tabela 1: Características da Placa Arduino Mega 2560.


Microcontrolador ATmega2560
Tensão de operação 5V
Tensão de entrada(recomendada) 7-12V
Tensão de entrada (limite) 6-20V
Pinos de entrada e saída (I/O) 54 (dos quais 15 podem ser saídas
(digitais)
PWM)
Pinos de entradas analógicas 16
Corrente DC por pino I/O 40mA
Corrente DC para pino de 3,3V 50mA
Memória Flash 256KB (dos quais 8KB são usados para
o bootloader)
SRAM 8KB
EEPROM 4KB
Velocidade de Clock 16MHz
Fonte: Próprio Autor.

O Arduino Mega 2560 é compatível com a maioria dos Shields desenhados para os Arduino
Uno, Duemilanove e para o Diecimila. Possui ainda o dobro de memória do antigo Arduino
Mega (JACQUET, et al, 2011).

3.1.6.4 Pinos de alimentação

• VIN. Entrada de voltagem da placa Arduino quando se está usando alimentação externa (em
oposição aos 5 volts fornecidos pela conexão USB ou outra fonte de alimentação regulada).

31
III – PROJETO 1: PISCAR LED

• É possível fornecer alimentação através deste pino ou acessá-la desde aí se estiver


alimentando pelo conector de alimentação.

• 5V. Fornecimento de alimentação regulada para o microcontrolador e outros componentes


da placa.

• 3V3. Uma alimentação de 3,3 Volts gerada pelo chip FTDI. A corrente máxima é de 50 mA.

• GND. Pinos terra.

3.1.7 Pinos de E/S (Entrada/Saída)

Cada um dos 54 pinos digitais do Mega2560 pode ser usado como entrada ou saída, usando
as funções de pinMode(), digitalWrite(), e digitalRead(). Eles operam a 5 volts. Cada pino
pode fornecer ou receber um máximo de 40 mA e possui um resistor interno (desconectado
por default). Em adição alguns pinos possuem funções especializadas:

• Serial: 0 (RX) e 1 (TX); Serial 1: 19 (RX) e 18 (TX); Serial 2: 17 (RX) e 16 (TX); Serial 3:
15 (RX) e 14 (TX): Usados para receber (RX) e transmitir (TX) dados seriais TTL. Pinos 0 e
1 são também conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL.

• Interruptores externos: 2 (interruptor 0), 3 (interruptor 1), 18 (interruptor 5), 19


(interruptor 4), 20 (interruptor 3), e 21 (interruptor 2): Estes pinos podem ser configurados
para disparar uma interrupção por um valor baixo, um limite diminuindo ou subindo, ou uma
mudança em um valor.

32
III – PROJETO 1: PISCAR LED

• PWM: 0 a 13: Fornecem saída analógica PWM de 8-bits com a função analogWrite().

• SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS): Estes pinos dão suporte à comunicação SPI
que, embora suportada pelo hardware, ainda não está incluída na linguagem Arduino.

• LED: 13: Há um LED conectado ao pino digital 13. Quando o pino está em HIGH o LED se
acende.

• I2C: 20 (SDA) e 21 (SCL): Fornecem suporte à comunicação utilizando a biblioteca Wire. O


Mega2560 tem 16 entradas analógicas, cada uma das quais com 10 bits de resolução (1024
valores diferentes). Por padrão elas medem de 0 a 5 Volts, embora seja possível mudar o
limite superior usando o pino AREF e a função analogReference().

E ainda os pinos:

• AREF: Voltagem de referência para as entradas analógicas. Usados com analogReference().


• Reset: Marque este valor como LOW para resetar o microcontrolador. Tipicamente usado
para adicionar um botão de reset em shields que bloqueiam o que há na placa.

3.1.7.1 Alimentação de energia

O Arduino Mega 2560 pode ser alimentado pela conexão USB ou com uma fonte externa. A
entrada de alimentação é selecionada automaticamente.

33
III – PROJETO 1: PISCAR LED

Alimentação externa (e não USB) pode ser tanto de uma fonte, como de baterias. A fonte
pode ser conectada plugando um conector de 2,1mm, positivo no centro, na entrada de
alimentação. Cabos vindo de uma bateria podem ser inseridos nos pinos terra (Gnd) e
entrada de voltagem (Vin) do conector da energia (JACQUET, 2011).

Figura 5: Tipos de alimentação de energia do Arduino Mega 2560.

Fonte: Adaptação Próprio Autor.

A placa pode operar com alimentação externa entre 6 e 20 volts. No entanto, se menos de 7
volts forem fornecidos o pino de 5V pode fornecer menos que esta voltagem e a placa poderá
ficar instável. Com mais de 12V o regulador de voltagem pode superaquecer e danificar a
placa. A faixa recomendável é de 7 a 12 Volts.

3.1.7.2 Microcontrolador

Microcontrolador é um circuito integrado programável, capaz de executar as funções


gravadas em sua memória. Um microcontrolador possui em seu interior três unidades

34
III – PROJETO 1: PISCAR LED

funcionais principais: unidade central de processamento, memória e periféricos de entrada e


saída.

No mesmo chip estão integrados uma CPU, também chamada de core (núcleo), e circuitos
auxiliares (periféricos) como memória de programa, memória de dados, circuito de clock,
interface de comunicação serial, temporizadores/contadores, portas de I/O, dispositivos
periféricos como conversores analógico/digitais (ADC), conversores digitais/analógicos
(DAC) em casos, etc. Esses diferentes recursos embutidos em um microcontrolador variam
em função do modelo e do fabricante.

Figura 6: Características do microcontrolador ATmega2560.

Fonte: Adaptação Próprio Autor.

35
III – PROJETO 1: PISCAR LED

3.1.7.3 Tipos de memórias

• Memória Flash: Este tipo de memória é capaz de preservar os dados armazenados


por um longo período de tempo, sem a presença de corrente elétrica;

• RAM: Tipo de memória com acesso aleatório que mantém os dados armazenados
desde que seja mantida sua alimentação elétrica;

• EEPROM: Tipo de memória com acesso aleatório que mantém os dados

36
IV – LINGUAGENS C/C++

4. Código

Assista aos Vídeos

4.1 Documentação de código

Ser claro ao documentar é tão importante quanto se preocupar em desenvolver um código


limpo e eficiente, portanto seja explícito quanto aos parâmetros de entrada e saída de sua
função/rotina, etc.

Razão para adicionar comentários:


• Nota ou rota de recordação, especificação ou clarificação.

O comentário inicia com:


//
ou
/*
*
*
*/

37
IV – LINGUAGENS C/C++

Dessa maneira, podemos deixar uma nota para lembrar em outro momento para o que era
o código ou se alguma coisa ainda precisa ser introduzida ali.

4.2 Variáveis

Os computadores têm memória, sendo através da sua manipulação que os programas


eventualmente acabam por chegar aos resultados pretendidos (as saídas). As linguagens
de alto nível, como o C/C++, "escondem" a memória por trás do conceito de variável. As
variáveis são, na realidade, pedaços de memória a que se atribui um nome, que têm um
determinado conteúdo ou valor, e cujo conteúdo é interpretado de acordo com o tipo da
variável. Todas as variáveis têm um dado tipo. Uma variável pode ser, por exemplo, do
tipo int em C/C++. Se assim for, essa variável terá sempre um valor inteiro de uma gama de
valores admissível.

Os tipos das variáveis não passam, na realidade, de uma abstração. Todas as variáveis,
independentemente do seu tipo, são representadas na memória do computador por padrões
de bits (dígitos binários, binary digit), os famosos "zeros e uns", colocados na zona de
memória atribuída a essa variável. O tipo duma variável indica simplesmente como um
dado padrão de bits deve ser interpretado.

Cada variável tem duas características estáticas: um nome e um tipo, e uma característica
dinâmica: um valor. Antes de usar uma variável é necessário indicar ao compilador qual
o seu nome e tipo, de modo a que a variável possa ser criada, i.e., ficar associada a uma
posição de memória (ou várias posições de memória), e de modo a que a forma de
interpretar os padrões de bits nessa posição de memória fique estabelecida.

38
IV – LINGUAGENS C/C++

Uma instrução onde se cria uma variável com um dado nome, dum determinado tipo, e
com um determinado valor inicial denomina-se definição. A instrução: int a = 10;

é a definição de uma variável chamada a que pode guardar valores do tipo int (inteiros)
e cujo valor inicial é o inteiro 10. A sintaxe das definições pode ser algo complicada, mas
em geral tem a forma acima, isto é, o nome do tipo seguido do nome da variável e
seguido de uma inicialização.

Quando uma variável é definida, o computador reserva para ela na memória o número
de bits necessário para guardar um valor do tipo referido (essas reservas são feitas em
múltiplos de uma unidade básica de memória, tipicamente com oito bits, ou seja,
um byte). Se a variável não for explicitamente inicializada, essa posição de memória contém
um padrão de bits arbitrário. Por exemplo, se se tivesse usado a definição: int a;

a variável a conteria um padrão de bits arbitrário e, portanto, um valor inteiro


arbitrário. Para evitar esta arbitrariedade, que pode ter consequências nefastas num
programa se não se tiver cuidado, ao definir uma variável deve-se, sempre que possível e
razoável, atribuir-se lhe um valor inicial como indicado na primeira definição.

A atribuição de um valor a uma variável que acabou de ser definida é chamada a


inicialização. Esta operação pode ser feita de várias maneiras:

39
IV – LINGUAGENS C/C++

int a = 10; // como originalmente.


int a(10); // forma alternativa.

A sintaxe das definições de variáveis também permite que se definam mais do que uma
variável numa só instrução. Por exemplo,

int a = 0, b = 1, c = 2;

define três variáveis todas do tipo int.

Os nomes de variáveis (e em geral de todos os identificadores em C++) podem ser


constituídos por letras (sendo as minúsculas distinguidas das maiúsculas), dígitos decimais,
e também pelo caractere '_' (sublinhado ou underscore), que se usa normalmente para
aumentar a legibilidade do nome. O nome de uma variável não pode conter espaços nem
pode começar por um dígito. Durante a tradução do programa, o compilador, antes de fazer
uma análise sintática do programa, faz uma análise lexical. Esta análise é "rígida": os
símbolos detectados (palavras, sinais de pontuação, etc.) são tão grandes quanto possível,
pelo que lê. O Valor é sempre interpretado como um único identificador (nome), e não
por lê seguido de Valor.

40
IV – LINGUAGENS C/C++

Os nomes das variáveis devem ser tão autoexplicativos quanto possível. Se uma variável
guarda, por exemplo, o número de alunos numa turma, deve se chamar
número_de_alunos_na_turma ou então número_de_alunos, se o complemento "na

turma" for óbvio pelo contexto do programa. É claro que o nome usado para uma variável
não tem qualquer importância para o compilador, mas uma escolha apropriada dos nomes
pode aumentar grandemente a legibilidade dos programas.

Assista aos Vídeos

4.3 Operador de atribuição

O operador representado pelo sinal de igualdade (=) em C/C++ não diz que dois valores são
iguais. Ele na verdade, atribui o valor da direta à variável. Por isto, chamamos ele de operador
de atribuição. Sendo assim, não confunda este operador de atribuição com um operador de
igualdade. Ele transfere um valor a uma variável e esse valor pode ser utilizado
posteriormente.

Quando fazemos isto, o valor antigo da variável é perdido.

41
IV – LINGUAGENS C/C++

4.4 Comandos Internos


4.4.1 digitalWrite()

[Entradas e Saídas Digitais]

Aciona um valor HIGH ou LOW em um pino digital.

Se o pino for configurado como saída (OUTPUT) com a função pinMode(), sua tensão será
acionada para o valor correspondente: 5V (ou 3.3V em placas alimentadas com 3.3V) para
o valor HIGH, 0V (ou ground) para LOW.

Se o pino for configurado como entrada (INPUT), a função digitalWrite() irá ativar (HIGH) ou
desativar (LOW).

Se você não configurar o pino com pinMode() e OUTPUT, e conectar um LED ao pino,
quando chamar digitalWrite(HIGH), o LED pode aparecer um pouco apagado.

Assista aos Vídeos

42
IV – LINGUAGENS C/C++

4.4.2 HIGH e LOW

Quando se lê ou se escreve o estado de um pino digital há apenas dois valores possíveis


que esse pino pode assumir: HIGH e LOW

a) HIGH - O significado de HIGH (em relação a um pino) depende se o pino está


configurado como entrada ou saída (INPUT ou OUTPUT). Quando um pino é
configurado como INPUT com pinMode(), e lido com digitalRead(), o Arduino
(ATmega) irá retornar HIGH se:

• uma tensão maior que 3.0V está presente no pino (em placas 5V);
• uma tensão maior que 2.0V está presente no pino (em placas 3.3V).

Um pino pode também ser configurado como entrada (INPUT) com pinMode(), e
posteriormente colocado em HIGH com digitalWrite().

Quando um pino é configurado como saída (OUTPUT) com pinMode(), e colocado em estado
HIGH com digitalWrite(), a tensão no pino é:

• 5 volts (em placas 5V);


• 3.3 volts (em placas 3.3V).

Nesse estado, o pino pode fornecer corrente (ver limites para sua placa, geralmente 40.0mA).
Isso pode ser usado, por exemplo, para acender um LED que está conectado ao ground
através de um resistor limitador de corrente.

43
IV – LINGUAGENS C/C++

b) LOW - O significado de LOW depende também se o pino está configurado como


entrada ou saída (INPUT ou OUTPUT). Quando um pino é configurado como INPUT
com pinMode(), e lido com digitalRead(), o Arduino (ATmega) irá retornar LOW se:

• uma tensão menor que 1.5V está presente no pino (em placas 5V);
• uma tensão menor que 1.0V (proximamente) está presente no pino (em placas 3.3V).

Quando um pino é configurado como OUTPUT com pinMode(), e colocado em estado LOW
com digitalWrite(), a tensão no pino é 0 volts (tanto em placas de 5V como 3.3V boards).
Nesse estado o pino pode absorver corrente, o que pode ser usado, por exemplo, para
acender um LED conectado através de um resistor limitador de corrente aos +5 volts (ou
+3.3 volts).

4.4.3 delay()

[Funções Temporizadoras]

Pausa o programa por uma quantidade especificada de tempo (em milissegundos). Cada
segundo equivale a 1000 milissegundos.

Assista aos Vídeos

44
IV – LINGUAGENS C/C++

4.4.4 pinMode()

[Entradas e Saídas Digitais]

Configura o pino especificado para funcionar como uma entrada ou saída.

Assista aos Vídeos

4.4.5 OUTPUT

Configura o pino como Saída(OUTPUT).

Assista aos Vídeos

45
5. REFERÊNCIAS BIBLIOGRÁFICAS

BLOG BONILHAS. Arquitetura de Computadores. Disponível em:


<http://bonilhas.blogspot.com/2009/03/pdp-11-1970-dominou-os-minicomputadores.html>.
Acesso em: 14 de ago. 2019.

SITE NINJA DO LINUX. A História do Linux(Sistema Operacional). Disponível em:


<http://ninjadolinux.com.br/a-historia-do-unix/>. Acesso em: 14 de ago. 2019.

SITE EXAME. Tecnologia. Morte de Dennis Ritchie, criador do Linux, completa 3 anos.
Disponível em: <https://exame.abril.com.br/tecnologia/morte-de-dennis-ritchie-criador-do-
linux-completa-3-anos/>. Acesso em: 14 de ago. 2019.

BLOG PROFESSOR CAETANO. O conhecimento ao seu alcance!. 2016. Disponível em:


<https://professorcaetano.wordpress.com/microcontrolador/linguagem-arduino/>. Acesso
em: 14 de ago. 2019.

SITE FRITZING. Downloads. Disponível em: <https://fritzing.org/download/>. Acesso em:


14 de ago. 2019.

BLOG TECNOSOLUTION. Conhecendo a protoboard. Disponível em:


<http://tecnosolution.blogspot.com/2012/12/conhecendo-protoboard.html >. Acesso em: 25
de jul. 2019.

SITE DREAM INC. Protoboard. Disponível em:


<http://www.dreaminc.com.br/sala_de_aula/protoboard/>. Acesso em: 25 de jul. 2019.

SITE MUNDO DA ELÉTRICA. Capacitor, o que é? Como ligar?. Disponível em:


<https://www.mundodaeletrica.com.br/capacitor-o-que-e-como-ligar/>. Acesso em: 24 de jul.
2019.

SITE MILINFO HOBBY. Resistor de Carbono. Disponível em:


<http://www.milinfohobby.com.br/resistor-de-carbono-2,7-ohm-2r7-1-4w-5-cr25-p5008>.
Acesso em: 24 de jul. 2019.

46
BLOG ELETRONS DA DEPRESSÃO. Código de Cores de Resistores. Disponível em:
<http://eletronsdadepressao.blogspot.com/2015/01/codigo-de-cores-de-resistores.html>.
Acesso em: 24 de jul. 2019.

SITE MERCADOLIVRE. Jumpers. Disponível em:


<https://produto.mercadolivre.com.br/MLB-1254340485-kit-40-jumpers-macho-x-macho-
30cm-arduino-_JM>. Acesso em: 07 de ago. 2019.

SITE ROBOTISTAN. Original Arduino Mega 2560 R3. Disponível em:


<https://www.robotistan.com/original-arduino-mega-2560-r3-new-version-board>. Acesso
em: 18 de jul. 2019.

SITE EMBARCADOS. Arduino MEGA 2560. Disponível em:


<https://www.embarcados.com.br/arduino-mega-2560/>. Acesso em: 19 de jul. 2019.

JACQUET, H.A.P. et al. Introdução ao Arduino: Conceitos Gerais e Programação. 2011.


Fundação Universidade Federal do Mato Grosso do Sul – Faculdade de Computação
(FACOM), Campo Grande, 2011. Disponível em:
<http://lscad.facom.ufms.br/~wiki/images/7/71/Presentation_IIDESTACOM_2011_1.pdf>.
Acesso em: 28 de jul. 2019.

47

Вам также может понравиться