introdução à plataforma arduino - eaduino.com.br · agenda 10:00 – boas-vindas 10:30 –...

31
29/março/2014 Fatec São Caetano do Sul Desenvolvendo jogos com ArduinoLeandro Ramos Leonardo Toledo Robson Machado

Upload: tranduong

Post on 04-May-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

29/março/2014

Fatec – São Caetano do Sul

“Desenvolvendo jogos com Arduino”

Leandro Ramos

Leonardo Toledo

Robson Machado

Page 2: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Agenda

10:00 – boas-vindas

10:30 – introdução a plataforma Arduino

11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo da velha)

12:30 – intervalo

13:30 – divisão dos grupos e atividades práticas

17:00 - encerramento

http://www.eaduino.com.br 2

Page 3: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Arduino Day 2014

Este evento é uma celebração mundial dos primeiros 10

anos do Arduino.

http://www.eaduino.com.br 3

Page 4: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Arduino

• Arduino é uma

plataforma de

hardware e software

open source

• Linguagem de

programação

compatível com C/C++

• Ambiente de

desenvolvimento

integrado

4 http://www.eaduino.com.br

Page 5: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Arduino

• Baixo custo

comparado a outras

plataformas de

desenvolvimento

5 http://www.eaduino.com.br

Page 6: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Microcontrolador

• Um microcontrolador é um

computador em uma única

pastilha.

• É programado para tarefas

específicas, diferentemente de

um microprocessador de

propósito geral.

6 http://www.eaduino.com.br

Page 7: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Arduino UNO

7 http://www.eaduino.com.br

Page 8: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Shields

• Placas que ampliam e extendem as funcionalidades da

placa base.

• http://www.shieldlist.org/

8 http://www.eaduino.com.br

Page 9: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Ambiente de Desenvolvimento

• O ambiente de desenvolvimento Arduino contém um

editor de texto com os recursos necessários para

escrever um programa, compilá-lo e transferí-lo para a

placa Arduino.

• Os programas escritos para Arduino são chamados de

sketches (esboços).

9 http://www.eaduino.com.br

Page 10: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Ciclo de Desenvolvimento

10 http://www.eaduino.com.br

Page 11: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

“Hello World”

/*

Blink

Turns on an LED on for one second, then off for

one second, repeatedly.

This example code is in the public domain.

*/

void setup() {

// initialize the digital pin as an output.

// Pin 13 has an LED connected on most Arduino boards

pinMode(13, OUTPUT);

}

void loop() {

digitalWrite(13, HIGH); // set the LED on

delay(1000); // wait for a second

digitalWrite(13, LOW); // set the LED off

delay(1000); // wait for a second

}

11 http://www.eaduino.com.br

Page 12: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

TVout

• Biblioteca responsável por gerar sinais a partir de um

microcontrolador Atmel AVR.

• Conexão extremamente simples: um cabo coaxial e dois

resistores.

• Utiliza apenas dois pinos digitais e terra.

• Página do projeto: http://code.google.com/p/arduino-tvout/

http://www.eaduino.com.br 12

Page 13: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

TVout – “Hello World” #include <TVout.h>

#include <fontALL.h>

TVout TV;

void setup() {

TV.begin(PAL,120,96);

TV.select_font(font6x8);

TV.println("Hello World");

TV.println("Arduino Day 2014");

TV.delay(10000);

TV.clear_screen();

TV.println("Fatec SCS - EADuino");

}

void loop() {

}

http://www.eaduino.com.br 13

Page 14: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Tic-Tac-Toe – Jogo da Velha

• Um jogo com regras bem simples

• Um tabuleiro ou uma folha de papel com nove lacunas

• Cada jogador escolhe jogar (marcar) xis ou círculo

(Noughts = O, Crosses = X)

• Ganha que conseguir marcar três xis ou três círculos em

linha (horizontal, vertical ou diagonal)

http://www.eaduino.com.br 14

Page 15: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Hardware

• Nove chaves tácteis, utilizando apenas um pino

analógico.

• Divisor de tensão

http://www.eaduino.com.br 15

Page 16: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Software - sketch inicial

1. Declara uma matriz unidimensional com 9 elementos

(tabuleiro)

2. Declara demais variáveis globais

3. Exibe mensagem de boas vindas

4. Verifica se é jogador 1 (X) ou jogador 2 (O)

5. Aguarda o pressionar de um botão

6. Verifica a qual posição no tabuleiro corresponde o

botão pressionado

7. Marca com X ou O a posição no tabuleiro

8. Verifica se há vencedor

9. Volta ao passo 4

http://www.eaduino.com.br 16

Page 17: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Software - sketch inicial

char board[] = {

' ',' ',' ',' ',' ',' ',' ',' ',' '};

byte pinButton = 0;

byte button = 255;

boolean player1 = true; // X, player2 = O

http://www.eaduino.com.br 17

Page 18: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Software - sketch inicial

void setup() {

Serial.begin(9600);

Welcome();

}

http://www.eaduino.com.br 18

Page 19: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Software - sketch inicial

void Welcome() {

Serial.println("+=========================+");

Serial.println("Tic-Tac-Toe");

Serial.println("EADuino - Arduino Day 2014");

Serial.println("+=========================+");

}

http://www.eaduino.com.br 19

Page 20: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Software - sketch inicial

void loop() {

int value;

if( player1 ) Serial.print("Player 1");

else Serial.print("Player 2");

Serial.print("\tWait...");

delay(2000);

Serial.println("\tGo!");

while( button == 255 ) {

http://www.eaduino.com.br 20

Page 21: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Software - sketch inicial

value = analogRead( pinButton );

if( value >= 900 ) button = 6;

if( value >= 800 && value < 900 ) button = 7;

if( value >= 700 && value < 800 ) button = 8;

if( value >= 600 && value < 700 ) button = 3;

if( value >= 500 && value < 600 ) button = 4;

if( value >= 400 && value < 500 ) button = 5;

if( value >= 300 && value < 400 ) button = 0;

if( value >= 200 && value < 300 ) button = 1;

if( value >= 100 && value < 200 ) button = 2;

http://www.eaduino.com.br 21

Page 22: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Software - sketch inicial

if( button != 255 ) {

if( board[button] == ' ' ) {

if( player1 ) {

board[ button ] = 'X';

player1 = false;

}

else {

board[ button ] = 'O';

player1 = true;

}

}

}

}

button = 255;

Verify();

}

http://www.eaduino.com.br 22

Page 23: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

void Verify() {

boolean winner;

winner = VerifyPlayer( 'X' );

if( winner ) Serial.println("Player 1 wins!");

else {

winner = VerifyPlayer( 'O' );

if( winner ) Serial.println("Player 2 wins!");

}

if( winner ) {

for( byte x = 0; x <= 8; x++ ) board[x] = ' ';

player1 = true;

Welcome();

}

}

http://www.eaduino.com.br 23

Page 24: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Software - sketch inicial

boolean VerifyPlayer( char player ) {

if( board[0] == player && board[1] == player && board[2] == player )

return true;

if( board[0] == player && board[4] == player && board[8] == player )

return true;

if( board[0] == player && board[3] == player && board[6] == player )

return true;

if( board[3] == player && board[4] == player && board[5] == player )

return true;

if( board[6] == player && board[7] == player && board[8] == player )

return true;

if( board[6] == player && board[4] == player && board[3] == player )

return true;

return false;

}

http://www.eaduino.com.br 24

Page 25: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Atividades Práticas

• Coding Dojo

• treino coletivo de desenvolvimento

• usos:

• treinar novas práticas

• aprender novas APIs

• integrar membros ao time

http://www.eaduino.com.br 25

Page 26: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

• Randori Kata: Treino Livre • Duplas resolvendo o problema usando TDD e baby steps

• piloto opera o teclado

• copiloto ajuda na solução

• Enquanto o teste não passa, a plateia não pode se manifestar (exceto a pedido dos pilotos)

• Quando o teste passa, pessoas da plateia podem sugerir o próximo passo

• Prepared Kata: Solução completa • TDD e BabySteps também

• Inicia de um rascunho

• Cada etapa é bem explicada

• Plateia somente interrompe quando não entende algo

Como treinar

http://www.eaduino.com.br 26

codingdojo.org

Page 27: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

TDD?

• Test Driven Development (design)

• Escrever testes antes de implementar qualquer nova

funcionalidade

http://www.eaduino.com.br 27

Page 28: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Baby Steps

• Para avançar com segurança e

constância, cada passo deve ser bem

simples

• resista à tentação de resolver o

problema todo de uma vez só, ou

partir direto para abstração e

generalização

Não tenha medo de

sugerir passos bem

pequenos e triviais

http://www.eaduino.com.br 28

Page 29: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

TDD e Arduino

• Testes não serão automatizados

• Cartões verdes e vermelhos (o quadro branco é nossa

documentação dos testes manuais)

• Testes antes da implementação

http://www.eaduino.com.br 29

Page 30: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Dojo de hoje

• Ideias?

• montar o tabuleiro na tela

• posicionar o X ou O na coordenada correta (lacuna no tabuleiro)

• verificar quando há empate (no sketch atual, somente verifica

vencedores).

http://www.eaduino.com.br 30

Page 31: Introdução à Plataforma Arduino - eaduino.com.br · Agenda 10:00 – boas-vindas 10:30 – introdução a plataforma Arduino 11:30 – biblioteca Tvout e o jogo tic-tac-toe (jogo

Mãos à obra

1. Escolher a funcionalidade para o grupo trabalhar

2. Seleção do piloto

3. Seleção do Copiloto

4. Escrita do teste de aceitação (baby step)

5. Codificação para passar no teste

6. Volta ao passo 2

• Candidatos?

http://www.eaduino.com.br 31