• Nenhum resultado encontrado

Introdução ao Arduino

N/A
N/A
Protected

Academic year: 2021

Share "Introdução ao Arduino"

Copied!
39
0
0

Texto

(1)

Introdu¸c˜ao ao Arduino

Cassio Trindade Batista Iago Souza de Sousa

Universidade Federal do Par´a Instituto de Tecnologia

Faculdade de Engenharia da Computa¸c˜ao e Telecomunica¸c˜oes III Semana Acadˆemica da Faculdade de Ciˆencia da Computa¸c˜ao

(2)

Cronograma

Arduino Overview Vantagens Diferentes plataformas Especifica¸c˜oes µControlador × µProcessador Pinos de alimenta¸c˜ao Microcontrolador ATmega328p Programa¸c˜ao Background info Experiˆencias

(3)

Overview

Baseado em “Introduction to Arduino”, de Alan G. Smith O que ´e Arduino?

O Hardware;

O ambiente de desenvolvimento;

A comunidade (https://www.arduino.cc)

Arduino ´e a placa de desenvolvimento constru´ıda sobre o microcontrolador ATmega, da fabricante Atmel, contendo uma IDE para programa¸c˜ao e um f´orum/comunidade para discuss˜ao.

(4)

Vantagens

Barato: U$ 50.00, em m´edia

Cross-Platform: Windows, OSX, Linux.

Ambiente de programa¸c˜ao: IDE easy-to-use para iniciantes Open-source software: Pode ser expandido atrav´es do C++

Open-source hardware: Designers de circuito podem fazer sua

(5)

Arduino: Diferentes Plataformas

(6)
(7)

Arduino UNO — Especifica¸c˜oes

Microcontrolador: ATmega328P 14 pinos digitais de I/O (6 de PWM) 6 pinos anal´ogicos

32 KB de mem´oria Flash (armazenamento de sketch)

2 KB de mem´oria SRAM (cria¸c˜ao e manipula¸c˜ao de vari´aveis) 1 KB de mem´oria EEPROM

(8)

MicroControlador × MicroProcessador

Ambos realizam opera¸c˜oes de busca, decodifica¸c˜ao e execu¸c˜ao;

Microprocessador: CI respons´avel pelo processamento de dados, como uma ULA, mas precisa receber ordens externas e ter outros componentes externos para funcionar;

Microcontrolador: Cont´em µprocessador, RAM, ROM, timers,

I/Os... tudo em um ´unico CI;

O Arduino ´e o quˆe, afinal?

Arduino ´e a PCB criada para funcionar sobre o microcontrolador ATmega, da Atmel.

(9)

Arduino x ATmega328p

(10)

Pinos de Alimenta¸c˜ao

Vin: Entrada de alimenta¸c˜ao da placa quando utilizada uma

fonte externa.

5V: Fonte de alimenta¸c˜ao para o microcontrolador e outros componentes da placa.

3V3: Alimenta¸c˜ao de 3,3 V fornecida pelo controlador USB.

(11)

Programa¸c˜ao

A linguagem utilizada no Arduino tem como referˆencia C++. setup(): fun¸c˜ao utilizada para inicializar valores assim que a placa ´e ligada.

loop(): fun¸c˜ao executada v´arias vezes at´e que haja alguma interferˆencia.

pinMode(): Inicializa um pino como entrada (INPUT) ou sa´ıda (OUTPUT).

pinMode(2, INPUT); //Setando o pino 2 como entrada pinMode(13, OUTPUT); //Setando o pino 13 como sa´ıda

(12)

Programa¸c˜ao

digitalWrite(): Escreve uma informa¸c˜ao digital, ou seja, 0 (LOW, 0V) ou 1 (HIGH, 5V) em um pino de sa´ıda.

digitalWrite(13, HIGH); //tens~ao alta no pino 13 digitalWrite(13, LOW); //tens~ao baixa no pino 13

digitalRead(): Lˆe uma informa¸c˜ao digital, ou seja, 0 (0V) ou 1 (5V) em um pino de entrada.

int valor = digitalRead(2); //L^e pino 2

analogWrite(): Escreve uma informa¸c˜ao anal´ogica, ou seja,

um valor inteiro de 8 bits de 0 `a 255 em um pino de sa´ıda

analogWrite(13, 250); //tens~ao [0V--5V] [0--255] pino 13

analogRead(): Lˆe uma informa¸c˜ao anal´ogica, geralmente de

sensores

(13)
(14)

Serial Monitor

(15)

BG Eletrˆonica: Protoboard

Liga¸c˜ao em s´erie: A e D: horizontal B e C: vertical

(16)
(17)

BG Eletrˆonica: LED

Sobre o ground (GND): Fecha o circuito e permite circula¸c˜ao de corrente el´etrica

(18)

BG Programa¸c˜ao: Tricks

Case sensitive, assim como no C++:

digitalWrite(PINO, HIGH); //correto digitalWrite(PINO, high); //errado DigitalwriTe(PINO, HIGH); //errado

Coment´arios:

/* Isto ´e um coment´ario */

(19)

Parte Pr´atica

Parte Pr´

atica:

Experiˆ

encias

(20)

Exp. 1: Sem´aforo

Objetivo: Fazer a sinaliza¸c˜ao de duas vias que se cruzam Materiais: 6 LEDs (ou 2 LEDs RGB).

(21)

Exp. 1: Sem´aforo – Funcionamento

Via 1

Via 2

1

Fechado

Aberto

2

Fechado

Aten¸

ao

3

Fechado Fechado

4

Aberto

Fechado

5

Aten¸

ao

Fechado

6

Fechado Fechado

(22)

Exp. 1: Sem´aforo – C´odigo (1/2)

#define LED_R1 7 //R vermelho #define LED_Y1 8 //Y amarelo #define LED_G1 9 //B verde

5 #define LED_R2 10 #define LED_Y2 11 #define LED_G2 12 void setup() {

10 Serial.begin(9600); //baud rate for serial monitor /* LEDs para o primeiro semaforo */

pinMode(LED_R1, OUTPUT); pinMode(LED_Y1, OUTPUT);

15 pinMode(LED_G1, OUTPUT);

/* LEDs para o segundo semaforo */ pinMode(LED_R2, OUTPUT);

pinMode(LED_Y2, OUTPUT);

20 pinMode(LED_G2, OUTPUT); }//fecha setup()

(23)

Exp. 1: Sem´aforo – C´odigo (2/2)

void loop() {

// #1 fechado na primeira via e aberto na segunda digitalWrite(LED_R1, HIGH); digitalWrite(LED_Y1, LOW); 5 digitalWrite(LED_G1, LOW); //-digitalWrite(LED_R2, LOW); digitalWrite(LED_Y2, LOW); digitalWrite(LED_G2, HIGH); delay(2000); //2 seconds 10

// #2 fechado na primeira via e atencao na segunda digitalWrite(LED_R1, HIGH); digitalWrite(LED_Y1, LOW); digitalWrite(LED_G1, LOW); //-15 digitalWrite(LED_R2, LOW); digitalWrite(LED_Y2, HIGH); digitalWrite(LED_G2, LOW); delay(2000); //2 seconds

(24)

Desafio 1: Sem´aforo e Bot˜ao

Objetivo: Acionar um sem´aforo utilizando um bot˜ao Materiais: 3 LEDs (ou 1 LED RGB) e 1 bot˜ao

(25)

Desafio 1: Sem´aforo e Bot˜ao

Objetivo: Acionar um sem´aforo utilizando um bot˜ao Materiais: 3 LEDs (ou 1 LED RGB) e 1 bot˜ao

Background: Experiˆencia 1

Sugest˜ao:

(26)

Exp. 2: Entrada e Sa´ıda Serial (Monitor)

Objetivo: Ler uma string do serial monitor e imprim´ı-la tamb´em no serial monitor

Materiais: — Biblioteca Serial

Begin() Read() Print()

(27)

Exp. 2: Entrada e Sa´ıda Serial – C´odigo

char str[30] = ""; // minha string void setup() {

Serial.begin(9600); //baud rate

5 Serial.println("Escreva uma mensagem acima"); }

void loop() {

int i = 0; //iterator

10 if(Serial.available() > 0) { while(Serial.available()) {

str[i++] = (char) Serial.read(); // le char por char }

for(i=0; i<30; i++) {

15 Serial.print(str[i]); }

(28)

Exp. 3: Sensor de Luminosidade

Objetivo: Simular o controle de luz do ambiente

Definir faixas de luminosidade baseadas no feedback do sensor Claro: Tsensor >80.0 → Dois LEDs apagados;

Escuro: Tsensor <20.0 → Dois LEDs acesos; Ideal: → Um LED aceso e outro apagado;

(29)
(30)

Exp. 3: Sensor de Luminosidade – C´odigo (1/2)

void setup() {

Serial.begin(9600); //baud rate

/* define os pinos de sa~Ada (LEDs) */

5 pinMode(12, OUTPUT); pinMode(13, OUTPUT); }

(31)

Exp. 3: Sensor de Luminosidade – C´odigo (2/2)

void loop() {

float T_sensor = 100.0*analogRead(A0)/1024.0; Serial.print("Sensor: "); Serial.println(T_sensor); 5 if(T_sensor > 80.0) { Serial.println(" TA CLARO! "); digitalWrite(12, LOW); digitalWrite(13, LOW); 10 } else if(T_sensor < 20.0) { Serial.println(" TA ESCURO! "); digitalWrite(12, HIGH); digitalWrite(13, HIGH); } else { 15 Serial.println(" TA OTIMO! "); digitalWrite(12, HIGH); digitalWrite(13, LOW); }

(32)

Exp. 4: Brincando com Potenciˆometro

Objetivo: Acender somente um LED de acordo com uma faixa espec´ıfica de tens˜ao, a qual ser´a varia de acordo com a

resistˆencia do potenciˆometro. `A medida que o giramos o

potenciˆometro, a fila de LEDs acesos “anda”. Materiais: 1 potˆenciˆometro e 5 LEDs

(33)
(34)

Exp. 4: Potenciˆometro – C´odigo (1/2)

void setup() { Serial.begin(9600); pinMode(8, OUTPUT); 5 pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); }

(35)

Exp. 4: Potenciˆometro – C´odigo (2/2)

void loop() {

/* tensao: [0--5V] */

float tensao = 5.0*analogRead(A0)/1024.0; acender((int)(tensao+8.0));

5 delay(300); }

void acender(int pin) { digitalWrite(8, LOW); 10 digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); digitalWrite(pin, HIGH); 15 }

(36)

Shields

Placas de circuito que podem ser conectadas ao Arduino, expandindo sua capacidade.

Podem conter displays de LCD, sensores, m´odulos de comunica¸c˜ao, rel´es, etc.

Arduino Ethernet Shield R3

Especificado para conectar o Arduino a uma rede local. A maneira mais simples e mais barata de ligar o Arduino `a internet.

Bluetooth Low Energy (BLE) Shield for Arduino 2.0

Adiciona ao Arduino a capacidade de conversar com outros dispositivos Bluetooth.

(37)
(38)
(39)

Obrigado!

Referências

Documentos relacionados

INTRODUÇÃO A automatização de um processo pode ser realizada através de programação com Linguagem C em um microcontrolador Arduino e com um Raspberry pi 3 que executa as funções

rgeom(n, p) distribui¸ c˜ ao Geom´ etrica(p) runif(n, a, b) distribui¸ c˜ ao Uniforme(a,b) rexp(n, lambda) distribui¸ c˜ ao Exponencial(lambda) rnorm(n, mean, sd) distribui¸ c˜

Um procedimento ´ e um bloco de programa, contendo in´ıcio e fim e ser´ a identificado por um nome atrav´ es do qual ser´ a referenciado em qualquer parte do programa principal ou

Para evitar isso, vocˆ e pode mover os dois comandos do preˆ ambulo para algum lugar ap´ os o comando \tableofcontents ou definitivamente n˜ ao us´ a-los, porque vocˆ e ver´ a que

Caso o usu´ ario deseje executar novamente um mesmo comando ´ e necess´ ario apenas cha- mar na shell uma referˆ encia ao comando desejado com o caracter “!”, como mostra o exemplo

ramdomSeed(analogRead(0)); - Determina valores aleat´ orios a partir de um valor inicial definido pela entrada anal´ ogica.. random(valor maximo); - Gera um valor aleat´ orio dentro

Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come¸ cando do centro, indo at´ e as extremidades e voltando para

As entradas de referˆ encia do arquivo .bib s´ o aparecer˜ ao na p´ agina de referˆ encias se forem citadas no texto. No fim do