Escolar Documentos
Profissional Documentos
Cultura Documentos
Este manual de apoio foi concebido com o intuito de preparar os estudantes da 11ª Classe
do Instituto Médio Industrial Simione Mucune (IMISM), do curso de Electrónica e
Telecomunicações e Electrónica Industrial e Automação. Para a criação de projectos com
arduinos, utilizando como ferramenta de programação a linguagem C e IDE DO
ARDUINO.
Estruturas do Arduino
Caso o técnico não quiser usar Pull Up e Pull Down Externo, os microcontroladores
ATMEGA já possuem resistores internos de Pull Up e Pull Down, dessa forma não é
necessário usar um resistor externo ligado ao circuito, bastando apenas programar o
mesmo.
digitalRead(): permite ler o valor do pino digital do Arduino e atribuí-lo a uma variável
para que seja tomada uma acção posteriormente.
Sintaxe: variável= digitalRead (pino)
Exemplo
void loop() {
int liga=digitalRead(3);
Serial.println (liga);
delay (100);
void loop() {
digitalWrite (5,HIGH);
digitalWrite (4,LOW);
tempo = tempo+2;
}
void loop ()
{
int tempo;
}
O tipo de dados char é utilizado para representação de caracteres ASCII de 8 bits. Cada
variável do tipo char pode representar um caracter ASCII, o tipo int é utilizado para
representar números inteiros de 16 bits (0 a 65535). Estes tipos de dados são amplamente
usados em programação C.
O tipo char e int representam números inteiros e não podem ser utilizados para representar
números fracionários. Para isso, deve ser utilizado o tipo float, também chamado de ponto
flutuante.
O tipo float deve ser evitado ao máximo e restrito apenas às operações que realmente
necessitarem de um tipo de dados como este.
Modificadores de tipos
Podemos utilizar comandos especiais do C para obter outros tipos de dados. Esses
comandos especiais são chamados de modificadores de tipo e são os seguintes:
Signed, unsigned, short, e long.
O modificador de tipo signed pode ser utilizado para modificar um tipo base de dados
para que ele possa representar um número positivo ou negativo.
Obs: tipos de float, double e long double são considerados do mesmo tipo.
Declaração de Variáveis
Definir uma variáveis é cria-la na memória (alocá-la), dar a ela um nome e especificar o
tipo de dado que nela vai armazenar variável, do ponto de vista da área de programação,
é uma região de memória previamente identificada que tem por finalidade armazer os
dados ou informações de um programa por um determinado espaço de tempo. Uma
variável e limita-se a armazenar apenas um valor por vez.
Sintaxe para criação de uma variável em C; <tipo> nome_variavel;
O tipo deve ser um tipo de dado válido em C tais como: char, int, float, com ou sem seus
modificadores, unsigned, signed, short e long. E nome_variavel é o nome da variável
adoptada pelo programador.
Em C, podemos declarar variáveis do mesmo tipo em uma única linha de programa,
bastando apenas separá-las por vírgulas e a ultima variável separa-lo por ponto e virgula.
Outro aspecto importante da declaração das variáveis é o local onde são declaradas.
Basicamente, uma Variável pode ser declarada em dois pontos distintos do programa:
Variáveis globais e variáveis local.
Variáveis globais:
No corpo principal do programa: variáveis declaradas no corpo principal do programa
são variáveis globais que podem ser a cessadas por qualquer função do programa. Essas
variáveis estão fora de qualquer função do programa inclusive a função setup ().
Exemplos
1)
int contador;
char a;
void main ()
{
contador = contador +10;
}
int contador;
char a ;
void subrotina ()
{
contador = contador -20;
a=100;
}
void loop ()
{
contador = contador +10;
a=50;
Variáveis Locais:
Ao contrário das variáveis globais, uma variável local somente existe dentro da função
em que foi declarada. Isto significa que uma variável somente existe enquanto a função
esta sendo executada.
No momento que ocorre o retorno da função, as variáveis locais são descartadas;
tempo = tempo+2;
}
void loop ()
int tempo;
Nota: repare que avariável “ tempo” foi declarada unicamente dentro da função void loop
() e que seus dados estão sendo manipulados por outra função chamada subrotina (). Ao
compilarmos este programa, certamente o compilador apresentará um erro de compilação
nos informando que avariável “tempo” não foi definida. Esse é um erro comum que
muitos programadores inexperientes cometem na linguagem C, pois esquecem que uma
variável local somente tem validade dentro da função que a declarou.
Tipos de operadores
Adição e Subtracção
Os operadores de adição e subtracção são muito simples de serem utilizados.
Exemplo:
c=a+b;
d=d+b;
c=c-a;
a=d-a+c;
Multiplicação e Divisão
c= a*b;
d=d*d;
c=c/a;
a=(d*a)/c;
O operador %
O operador % é utilizado para retornar o resto de uma operação de divisão inteiro.
Exemplo
7/3=2, em uma divisão inteira, sendo o resto igual a 1, assim, o valor de 7/3=2 e o valor
de 7%3 = 1.
Exemplo:
c=c+1;
No exemplo acima avariável c foi incrementada em uma unidade, podemos ter o mesmo
resultado da operação acima através do operador de Incremento que temos o mesmo
resultado;
C++;
c--;
variavel_a= variavel_b++;
Observe que o valor da variável variavel_b é atribuído a variável variavel_a, e logo após
isso, o valor da variavel_b é incrementado em 1 unidade;
Variavel_a = variavel_b--;
Note que primeira linha comando, variavel_b é incrementada em 1 unidade é depois que
atribuí seu valor a variável variavel_a. Na segunda linha, o valor da variavel_b é
incrementada em 1 antes de atribuir seu valor a variavel_a;
Operadores Relacionais
Os operadores relacionais servem para comparar expressões e são muito utilizados para
comparar condições de controlo do fluxo de execução de programa.
Exemplo:
if (!a) b=c;
Nota: operador de negação “!” NOT, por esse motivo avariável “a” assumirá o valor
verdadeiro, já que possui valor 0.
E de salientar que existem também operadores bit a bit, que são utilizados para realizar
operações lógicas entre elementos ou variáveis.
Exemplo
int a,b,c;
a=10;
b=10;
b=a>>2;
c=b<<5;
No exemplo acima, os valores dos bits da variável “a” foram deslocadas 2 vezes para a
direita, enquanto os bits da variável b foram deslocada 5 vezes para a esquerda.
Estruturas de Controlo
As estruturas de controlo são usadas nos programas em lugares em que necessitamos que
a máquina faça repetidas operações ou necessite de tomadas de decisão.
Comando if
A sua sintaxe é:
if (condição) comando;
Ou
Exemplo
int botao=3;
void setup () {
pinMode(3,INPUT);
pinMode (4,OUTPUT);
if (botao==HIGH) {
O comando if-else
A sua sintaxe é:
If (condição)
Comando1;
[else comando2;]
Exemplo
int botao=3;
void setup () {
pinMode(3,INPUT);
pinMode (4,OUTPUT);
if (botao==HIGH) {
Existem situações em que o teste de uma condição não é suficiente para tomar uma
decisão. Pode ser necessário testar mais do que uma condição.
if (condição1)
if (condição2)
if (condição3)
instrução1;
else
instrução2;
else
else
instrução4;
Podemos criar arranjos de comandos através da estrutura if, else, if. Os arranjos são
criados bastando colocar estruturas if alinhados com outras estruturas if.
Sintaxe é :
if (condição4) instrução 4;
Exemplo
void setup () {
int contador=10;
int sinal=5;
void setup () {
int contador=10;
int sinal=5;
sinal ++;
contador=17;
sinal --;
contador=15;
Comando switch
Sintaxe:
Switch (expressão)
[default:comando;]
Exemplo:
void setup () {
int contador=10;
int sinal=5;
Switch (contador)
default: sinal=0;
Estruturas de Repetição
Os laços de repetição servem para repetir uma ou mais vezes determinada instruções ou
blocos de instruções.
A estrutura for (ou ciclo for ); adapta-se particularmente a situação em que o número de
iteração é conhecido à partida.
Sintaxe:
comando;
ou
Comando1;
Comando2;
Comandon;
Exemplo
int liga;
void setup () {
pinMode(4, OUTPUT);
delay(1000);
delay(100);
Sintaxe:
While (condição)
Instrução;
Exemplo
int a=20;
void setup () {
pinMode (3,OUTPUT);
Serial.begin(9600);
while (a>=5) {
a++;
Serial.println(" a " );
digitalWrite(3, HIGH);
O comando do – while forma uma estrutura de repetição diferente dos comandos while e
for a sua diferença fundamental com relação as outras tradicionais laços do loop while e
for está no facto da avaliação da condição de teste ser final do laço de repetição, contrário
dos outros laços que vimos, que testam as condições no início da cada ciclo.
Sintaxe
do
Comando1;
Comando2;
Exemplo
int a=0;
void setup () {
pinMode (3,OUTPUT);
Serial.begin(9600);
do
a++;
Serial.println(" a " );
digitalWrite(3, HIGH);
} while (a>=100);
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
void loop() {
digitalWrite (2,HIGH);
digitalWrite (3,LOW);
delay(1000);
digitalWrite (2,LOW);
digitalWrite (3,HIGH);
delay(1000);
int led2=3;
int tempo=1000;
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
void loop() {
digitalWrite (led1,HIGH);
digitalWrite (led2,LOW);
tempo;
digitalWrite (led1,LOW);
digitalWrite (led2,HIGH);
tempo;
Usando botão para Ligar e Desliga uma determinada saída que está conectado num
dado pino.
int led1=2;
int botao=5;
void setup() {
pinMode(2,OUTPUT);
pinMode(botao,INPUT_PULLUP);
void loop() {
if (digitalRead(botao)==0){
digitalWrite (led1,HIGH);
else
digitalWrite (led1,LOW);
int led1=2;
int botao=5;
int botao1=7;
void setup() {
pinMode(2,OUTPUT);
pinMode(botao,INPUT_PULLUP);
pinMode(botao1,INPUT_PULLUP);
void loop() {
digitalWrite (led1,HIGH);
else
digitalWrite (led1,LOW);
#include <LiquidCrystal.h>
void setup() {
lcd.begin(16, 2);
lcd.print("Ola Angola");
void loop() {
int BOTAO=7;
int led=9;
#include <LiquidCrystal.h>
void setup() {
pinMode(7,INPUT_PULLUP);
pinMode(9,OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0, 1);
delay(1000);
void loop() {
if (digitalRead(BOTAO)==0) {
digitalWrite(led,HIGH);
lcd.setCursor(0, 1);
lcd.print("CARGA ACTIVA");
delay(500);
} else {
digitalWrite(led,LOW);
lcd.setCursor(0, 1);
lcd.print("CARGA DESACTIVA");
delay(500);