SlideShare uma empresa Scribd logo
1 de 115
desafio em robótica
Católica de Santa Catarina
Seu nome
O que motivou você a participar do desafio?
Qual sua experiência com programação ou robótica?
Quais são seus planos para os próximos anos?
Como soube do desafio?
algoritmos
"um conjunto de passos para completar uma
tarefa."
Algoritmo
https://goo.gl/Psp5yU
algoritmos em ciência da
computação
exatidão e eficiência
compressão de áudio e vídeo
descoberta de rotas
renderização
http://goo.gl/MMQqlj
O bote pode carregar apenas 2 pessoas por vez.
Apenas a mãe, o pai e o policial podem operar o bote.
A mãe não pode ser deixada sozinha com os filhos.
O pai não pode ser deixado sozinho com as filhas.
O ladrão não pode ser deixado sozinho com ninguém sem o policial.
intervalo
projetos loucos
Internet of Things - IoT
exemplo
robótica
nosso desafio
NÃO FAÇA ISSO
123d.circuits.io
estrutura sequencial
componentes
1 arduino uno
1 led
1 resistor 220Ω
fim componentes
início
criar novo projeto
procurar por componentes
adicionar componentes
configurar resistor
conectar componentes
iniciar simulação
parar simulação
fim
Algoritmo - Piscar LED
int led = 13; // variável led aponta para porta digital 13
void setup() {
pinMode(led, OUTPUT); // define a porta do LED como saída
}
void loop() {
digitalWrite(led, HIGH); // acende o LED
delay(1000); // espera por 1 segundo
digitalWrite(led, LOW); // apaga o LED
delay(1000); // espera por 1 segundo
}
estrutura condicional IF
se (condição) então
(consequência)
senão [se (outra condição)]
(alternativa)
fim se
estrutura condicional IF
Operadores condicionais (operadores lógicos)
== Comparação
!= Diferente
> Maior
< Menor
>= Maior igual
<= Menor igual
estrutura condicional IF
http://goo.gl/W9b28c
estrutura condicional
componentes
1 arduino uno
1 led
1 resistor 220Ω
1 resistor 1kΩ
1 push button (botão)
fim componentes
inicio
...
se botão pressionado então
acende LED
senão
apaga LED
fim
estrutura condicional
componentes
1 arduino uno
1 led
1 resistor 220Ω
1 resistor 1kΩ
1 push button (botão)
fim componentes
inicio
...
se botão pressionado então
acende LED
senão
apaga LED
fim
estrutura condicional
componentes
1 arduino uno
1 led
1 resistor 220Ω
1 resistor 1kΩ
1 push button (botão)
fim componentes
inicio
…
se botão pressionado então
acende LED
senão
apaga LED
fim
const int pinoBotao = 2; // botão está no pino 2
const int pinoLED = 13; // LED está no pino 13
int estadoBotao = 0; // variável de controle do botão
void setup() {
pinMode(pinoLED, OUTPUT); // define pino do LED como saída
pinMode(pinoBotao, INPUT); // define pino do botão como entrada
}
void loop() {
estadoBotao = digitalRead(pinoBotao); // atribui valor da variável de estado do botão
if (estadoBotao == HIGH) { // se o botão está pressionado
digitalWrite(pinoLED, HIGH); // acende o LED
} else {
digitalWrite(pinoLED, LOW); // apaga o LED
}
}
Algoritmo - Botão com LED
intervalo
estrutura de repetição FOR
para (inicialização, condição, passo) faça
(consequência)
fim para
estrutura de repetição FOR
para (prato = 1, prato <= 5, prato + 1) faça
colocar o prato na máquina
fim para
LED PWM
componentes
1 arduino uno
1 led verde
1 resistor 220Ω
fim componentes
início
…
para força de 0 a 255 faça
aplica força ao LED
fim para
para força de 255 a 0
aplica força ao LED
fim para
fim
Algoritmo - LED PWM
int led = 11;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
for (int i = 0; i <= 255; i++) {
analogWrite(led, i);
delay(15);
}
for (int i = 255; i >= 0; i--) {
analogWrite(led, i);
delay(15);
}
}
estrutura de repetição
componentes
1 arduino uno
1 servo
fim componentes
inicio
…
para cada angulo entre 0 e 180 faça
aplica angulo ao servo
espera 15 milisegundos
fim para
para cada angulo entre 180 e 0 faça
aplica angulo ao servo
espera 15 milisegundos
fim para
fim
#include <Servo.h>
const int ANGULO_MIN = 0;
const int ANGULO_MAX = 180;
const int PINO_SERVO = 2;
int angulo = 0;
Servo servo;
void setup () {
servo.attach(PINO_SERVO);
}
void loop() {
for (angulo = ANGULO_MIN; angulo <= ANGULO_MIN; angulo++) {
servo.write(angulo);
delay(15);
}
}
Algoritmo - Servo
estrutura de repetição WHILE
enquanto (condição verdadeira) faça
consequência
fim enquanto
estrutura de repetição WHILE
enquanto (houver pratos na pilha) faça
retirar um prato da pilha
lavar o prato retirado
fim enquanto
estrutura de repetição DO WHILE
faça
consequência
enquanto (condição verdadeira)
estrutura de repetição DO WHILE
Programador encontrado morto na banheira cinco
dias após ter sido dado como desaparecido. Junto
a ele foi encontrado um shampoo com as seguintes
instruções: Lavar, enxaguar, repetir.
exercícios
1. Modifique o algoritmo LED PWM
para utilizar a estrutura WHILE
2. Modifique o algoritmo LED PWM
para utilizar a estrutura DO WHILE
revisão aula 1
componentes
aluno(a)s muito querido(a)s e comportado(a)s
2 professores nem tão engraçados
fim componentes
inicio
introdução a algoritmos
introdução ao arduino
projetos muito loucos com Arduino
introdução à internet das coisas
exemplo com arduino
apresentação do desafio
apresentação do simulador 123d.circuits
estrutura sequencial
estrutura condicional
estruturas de repetição
exercicios
introdução a PWM
fim
exercício final
(vale um adesivo para quem terminar primeiro)
Crie um projeto Arduino para simular um semáforo com
efeito fade.
Luz verde deve permanecer totalmente acesa por 5 segundos
Luz amarela deve permanecer totalmente acesa por 2 segundos
Luz vermelha deve permanecer totalmente acesa por 7 segundos
Cada passo do fade out deve durar 15 milisegundos
até a próxima!
tem uma hora apenas e quer aprender mais sobre programação
https://goo.gl/OjCn5m
projetos legais
http://goo.gl/rCya1d (Instructables)
simulador
http://goo.gl/c3fG2B (123d.circuits)
algoritmos
https://goo.gl/Psp5yU (Khan Academy)
meu e-mail
natambarbosa@gmail.com
meu twitter
@natabarbosa
atribuição (relembrando)
Variáveis tem um tipo
int x;
Variáveis podem receber um valor
x = 9;
operadores aritméticos (relembrando)
Operador Exemplo Resultado
+ a = 2 + 1 3
- b = 4 - 2 2
* c = 9 * 9 81
/ d = c / a 27
% d % 5 2
Variáveis do topo int são definidas com valor 0 por padrão.
chega de simulador.
vamos lá pra fora!
1. Emite pulso
2. Para de emitir pulso
3. Mede tamanho do pulso retornado como distância até objeto
mais próximo
4. Converte distância para centímetros
● 1 sensor na frente
● 1 sensor atrás
● 0 = branco, 1024 = preto
● Sentido horário e antihorário
● Controle de velocidade via PWM
● Motor para entrega de cédulas em máquinas caça níquel
● Sentido horário e antihorário
● Controle de velocidade via PWM
● Esteira de cédulas em máquinas caça níquel
● Permite controlar 2 motores DC
● Ligado em 12v
● Fornece 5v para o Arduino
● Bateria do robô
● Feita com Lithium de baterias de notebook
● Bateria do robô
● Feita com Lithium de baterias de notebook
intervalo
http://goo.gl/6ewcYT
#include "motor.h"
#include "sensor_ultrasonico.h"
#include "sensor_reflexo.h"
const int ULTRASONICO_LEITURA = 9;
const int ULTRASONICO_EMISSAO = 8;
sensorUltrasonico ultrasonico;
...
ultrasonico = iniciaSensorUltrasonico(ULTRASONICO_LEITURA, ULTRASONICO_EMISSAO);
...
long distancia = leUltrasonico(ultrasonico);
const int REFLEXO_FRENTE_AN = 1;
const int REFLEXO_COSTAS_AN = 0;
sensorReflexo reflexo;
...
reflexo = iniciaSensorReflexo(REFLEXO_FRENTE_AN, REFLEXO_COSTAS_AN);
...
long reflexoFrente = leituraReflexo(LEITURA_REFLEXO_FRENTE, reflexo);
long reflexoCostas = leituraReflexo(LEITURA_REFLEXO_COSTAS, reflexo);
const int PWM_MOTOR_1 = 6;
const int CONTROLE_MOTOR_1_DIR_1 = 7;
const int CONTROLE_MOTOR_1_DIR_2 = 5;
const int PWM_MOTOR_2 = 3;
const int CONTROLE_MOTOR_2_DIR_1 = 4;
const int CONTROLE_MOTOR_2_DIR_2 = 2;
const int DIRECAO_FRENTE = 8;
const int DIRECAO_ESQUERDA = 4;
const int DIRECAO_DIREITA = 6;
const int DIRECAO_PARADO = 5;
const int DIRECAO_REVERSO = 2;
...
motores = iniciaMotores(PWM_MOTOR_1,
PWM_MOTOR_2,
CONTROLE_MOTOR_1_DIR_1,
CONTROLE_MOTOR_1_DIR_2,
CONTROLE_MOTOR_2_DIR_1,
CONTROLE_MOTOR_2_DIR_2);
...
controlaMotores(motores, DIRECAO_REVERSO, 1, 1, 1200); // 1 = potência, 1200 = tempo
controlaMotores(motores, DIRECAO_FRENTE, 1, 1, 0);
controlaMotores(motores, DIRECAO_ESQUERDA, 0.5, 0.5, 0); // 0.5 = potência, 0 = tempo
controlaMotores(motores, DIRECAO_DIREITA, 0.5, 0.5, 0);
INVERTER MOTOR
componentes
1 arduino uno
1 controlador de motor
2 motores
1 sensor ultra-sônico
fim componentes
início
…
inclui bibliotecas
inicia componentes
se algo está 10cm ou menos à frente do sensor então
inverter motores
senão
liga motores para frente
fim se
fim
#include "motor.h"
#include "sensor_ultrasonico.h"
#include "motor.h"
#include "sensor_ultrasonico.h"
driverMotor motores;
sensorUltrasonico ultrasonico;
// Pinos
const int PWM_MOTOR_1 = 6;
const int CONTROLE_MOTOR_1_DIR_1 = 7;
const int CONTROLE_MOTOR_1_DIR_2 = 5;
const int PWM_MOTOR_2 = 3;
const int CONTROLE_MOTOR_2_DIR_1 = 4;
const int CONTROLE_MOTOR_2_DIR_2 = 2;
const int ULTRASONICO_LEITURA = 9;
const int ULTRASONICO_EMISSAO = 8;
const int DIRECAO_FRENTE = 8;
const int DIRECAO_REVERSO = 2;
...
Algoritmo - Inverter Motor
...
void setup(){
motores = iniciaMotores(PWM_MOTOR_1,
PWM_MOTOR_2,
CONTROLE_MOTOR_1_DIR_1,
CONTROLE_MOTOR_1_DIR_2,
CONTROLE_MOTOR_2_DIR_1,
CONTROLE_MOTOR_2_DIR_2);
ultrasonico = iniciaSensorUltrasonico(ULTRASONICO_LEITURA, ULTRASONICO_EMISSAO);
Serial.begin(9600);
}
void loop(){
long distancia = leUltrasonico(ultrasonico);
Serial.print("distância: ");
Serial.print(distancia);
Serial.println("cm");
if (distancia <= 10) {
controlaMotores(motores, DIRECAO_REVERSO, 1, 1, 1200);
} else {
controlaMotores(motores, DIRECAO_FRENTE, 1, 1, 0);
}
Algoritmo - Inverter Motor
PARAR MOTOR
componentes
1 arduino uno
1 controlador de motor
2 motores
2 sensores reflexo
fim componentes
início
…
inclui bibliotecas
inicia componentes
se a cor branca é detectada então
parar motores
senão
liga motores
fim se
fim
#include "motor.h"
#include "sensor_reflexo.h"
#include "motor.h"
#include "sensor_reflexo.h"
driverMotor motores;
sensorReflexo reflexo;
// Pinos
const int PWM_MOTOR_1 = 6;
const int CONTROLE_MOTOR_1_DIR_1 = 7;
const int CONTROLE_MOTOR_1_DIR_2 = 5;
const int PWM_MOTOR_2 = 3;
const int CONTROLE_MOTOR_2_DIR_1 = 4;
const int CONTROLE_MOTOR_2_DIR_2 = 2;
const int ULTRASONICO_LEITURA = 9;
const int ULTRASONICO_EMISSAO = 8;
const int DIRECAO_FRENTE = 8;
const int DIRECAO_PARADO = 5;
const int REFLEXO_FRENTE_AN = 1;
const int REFLEXO_COSTAS_AN = 0;
const int COR_BRANCO_LIMITE = 550;
const int LEITURA_REFLEXO_FRENTE = 1;
const int LEITURA_REFLEXO_COSTAS = 2;
...
Algoritmo - Parar Motor
...
void setup(){
motores = iniciaMotores(PWM_MOTOR_1,
PWM_MOTOR_2,
CONTROLE_MOTOR_1_DIR_1,
CONTROLE_MOTOR_1_DIR_2,
CONTROLE_MOTOR_2_DIR_1,
CONTROLE_MOTOR_2_DIR_2);
reflexo = iniciaSensorReflexo(REFLEXO_FRENTE_AN, REFLEXO_COSTAS_AN);
Serial.begin(9600);
}
void loop(){
long reflexoFrente = leituraReflexo(LEITURA_REFLEXO_FRENTE, reflexo);
long reflexoCostas = leituraReflexo(LEITURA_REFLEXO_COSTAS, reflexo);
if (reflexoFrente < COR_BRANCO_LIMITE || reflexoCostas < COR_BRANCO_LIMITE) {
controlaMotores(motores, DIRECAO_PARADO, 1, 1, 0);
} else {
controlaMotores(motores, DIRECAO_FRENTE, 1, 1, 0);
}
}
Algoritmo - Parar Motor
POTÊNCIA DO MOTOR RELATIVA À DISTÂNCIA
componentes
1 arduino uno
1 controlador de motor
2 motores
1 sensor ultra-sônico
fim componentes
início
…
inclui bibliotecas
inicia componentes
inicia motor com potência relativa à distância do objeto mais próximo
fim
#include "motor.h"
#include "sensor_ultrasonico.h"
#include "motor.h"
#include "sensor_ultrasonico.h"
driverMotor motores;
sensorUltrasonico ultrasonico;
// Pinos
const int PWM_MOTOR_1 = 6;
const int CONTROLE_MOTOR_1_DIR_1 = 7;
const int CONTROLE_MOTOR_1_DIR_2 = 5;
const int PWM_MOTOR_2 = 3;
const int CONTROLE_MOTOR_2_DIR_1 = 4;
const int CONTROLE_MOTOR_2_DIR_2 = 2;
const int ULTRASONICO_LEITURA = 9;
const int ULTRASONICO_EMISSAO = 8;
const int DIRECAO_FRENTE = 8;
...
Algoritmo - Potência relativa à distância
...
void setup(){
motores = iniciaMotores(PWM_MOTOR_1,
PWM_MOTOR_2,
CONTROLE_MOTOR_1_DIR_1,
CONTROLE_MOTOR_1_DIR_2,
CONTROLE_MOTOR_2_DIR_1,
CONTROLE_MOTOR_2_DIR_2);
ultrasonico = iniciaSensorUltrasonico(ULTRASONICO_LEITURA, ULTRASONICO_EMISSAO);
Serial.begin(9600);
}
void loop(){
long distancia = leUltrasonico(ultrasonico);
float potencia = (float) (1.0 - ( (float) distancia) / 255.0);
Serial.print("distância: ");
Serial.print(distancia);
Serial.println("cm");
Serial.print("potência: ");
Serial.print(potencia);
if (potencia >= 0 && potencia <= 1) {
controlaMotores(motores, DIRECAO_FRENTE, potencia, potencia, 1200);
}
}
Algoritmo - Potência relativa à distância
revisão aula 2
componentes
aluno(a)s muito querido(a)s e comportado(a)s
2 professores muito engraçados
1 robô matador
fim componentes
inicio
correção de exercícios
prêmios de robótica da catolica sc
apresentação do projeto dos alunos
apresentação do protótipo
apresentação dos componentes
apresentação das bibliotecas de programação
exercicios
fim
até a próxima!
projeto dos colegas: Oficina de Arduino Joinville
https://www.facebook.com/groups/oficinadearduinojoinville/
meu e-mail
natambarbosa@gmail.com
meu twitter
@natabarbosa
RobotChallenge Vienna
Mini Sumo
Site da Competição
http://goo.gl/BvFeTg
Regras
Regras Básicas
➔ 1 robô por equipe
➔ Objetivo = empurrar o oponente para fora do dojô
➔ 1 round = 1 minuto
➔ 1 partida = no máximo 3 rounds
➔ O primeiro a fazer 2 pontos ganha a partida
Regras de Tempo
➔ Robôs devem permanecer paralisados por 5 segundos ao início de cada round
➔ Tempo máximo de partida sem acréscimos = 3 minutos
➔ Tempo máximo de partida com acréscimos = 4 minutos e 30 segundos
➔ Acréscimo de 30 segundos ao tempo de round pode ser concedido pelo juíz
➔ Caso o tempo limite seja excedido antes de alguma equipe fazer 2 pontos, a equipe com 1 ponto
ganha a partida
Pode
Modificar o programa entre partidas
Entrar na área de competição entre rounds
para manusear o robô
Trocar bateria do robô entre partidas
Torcer para o robô
Comemorar vitórias
Chorar por derrota
NÃO pode
Modificar o programa entre rounds
Entrar na área de competição durante um
round
Paralisação do robô por mais de 5
segundos, exceto no início do round
(ponto para o oponente)
Demorar mais do que 30 segundos para
começar novo round
Insultar a equipe adversária ou insultar o
robô oponente
Contestar a decisão do juíz
Dúvidas?
Leia o documento de regras
http://goo.gl/fLsiDy
Resultado
1° Lugar: Os Newbinha (Colégio Estadual Juracy Maria Brosing)
2° Lugar: AACD (E.E.B. Alicia Bittencourt Ferreira e E.E.B. Marli Maria de Souza)
3° Lugar: LTF (Colégio Estadual Juracy Maria Brosing)
4° Lugar: Alexitimia
5° Lugar: Heber Core e Paranauê
Resultados Completos: http://goo.gl/hxiEPm

Mais conteúdo relacionado

Mais procurados

Cartilhado arduino ed10
Cartilhado arduino ed10Cartilhado arduino ed10
Cartilhado arduino ed10SEDUCCE
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 
Programando robôs Lego com NXC
Programando robôs Lego com NXC Programando robôs Lego com NXC
Programando robôs Lego com NXC Isvaldo Souza
 
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresIntrodução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresCarlos Eduardo Pantoja
 
Arduino - Dicas & Truques
Arduino - Dicas & TruquesArduino - Dicas & Truques
Arduino - Dicas & TruquesÁlvaro Justen
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linhaIsvaldo Souza
 
Arduino - Hardware Livre e Robótica
Arduino -  Hardware Livre e RobóticaArduino -  Hardware Livre e Robótica
Arduino - Hardware Livre e RobóticaMarinho Brandão
 
Introdução a arduino, oficina para iniciantes
Introdução a arduino, oficina para iniciantesIntrodução a arduino, oficina para iniciantes
Introdução a arduino, oficina para iniciantesRogerio Alencar Filho
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar ArduinoIsvaldo Souza
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Arduino day 2014 BH - Hello World Arduino
Arduino day 2014   BH - Hello World ArduinoArduino day 2014   BH - Hello World Arduino
Arduino day 2014 BH - Hello World ArduinoCarlos Delfino
 

Mais procurados (16)

Introdução a plataforma arduino
Introdução a plataforma arduinoIntrodução a plataforma arduino
Introdução a plataforma arduino
 
Cartilhado arduino ed10
Cartilhado arduino ed10Cartilhado arduino ed10
Cartilhado arduino ed10
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Caixa de pandora
Caixa de pandoraCaixa de pandora
Caixa de pandora
 
Arduino day-2015-v1
Arduino day-2015-v1Arduino day-2015-v1
Arduino day-2015-v1
 
Manual 580 ex-canon
Manual 580 ex-canonManual 580 ex-canon
Manual 580 ex-canon
 
Programando robôs Lego com NXC
Programando robôs Lego com NXC Programando robôs Lego com NXC
Programando robôs Lego com NXC
 
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresIntrodução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
 
Arduino - Dicas & Truques
Arduino - Dicas & TruquesArduino - Dicas & Truques
Arduino - Dicas & Truques
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linha
 
Oficina Arduino
Oficina ArduinoOficina Arduino
Oficina Arduino
 
Arduino - Hardware Livre e Robótica
Arduino -  Hardware Livre e RobóticaArduino -  Hardware Livre e Robótica
Arduino - Hardware Livre e Robótica
 
Introdução a arduino, oficina para iniciantes
Introdução a arduino, oficina para iniciantesIntrodução a arduino, oficina para iniciantes
Introdução a arduino, oficina para iniciantes
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Arduino day 2014 BH - Hello World Arduino
Arduino day 2014   BH - Hello World ArduinoArduino day 2014   BH - Hello World Arduino
Arduino day 2014 BH - Hello World Arduino
 

Destaque

Robótica en el mundo
Robótica en el mundoRobótica en el mundo
Robótica en el mundoDaniel Diaz
 
Retrospectiva 2016
Retrospectiva 2016Retrospectiva 2016
Retrospectiva 2016EvelynDario
 
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)acarneirinho
 
Atividades com robótica educacional para as aulas de matemática do 6º ao 9º a...
Atividades com robótica educacional para as aulas de matemática do 6º ao 9º a...Atividades com robótica educacional para as aulas de matemática do 6º ao 9º a...
Atividades com robótica educacional para as aulas de matemática do 6º ao 9º a...Jau ¬¬ Crisostomo
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoEvânio Moreira
 
Controlo de servo motor através de Scratch
Controlo de servo motor através de ScratchControlo de servo motor através de Scratch
Controlo de servo motor através de ScratchAna Carneirinho
 
Arduino - iniciação à linguagem C: LCD 1602
Arduino - iniciação à linguagem C: LCD 1602Arduino - iniciação à linguagem C: LCD 1602
Arduino - iniciação à linguagem C: LCD 1602Ana Carneirinho
 
Arduino & Scratch na Escola - Aula 3
Arduino & Scratch na Escola - Aula 3Arduino & Scratch na Escola - Aula 3
Arduino & Scratch na Escola - Aula 3Ana Carneirinho
 
Arduino & Scratch na Escola - Aula 1
Arduino & Scratch na Escola - Aula 1Arduino & Scratch na Escola - Aula 1
Arduino & Scratch na Escola - Aula 1Ana Carneirinho
 
TDC2016POA | Trilha Education - O ensino de programacao, robotica e automacao...
TDC2016POA | Trilha Education - O ensino de programacao, robotica e automacao...TDC2016POA | Trilha Education - O ensino de programacao, robotica e automacao...
TDC2016POA | Trilha Education - O ensino de programacao, robotica e automacao...tdc-globalcode
 
Arduino & Scratch na Escola - Aula 2
Arduino & Scratch na Escola - Aula 2Arduino & Scratch na Escola - Aula 2
Arduino & Scratch na Escola - Aula 2Ana Carneirinho
 
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)Ana Carneirinho
 
Joseph Fulton Resume 2016
Joseph Fulton Resume 2016Joseph Fulton Resume 2016
Joseph Fulton Resume 2016Joseph Fulton
 
Historia de la robotica educativa en el Peru
Historia de la robotica educativa en el PeruHistoria de la robotica educativa en el Peru
Historia de la robotica educativa en el Peruadrianalaime
 

Destaque (20)

Robótica en el mundo
Robótica en el mundoRobótica en el mundo
Robótica en el mundo
 
4 aula do curso de automação - Arduino
4 aula do curso de automação - Arduino4 aula do curso de automação - Arduino
4 aula do curso de automação - Arduino
 
2 aula do curso de automação
2 aula do curso de automação2 aula do curso de automação
2 aula do curso de automação
 
Retrospectiva 2016
Retrospectiva 2016Retrospectiva 2016
Retrospectiva 2016
 
Ficheiro robótica
Ficheiro robóticaFicheiro robótica
Ficheiro robótica
 
Robótica
RobóticaRobótica
Robótica
 
Lista de exercícios nº 01
Lista de exercícios nº 01Lista de exercícios nº 01
Lista de exercícios nº 01
 
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
 
Atividades com robótica educacional para as aulas de matemática do 6º ao 9º a...
Atividades com robótica educacional para as aulas de matemática do 6º ao 9º a...Atividades com robótica educacional para as aulas de matemática do 6º ao 9º a...
Atividades com robótica educacional para as aulas de matemática do 6º ao 9º a...
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
Controlo de servo motor através de Scratch
Controlo de servo motor através de ScratchControlo de servo motor através de Scratch
Controlo de servo motor através de Scratch
 
Arduino - iniciação à linguagem C: LCD 1602
Arduino - iniciação à linguagem C: LCD 1602Arduino - iniciação à linguagem C: LCD 1602
Arduino - iniciação à linguagem C: LCD 1602
 
3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino
 
Arduino & Scratch na Escola - Aula 3
Arduino & Scratch na Escola - Aula 3Arduino & Scratch na Escola - Aula 3
Arduino & Scratch na Escola - Aula 3
 
Arduino & Scratch na Escola - Aula 1
Arduino & Scratch na Escola - Aula 1Arduino & Scratch na Escola - Aula 1
Arduino & Scratch na Escola - Aula 1
 
TDC2016POA | Trilha Education - O ensino de programacao, robotica e automacao...
TDC2016POA | Trilha Education - O ensino de programacao, robotica e automacao...TDC2016POA | Trilha Education - O ensino de programacao, robotica e automacao...
TDC2016POA | Trilha Education - O ensino de programacao, robotica e automacao...
 
Arduino & Scratch na Escola - Aula 2
Arduino & Scratch na Escola - Aula 2Arduino & Scratch na Escola - Aula 2
Arduino & Scratch na Escola - Aula 2
 
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
Programação de arduinos com S4A (exercícios com entradas e saídas digitais)
 
Joseph Fulton Resume 2016
Joseph Fulton Resume 2016Joseph Fulton Resume 2016
Joseph Fulton Resume 2016
 
Historia de la robotica educativa en el Peru
Historia de la robotica educativa en el PeruHistoria de la robotica educativa en el Peru
Historia de la robotica educativa en el Peru
 

Semelhante a Desafio em robótica na UFSC

Projeto tacômetro com arduino
Projeto  tacômetro com arduinoProjeto  tacômetro com arduino
Projeto tacômetro com arduinoJonaspm
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoSamir Siqueira
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFengelrfs
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Robótica nível 1 aula 05
Robótica nível 1   aula 05Robótica nível 1   aula 05
Robótica nível 1 aula 05Lucas Oliveira
 
Arduino - Parte 2.pdf
Arduino - Parte 2.pdfArduino - Parte 2.pdf
Arduino - Parte 2.pdfprofwtelles
 
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSetApostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSetSaymon Cristian Alves Oliveira
 
Slides minicurso Arduino - Controle de Motores DC
Slides minicurso Arduino - Controle de Motores DC Slides minicurso Arduino - Controle de Motores DC
Slides minicurso Arduino - Controle de Motores DC Gustavo Yoshio Maruyama
 
Arduino - iniciação à linguagem C (entradas e saídas digitais)
Arduino - iniciação à linguagem C (entradas e saídas digitais)Arduino - iniciação à linguagem C (entradas e saídas digitais)
Arduino - iniciação à linguagem C (entradas e saídas digitais)Ana Carneirinho
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladoresDanilo Morais Pagano
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoJeffersonReis46
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 

Semelhante a Desafio em robótica na UFSC (20)

Projeto tacômetro com arduino
Projeto  tacômetro com arduinoProjeto  tacômetro com arduino
Projeto tacômetro com arduino
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduino
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDF
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
ATmega Prática
ATmega PráticaATmega Prática
ATmega Prática
 
ARDUINO PRIMEIROS PASSOS
ARDUINO  PRIMEIROS PASSOSARDUINO  PRIMEIROS PASSOS
ARDUINO PRIMEIROS PASSOS
 
Robótica nível 1 aula 05
Robótica nível 1   aula 05Robótica nível 1   aula 05
Robótica nível 1 aula 05
 
Arduino - Parte 2.pdf
Arduino - Parte 2.pdfArduino - Parte 2.pdf
Arduino - Parte 2.pdf
 
Treinamento arduino (1).pptx
Treinamento arduino (1).pptxTreinamento arduino (1).pptx
Treinamento arduino (1).pptx
 
Arduino001 110911083100-phpapp02
Arduino001 110911083100-phpapp02Arduino001 110911083100-phpapp02
Arduino001 110911083100-phpapp02
 
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSetApostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
 
Slides minicurso Arduino - Controle de Motores DC
Slides minicurso Arduino - Controle de Motores DC Slides minicurso Arduino - Controle de Motores DC
Slides minicurso Arduino - Controle de Motores DC
 
Arduino - iniciação à linguagem C (entradas e saídas digitais)
Arduino - iniciação à linguagem C (entradas e saídas digitais)Arduino - iniciação à linguagem C (entradas e saídas digitais)
Arduino - iniciação à linguagem C (entradas e saídas digitais)
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
Cartilhado arduino ed1
Cartilhado arduino ed1Cartilhado arduino ed1
Cartilhado arduino ed1
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
Cartilhado arduino ed1 - cópia
Cartilhado arduino ed1 - cópiaCartilhado arduino ed1 - cópia
Cartilhado arduino ed1 - cópia
 
Cartilhado arduino ed1
Cartilhado arduino ed1Cartilhado arduino ed1
Cartilhado arduino ed1
 

Desafio em robótica na UFSC

  • 1. desafio em robótica Católica de Santa Catarina
  • 2. Seu nome O que motivou você a participar do desafio? Qual sua experiência com programação ou robótica? Quais são seus planos para os próximos anos? Como soube do desafio?
  • 4. "um conjunto de passos para completar uma tarefa." Algoritmo https://goo.gl/Psp5yU
  • 5.
  • 6.
  • 7.
  • 8. algoritmos em ciência da computação exatidão e eficiência
  • 9.
  • 11.
  • 13.
  • 15. http://goo.gl/MMQqlj O bote pode carregar apenas 2 pessoas por vez. Apenas a mãe, o pai e o policial podem operar o bote. A mãe não pode ser deixada sozinha com os filhos. O pai não pode ser deixado sozinho com as filhas. O ladrão não pode ser deixado sozinho com ninguém sem o policial.
  • 17.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 26.
  • 28.
  • 30.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 40. estrutura sequencial componentes 1 arduino uno 1 led 1 resistor 220Ω fim componentes início criar novo projeto procurar por componentes adicionar componentes configurar resistor conectar componentes iniciar simulação parar simulação fim
  • 41. Algoritmo - Piscar LED int led = 13; // variável led aponta para porta digital 13 void setup() { pinMode(led, OUTPUT); // define a porta do LED como saída } void loop() { digitalWrite(led, HIGH); // acende o LED delay(1000); // espera por 1 segundo digitalWrite(led, LOW); // apaga o LED delay(1000); // espera por 1 segundo }
  • 42. estrutura condicional IF se (condição) então (consequência) senão [se (outra condição)] (alternativa) fim se
  • 43. estrutura condicional IF Operadores condicionais (operadores lógicos) == Comparação != Diferente > Maior < Menor >= Maior igual <= Menor igual
  • 45. estrutura condicional componentes 1 arduino uno 1 led 1 resistor 220Ω 1 resistor 1kΩ 1 push button (botão) fim componentes inicio ... se botão pressionado então acende LED senão apaga LED fim
  • 46. estrutura condicional componentes 1 arduino uno 1 led 1 resistor 220Ω 1 resistor 1kΩ 1 push button (botão) fim componentes inicio ... se botão pressionado então acende LED senão apaga LED fim
  • 47. estrutura condicional componentes 1 arduino uno 1 led 1 resistor 220Ω 1 resistor 1kΩ 1 push button (botão) fim componentes inicio … se botão pressionado então acende LED senão apaga LED fim
  • 48. const int pinoBotao = 2; // botão está no pino 2 const int pinoLED = 13; // LED está no pino 13 int estadoBotao = 0; // variável de controle do botão void setup() { pinMode(pinoLED, OUTPUT); // define pino do LED como saída pinMode(pinoBotao, INPUT); // define pino do botão como entrada } void loop() { estadoBotao = digitalRead(pinoBotao); // atribui valor da variável de estado do botão if (estadoBotao == HIGH) { // se o botão está pressionado digitalWrite(pinoLED, HIGH); // acende o LED } else { digitalWrite(pinoLED, LOW); // apaga o LED } } Algoritmo - Botão com LED
  • 50. estrutura de repetição FOR para (inicialização, condição, passo) faça (consequência) fim para
  • 51. estrutura de repetição FOR para (prato = 1, prato <= 5, prato + 1) faça colocar o prato na máquina fim para
  • 52.
  • 53.
  • 54.
  • 55. LED PWM componentes 1 arduino uno 1 led verde 1 resistor 220Ω fim componentes início … para força de 0 a 255 faça aplica força ao LED fim para para força de 255 a 0 aplica força ao LED fim para fim
  • 56. Algoritmo - LED PWM int led = 11; void setup() { pinMode(led, OUTPUT); } void loop() { for (int i = 0; i <= 255; i++) { analogWrite(led, i); delay(15); } for (int i = 255; i >= 0; i--) { analogWrite(led, i); delay(15); } }
  • 57. estrutura de repetição componentes 1 arduino uno 1 servo fim componentes inicio … para cada angulo entre 0 e 180 faça aplica angulo ao servo espera 15 milisegundos fim para para cada angulo entre 180 e 0 faça aplica angulo ao servo espera 15 milisegundos fim para fim
  • 58. #include <Servo.h> const int ANGULO_MIN = 0; const int ANGULO_MAX = 180; const int PINO_SERVO = 2; int angulo = 0; Servo servo; void setup () { servo.attach(PINO_SERVO); } void loop() { for (angulo = ANGULO_MIN; angulo <= ANGULO_MIN; angulo++) { servo.write(angulo); delay(15); } } Algoritmo - Servo
  • 59. estrutura de repetição WHILE enquanto (condição verdadeira) faça consequência fim enquanto
  • 60. estrutura de repetição WHILE enquanto (houver pratos na pilha) faça retirar um prato da pilha lavar o prato retirado fim enquanto
  • 61. estrutura de repetição DO WHILE faça consequência enquanto (condição verdadeira)
  • 62. estrutura de repetição DO WHILE Programador encontrado morto na banheira cinco dias após ter sido dado como desaparecido. Junto a ele foi encontrado um shampoo com as seguintes instruções: Lavar, enxaguar, repetir.
  • 64. 1. Modifique o algoritmo LED PWM para utilizar a estrutura WHILE
  • 65. 2. Modifique o algoritmo LED PWM para utilizar a estrutura DO WHILE
  • 66. revisão aula 1 componentes aluno(a)s muito querido(a)s e comportado(a)s 2 professores nem tão engraçados fim componentes inicio introdução a algoritmos introdução ao arduino projetos muito loucos com Arduino introdução à internet das coisas exemplo com arduino apresentação do desafio apresentação do simulador 123d.circuits estrutura sequencial estrutura condicional estruturas de repetição exercicios introdução a PWM fim
  • 67. exercício final (vale um adesivo para quem terminar primeiro)
  • 68. Crie um projeto Arduino para simular um semáforo com efeito fade. Luz verde deve permanecer totalmente acesa por 5 segundos Luz amarela deve permanecer totalmente acesa por 2 segundos Luz vermelha deve permanecer totalmente acesa por 7 segundos Cada passo do fade out deve durar 15 milisegundos
  • 69. até a próxima! tem uma hora apenas e quer aprender mais sobre programação https://goo.gl/OjCn5m projetos legais http://goo.gl/rCya1d (Instructables) simulador http://goo.gl/c3fG2B (123d.circuits) algoritmos https://goo.gl/Psp5yU (Khan Academy) meu e-mail natambarbosa@gmail.com meu twitter @natabarbosa
  • 70. atribuição (relembrando) Variáveis tem um tipo int x; Variáveis podem receber um valor x = 9;
  • 71. operadores aritméticos (relembrando) Operador Exemplo Resultado + a = 2 + 1 3 - b = 4 - 2 2 * c = 9 * 9 81 / d = c / a 27 % d % 5 2 Variáveis do topo int são definidas com valor 0 por padrão.
  • 72. chega de simulador. vamos lá pra fora!
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78. 1. Emite pulso 2. Para de emitir pulso 3. Mede tamanho do pulso retornado como distância até objeto mais próximo 4. Converte distância para centímetros
  • 79. ● 1 sensor na frente ● 1 sensor atrás ● 0 = branco, 1024 = preto
  • 80. ● Sentido horário e antihorário ● Controle de velocidade via PWM ● Motor para entrega de cédulas em máquinas caça níquel
  • 81. ● Sentido horário e antihorário ● Controle de velocidade via PWM ● Esteira de cédulas em máquinas caça níquel
  • 82. ● Permite controlar 2 motores DC ● Ligado em 12v ● Fornece 5v para o Arduino
  • 83. ● Bateria do robô ● Feita com Lithium de baterias de notebook
  • 84. ● Bateria do robô ● Feita com Lithium de baterias de notebook
  • 88. const int ULTRASONICO_LEITURA = 9; const int ULTRASONICO_EMISSAO = 8; sensorUltrasonico ultrasonico; ... ultrasonico = iniciaSensorUltrasonico(ULTRASONICO_LEITURA, ULTRASONICO_EMISSAO); ... long distancia = leUltrasonico(ultrasonico);
  • 89. const int REFLEXO_FRENTE_AN = 1; const int REFLEXO_COSTAS_AN = 0; sensorReflexo reflexo; ... reflexo = iniciaSensorReflexo(REFLEXO_FRENTE_AN, REFLEXO_COSTAS_AN); ... long reflexoFrente = leituraReflexo(LEITURA_REFLEXO_FRENTE, reflexo); long reflexoCostas = leituraReflexo(LEITURA_REFLEXO_COSTAS, reflexo);
  • 90. const int PWM_MOTOR_1 = 6; const int CONTROLE_MOTOR_1_DIR_1 = 7; const int CONTROLE_MOTOR_1_DIR_2 = 5; const int PWM_MOTOR_2 = 3; const int CONTROLE_MOTOR_2_DIR_1 = 4; const int CONTROLE_MOTOR_2_DIR_2 = 2; const int DIRECAO_FRENTE = 8; const int DIRECAO_ESQUERDA = 4; const int DIRECAO_DIREITA = 6; const int DIRECAO_PARADO = 5; const int DIRECAO_REVERSO = 2; ... motores = iniciaMotores(PWM_MOTOR_1, PWM_MOTOR_2, CONTROLE_MOTOR_1_DIR_1, CONTROLE_MOTOR_1_DIR_2, CONTROLE_MOTOR_2_DIR_1, CONTROLE_MOTOR_2_DIR_2); ... controlaMotores(motores, DIRECAO_REVERSO, 1, 1, 1200); // 1 = potência, 1200 = tempo controlaMotores(motores, DIRECAO_FRENTE, 1, 1, 0); controlaMotores(motores, DIRECAO_ESQUERDA, 0.5, 0.5, 0); // 0.5 = potência, 0 = tempo controlaMotores(motores, DIRECAO_DIREITA, 0.5, 0.5, 0);
  • 91. INVERTER MOTOR componentes 1 arduino uno 1 controlador de motor 2 motores 1 sensor ultra-sônico fim componentes início … inclui bibliotecas inicia componentes se algo está 10cm ou menos à frente do sensor então inverter motores senão liga motores para frente fim se fim #include "motor.h" #include "sensor_ultrasonico.h"
  • 92. #include "motor.h" #include "sensor_ultrasonico.h" driverMotor motores; sensorUltrasonico ultrasonico; // Pinos const int PWM_MOTOR_1 = 6; const int CONTROLE_MOTOR_1_DIR_1 = 7; const int CONTROLE_MOTOR_1_DIR_2 = 5; const int PWM_MOTOR_2 = 3; const int CONTROLE_MOTOR_2_DIR_1 = 4; const int CONTROLE_MOTOR_2_DIR_2 = 2; const int ULTRASONICO_LEITURA = 9; const int ULTRASONICO_EMISSAO = 8; const int DIRECAO_FRENTE = 8; const int DIRECAO_REVERSO = 2; ... Algoritmo - Inverter Motor
  • 93. ... void setup(){ motores = iniciaMotores(PWM_MOTOR_1, PWM_MOTOR_2, CONTROLE_MOTOR_1_DIR_1, CONTROLE_MOTOR_1_DIR_2, CONTROLE_MOTOR_2_DIR_1, CONTROLE_MOTOR_2_DIR_2); ultrasonico = iniciaSensorUltrasonico(ULTRASONICO_LEITURA, ULTRASONICO_EMISSAO); Serial.begin(9600); } void loop(){ long distancia = leUltrasonico(ultrasonico); Serial.print("distância: "); Serial.print(distancia); Serial.println("cm"); if (distancia <= 10) { controlaMotores(motores, DIRECAO_REVERSO, 1, 1, 1200); } else { controlaMotores(motores, DIRECAO_FRENTE, 1, 1, 0); } Algoritmo - Inverter Motor
  • 94. PARAR MOTOR componentes 1 arduino uno 1 controlador de motor 2 motores 2 sensores reflexo fim componentes início … inclui bibliotecas inicia componentes se a cor branca é detectada então parar motores senão liga motores fim se fim #include "motor.h" #include "sensor_reflexo.h"
  • 95. #include "motor.h" #include "sensor_reflexo.h" driverMotor motores; sensorReflexo reflexo; // Pinos const int PWM_MOTOR_1 = 6; const int CONTROLE_MOTOR_1_DIR_1 = 7; const int CONTROLE_MOTOR_1_DIR_2 = 5; const int PWM_MOTOR_2 = 3; const int CONTROLE_MOTOR_2_DIR_1 = 4; const int CONTROLE_MOTOR_2_DIR_2 = 2; const int ULTRASONICO_LEITURA = 9; const int ULTRASONICO_EMISSAO = 8; const int DIRECAO_FRENTE = 8; const int DIRECAO_PARADO = 5; const int REFLEXO_FRENTE_AN = 1; const int REFLEXO_COSTAS_AN = 0; const int COR_BRANCO_LIMITE = 550; const int LEITURA_REFLEXO_FRENTE = 1; const int LEITURA_REFLEXO_COSTAS = 2; ... Algoritmo - Parar Motor
  • 96. ... void setup(){ motores = iniciaMotores(PWM_MOTOR_1, PWM_MOTOR_2, CONTROLE_MOTOR_1_DIR_1, CONTROLE_MOTOR_1_DIR_2, CONTROLE_MOTOR_2_DIR_1, CONTROLE_MOTOR_2_DIR_2); reflexo = iniciaSensorReflexo(REFLEXO_FRENTE_AN, REFLEXO_COSTAS_AN); Serial.begin(9600); } void loop(){ long reflexoFrente = leituraReflexo(LEITURA_REFLEXO_FRENTE, reflexo); long reflexoCostas = leituraReflexo(LEITURA_REFLEXO_COSTAS, reflexo); if (reflexoFrente < COR_BRANCO_LIMITE || reflexoCostas < COR_BRANCO_LIMITE) { controlaMotores(motores, DIRECAO_PARADO, 1, 1, 0); } else { controlaMotores(motores, DIRECAO_FRENTE, 1, 1, 0); } } Algoritmo - Parar Motor
  • 97.
  • 98. POTÊNCIA DO MOTOR RELATIVA À DISTÂNCIA componentes 1 arduino uno 1 controlador de motor 2 motores 1 sensor ultra-sônico fim componentes início … inclui bibliotecas inicia componentes inicia motor com potência relativa à distância do objeto mais próximo fim #include "motor.h" #include "sensor_ultrasonico.h"
  • 99. #include "motor.h" #include "sensor_ultrasonico.h" driverMotor motores; sensorUltrasonico ultrasonico; // Pinos const int PWM_MOTOR_1 = 6; const int CONTROLE_MOTOR_1_DIR_1 = 7; const int CONTROLE_MOTOR_1_DIR_2 = 5; const int PWM_MOTOR_2 = 3; const int CONTROLE_MOTOR_2_DIR_1 = 4; const int CONTROLE_MOTOR_2_DIR_2 = 2; const int ULTRASONICO_LEITURA = 9; const int ULTRASONICO_EMISSAO = 8; const int DIRECAO_FRENTE = 8; ... Algoritmo - Potência relativa à distância
  • 100. ... void setup(){ motores = iniciaMotores(PWM_MOTOR_1, PWM_MOTOR_2, CONTROLE_MOTOR_1_DIR_1, CONTROLE_MOTOR_1_DIR_2, CONTROLE_MOTOR_2_DIR_1, CONTROLE_MOTOR_2_DIR_2); ultrasonico = iniciaSensorUltrasonico(ULTRASONICO_LEITURA, ULTRASONICO_EMISSAO); Serial.begin(9600); } void loop(){ long distancia = leUltrasonico(ultrasonico); float potencia = (float) (1.0 - ( (float) distancia) / 255.0); Serial.print("distância: "); Serial.print(distancia); Serial.println("cm"); Serial.print("potência: "); Serial.print(potencia); if (potencia >= 0 && potencia <= 1) { controlaMotores(motores, DIRECAO_FRENTE, potencia, potencia, 1200); } } Algoritmo - Potência relativa à distância
  • 101. revisão aula 2 componentes aluno(a)s muito querido(a)s e comportado(a)s 2 professores muito engraçados 1 robô matador fim componentes inicio correção de exercícios prêmios de robótica da catolica sc apresentação do projeto dos alunos apresentação do protótipo apresentação dos componentes apresentação das bibliotecas de programação exercicios fim
  • 102. até a próxima! projeto dos colegas: Oficina de Arduino Joinville https://www.facebook.com/groups/oficinadearduinojoinville/ meu e-mail natambarbosa@gmail.com meu twitter @natabarbosa
  • 103.
  • 105.
  • 107. Regras
  • 108. Regras Básicas ➔ 1 robô por equipe ➔ Objetivo = empurrar o oponente para fora do dojô ➔ 1 round = 1 minuto ➔ 1 partida = no máximo 3 rounds ➔ O primeiro a fazer 2 pontos ganha a partida
  • 109. Regras de Tempo ➔ Robôs devem permanecer paralisados por 5 segundos ao início de cada round ➔ Tempo máximo de partida sem acréscimos = 3 minutos ➔ Tempo máximo de partida com acréscimos = 4 minutos e 30 segundos ➔ Acréscimo de 30 segundos ao tempo de round pode ser concedido pelo juíz ➔ Caso o tempo limite seja excedido antes de alguma equipe fazer 2 pontos, a equipe com 1 ponto ganha a partida
  • 110. Pode Modificar o programa entre partidas Entrar na área de competição entre rounds para manusear o robô Trocar bateria do robô entre partidas Torcer para o robô Comemorar vitórias Chorar por derrota NÃO pode Modificar o programa entre rounds Entrar na área de competição durante um round Paralisação do robô por mais de 5 segundos, exceto no início do round (ponto para o oponente) Demorar mais do que 30 segundos para começar novo round Insultar a equipe adversária ou insultar o robô oponente Contestar a decisão do juíz
  • 112. Leia o documento de regras
  • 114.
  • 115. Resultado 1° Lugar: Os Newbinha (Colégio Estadual Juracy Maria Brosing) 2° Lugar: AACD (E.E.B. Alicia Bittencourt Ferreira e E.E.B. Marli Maria de Souza) 3° Lugar: LTF (Colégio Estadual Juracy Maria Brosing) 4° Lugar: Alexitimia 5° Lugar: Heber Core e Paranauê Resultados Completos: http://goo.gl/hxiEPm