Arduino

26
Arlindo Santos [email protected] * ARDUINO 07-06-2022 Arlindo Santos - IPB 1

description

Apresentação do arduino e suas funcionalidades. Código de 4 aplicações básicas ...

Transcript of Arduino

Page 1: Arduino

10-04-2023Arlindo Santos - IPB 1

Arlindo Santos

[email protected]

* ARDUINO

Page 2: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 2

*Objetivos?

*Dar a conhecer novas abordagens no desenvolvimento de aplicações informáticas

*Suscitar curiosidade por parte dos alunos (alguns, não todos)

*Mostrar o que o IPB e os seus alunos fazem

*E também para eu aprender com o feedback de todos!

Page 3: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 3

*Vamos esquecer o rato e o teclado

*Mix entre a informática (programação) e a eletrónica

Page 4: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 4

*O princípio …

Page 5: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 5

*simplificar

Hoje, pequenos dispositivos eletrónicos, como o Arduino, podem facilmente comunicar com computador, e oferecer ao utilizador formas de interação ilimitadas que criam emoções no utilizador.

Mais informação: Documentário http://vimeo.com/31389230

Page 6: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 6

*Porque o arduino?

*Baixo custo ~20 euros.

*Modularidade.

*Facilidade de uso.

*Facilidade de programação.

*Curto tempo de aprendizado.

*Curto tempo de retorno de implementação.

*Facilidade de troca de informações.

*Implementa a filosofia DiY!

Page 7: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 7

*Porque o arduino?

* Possui compatibilidade com as linguagens de programação C e C++.

*Apresenta ambiente de desenvolvimento integrado (IDE).

*Utiliza filosofia de projeto open-source.

* Existência de módulos de expansão - shields.

*Comunidade de utilizadores, programadores e autores.

Page 8: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 8

*Arduino: componentes

Porta USB

Alimentação

Portas de dados analógicos

Portas de dados digitais

Ver mais em : http://arduino.cc/en/Main/ArduinoBoardDiecimila

Microcontrolador

Page 9: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 9

*Datasheet

Microcontrolador ATmega328Tensão de operação 5 VTensão de entrada (recomendada) 7-12 V

Tensão de entrada (limites) 6-20 V

Pinos E/S digitais 14

Pinos de entrada analógicos 6

Corrente CC por pino E/S 40 mACorrente CC por pino 3.3 V 50 mA

Memória Flash 32 KB, sendo 2 KB utilizados pelo bootloader

SRAM 2 KBEEPROM 1 KBVelocidade de Clock 16 MHz

Page 10: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 10

*Arduino: outros formatos

LilyPad ArduinoArduino Mega- 126k (Flash Memory)54 Pinos de I/O

Page 11: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 11

*Arduino: outros formatos

Arduino BT (Bluetooth) Arduino Pro

Ver mais em: http://arduino.cc/en/Main/Hardware

Page 12: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 12

Sensores Atuadores

acelerómetrotemperatura

humidade

vibração

led’s

LCD’s

laser

Page 13: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 13

*Mãos à obra!

Page 14: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 14

*… 5 passos

* É necessário que o arduino faça o que queremos!

* Então é necessário:1. Descarregar o IDE

http://arduino.cc/en/Main/Software

2. Ideia

3. Programar (aprender a linguagem)http://arduino.cc/en/Reference/HomePage

4. Carregar o programa para a memória do Arduino

5. Testar!

Page 15: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 15

*Primeira aplicação

Ideia?

- Pisca-pisca

Colocar um led em modo intermitente.

Page 16: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 16

*Primeira aplicação

/*

Programa: Blink, * The basic Arduino example. * http://www.arduino.cc/en/Tutorial/Blink

*/

int ledPin = 12; // Usar o Pino de número 13 do Arduino e ele será chamado "ledPin" e // será uma variável inteira.

/*

Função chamada automaticamente na primeira vez que o código é lido.

Devemos dizer como o Pino deve se comportar.

*/

void setup() {/* PinMode(Nome do pino, ENTRADA ou SAÍDA).

Temos OUTPUT=Saída e INPUT=Entrada.

O nome do pino é LedPIN.

*/

pinMode(ledPin, OUTPUT); }

Page 17: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 17

*Primeira aplicação

/* Função onde tudo acontece. Chama-se Loop porque é executada infinitas vezes.

*/

void loop()

{

digitalWrite(ledPin, HIGH);

/*

Temos HIGH= LIGADO e LOW=DESLIGADO

O nome do pino é LedPIN, que é o mesmo Pino 13

*/

delay(1000); // Atraso de 1 segundo

digitalWrite(ledPin, LOW); // Temos LOW=DESLIGADO

delay(1000); // Atraso de 1 segundo

}

Page 18: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 18

*A ter em atenção

*Instalar drivers *Pasta drivers\FTDI

USB Drivers

*Verificar o nome da porta COM

Page 19: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 19

*A ter em atenção

*Compilar

*Salvar

*Upload

*Selecionar o board e a porta

Page 20: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 20

*Segunda aplicação

Ideia?

- Botão

O utilizador pressiona um botão.

Page 21: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 21

*Segunda aplicação

int Pin = 13;

void setup()

{

Serial.begin(9600);

pinMode(Pin, INPUT);

}

void loop()

{

int value = digitalRead(Pin);

Serial.println(value, DEC);

delay(1000);

}

Page 22: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 22

*Terceira aplicação

Ideia?

- liga e desliga manualmente

O utilizador liga e desliga o Led.

Page 23: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 23

*Terceira aplicação

int PinBotao = 13;

int PinLed = 12;

void setup()

{

pinMode(PinLed, OUTPUT);

pinMode(PinBotao, INPUT);

}

void loop()

{

int value = digitalRead(PinBotao);

if(value == 1)

digitalWrite(PinLed, HIGH);

else

digitalWrite(PinLed, LOW);

delay(1000);

}

Page 24: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 24

*Quarta aplicação

Ideia?

- Comunicar com o computador

O utilizador inicia a animação e quando esta finaliza o led acende.

Page 25: Arduino

ARDUINO

10-04-2023Arlindo Santos - IPB 25

*Quarta aplicação

int PinBotao = 13;

int PinLed = 12;

int recebido = 0;

int state = 0;

void setup()

{

pinMode(PinLed, OUTPUT);

pinMode(PinBotao, INPUT);

Serial.begin(9600);

digitalWrite(PinLed, LOW);

}

void loop()

{

int value = digitalRead(PinBotao);

digitalWrite(PinLed, LOW);

if(value == 1 && state == 0)

{

Serial.println(value, DEC);

state = 1;

}

if (Serial.available() > 0)

{

digitalWrite(PinLed, HIGH);

recebido = Serial.read();

Serial.println(recebido, DEC);

state = 0;

delay(5000);

}

delay(100);

}