10:00 boas-vindas 10:30 introduo a plataforma Arduino 11:30 biblioteca Tvout e o jogo tic-tac-toe (jogo da velha) 12:30 intervalo 13:30 diviso dos grupos e atividades prticas 17:00 - encerramento http://www.eaduino.com.br 2 Arduino Day 2014
Este evento uma celebrao mundial dos primeiros 10 anos do Arduino.
http://www.eaduino.com.br 3 Arduino Arduino uma plataforma de hardware e software open source Linguagem de programao compatvel com C/C++ Ambiente de desenvolvimento integrado 4 http://www.eaduino.com.br Arduino Baixo custo comparado a outras plataformas de desenvolvimento
5 http://www.eaduino.com.br Microcontrolador Um microcontrolador um computador em uma nica pastilha. programado para tarefas especficas, diferentemente de um microprocessador de propsito geral.
6 http://www.eaduino.com.br Arduino UNO 7 http://www.eaduino.com.br Shields Placas que ampliam e extendem as funcionalidades da placa base.
http://www.shieldlist.org/
8 http://www.eaduino.com.br Ambiente de Desenvolvimento O ambiente de desenvolvimento Arduino contm um editor de texto com os recursos necessrios para escrever um programa, compil-lo e transfer-lo para a placa Arduino.
Os programas escritos para Arduino so chamados de sketches (esboos).
9 http://www.eaduino.com.br Ciclo de Desenvolvimento
10 http://www.eaduino.com.br 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 TVout Biblioteca responsvel por gerar sinais a partir de um microcontrolador Atmel AVR. Conexo extremamente simples: um cabo coaxial e dois resistores. Utiliza apenas dois pinos digitais e terra. Pgina do projeto: http://code.google.com/p/arduino-tvout/
} http://www.eaduino.com.br 13 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 crculo (Noughts = O, Crosses = X) Ganha que conseguir marcar trs xis ou trs crculos em linha (horizontal, vertical ou diagonal)
http://www.eaduino.com.br 14 Hardware Nove chaves tcteis, utilizando apenas um pino analgico. Divisor de tenso http://www.eaduino.com.br 15 Software - sketch inicial 1. Declara uma matriz unidimensional com 9 elementos (tabuleiro) 2. Declara demais variveis globais 3. Exibe mensagem de boas vindas 4. Verifica se jogador 1 (X) ou jogador 2 (O) 5. Aguarda o pressionar de um boto 6. Verifica a qual posio no tabuleiro corresponde o boto pressionado 7. Marca com X ou O a posio no tabuleiro 8. Verifica se h vencedor 9. Volta ao passo 4 http://www.eaduino.com.br 16 Software - sketch inicial char board[] = { ' ',' ',' ',' ',' ',' ',' ',' ',' '}; byte pinButton = 0; byte button = 255; boolean player1 = true; // X, player2 = O http://www.eaduino.com.br 17 Software - sketch inicial void setup() { Serial.begin(9600); Welcome(); } http://www.eaduino.com.br 18 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 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 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 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 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 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 Atividades Prticas Coding Dojo
treino coletivo de desenvolvimento usos: treinar novas prticas aprender novas APIs integrar membros ao time http://www.eaduino.com.br 25 Randori Kata: Treino Livre Duplas resolvendo o problema usando TDD e baby steps piloto opera o teclado copiloto ajuda na soluo Enquanto o teste no passa, a plateia no pode se manifestar (exceto a pedido dos pilotos) Quando o teste passa, pessoas da plateia podem sugerir o prximo passo
Prepared Kata: Soluo completa TDD e BabySteps tambm Inicia de um rascunho Cada etapa bem explicada Plateia somente interrompe quando no entende algo Como treinar http://www.eaduino.com.br 26 codingdojo.org
TDD? Test Driven Development (design)
Escrever testes antes de implementar qualquer nova funcionalidade
http://www.eaduino.com.br 27 Baby Steps Para avanar com segurana e constncia, cada passo deve ser bem simples resista tentao de resolver o problema todo de uma vez s, ou partir direto para abstrao e generalizao
No tenha medo de sugerir passos bem pequenos e triviais
http://www.eaduino.com.br 28 TDD e Arduino Testes no sero automatizados Cartes verdes e vermelhos (o quadro branco nossa documentao dos testes manuais) Testes antes da implementao http://www.eaduino.com.br 29 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 Mos obra
1. Escolher a funcionalidade para o grupo trabalhar 2. Seleo do piloto 3. Seleo do Copiloto 4. Escrita do teste de aceitao (baby step) 5. Codificao para passar no teste 6. Volta ao passo 2