- Trabalho Prático de Algoritmos e Programação usando Robô Arduino -

Documentos relacionados
- Tarefas Práticas de Programação usando Arduino - Imagem do Robô com Legendas

Programação em Linguagem C

MINICURSO ARDUINO BÁSICO

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Projeto 01. Adriano Joaquim de Oliveira Cruz Instituto de Matemática UFRJ 2015 Adriano Cruz. 30 de agosto de 2015

Arduino. Gilmar Aquino

Mundo Arduino: Vamos começar a programar?

O que você pode fazer com o Arduino

Aula 1 Apresentação e Conceitos Iniciais. Wellington Cássio Faria fb.com/wellingtoncf

Curso introdutório de microcontroladores - Plataforma Arduino

Oficina de Programação utilizando a plataforma Arduino

Robótica com Arduino Professor: Paulo Marcos Trentin

Arduino. Introdução aos Componentes Básicos. Leonardo Mauro P. Moraes. Universidade Federal de Mato Grosso do Sul - UFMS.

Estrutura Básica da Linguagem Arduino

MOBILIDADE SUSTENTÁVEL. Luís Martins Duarte Abreu

Kit controle remoto IR acionando 3 Led com Arduino

Arduino: primeiros passos para aprender e configurar.

ARDUINO BÁSICO E T A P A 1 O QUE É ARDUINO? Prof. Amadeu Zanon Neto

Introdução ao Arduino ESCOLA DE ARTES VISUAIS DO PARQUE LAGE. Núcleo de Arte e Tecnologia. julio lucio martin. Aula 01

INTRODUÇÃO A PLATAFORMA ARDUINO. TÁSSIO JOSÉ GONÇALVES GOMES

Estrutura de Condição. Professor Pedro

Caderno de Atividades 1

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Entrada de dados com botões

Programação Básica em Arduino Aula 2

Programação do Arduino. Parte 1. IDE Wiring

Oficina de Programação utilizando a plataforma Arduino

Oficina de Introdução ao Arduino

ROBÓTICA 1 INTRODUÇÃO A PROGRAMAÇÃO NO ARDUINO

Depois de configurada nossa comunicação serial podemos enviar vários comandos para comunicação entre o computador e o Arduino:

Disciplina: Laboratório de Fis26

Por Sergio Genilson Pfleger PLATAFORMA ROBÓTICA GENÉRICA BASEADA EM ARDUINO.

- Clique aqui e veja o video deste curso - Clique aqui para ver as imagens deste curso

Programação Básica em Arduino Aula 2

Introdução. O que é o Arduino?

Introdução do Arduino para aquisição de dados e controle de instrumentos

Introdução à Plataforma ARDUINO

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Introdução ao Arduino

Acendendo o Led com Arduino.

Arduino - Primeiros Passos

Programação em Linguagem C

Tutorial 133 DUO Criação de telas e utilização do teclado

Robótica com Arduino

Curso de Básico Arduino! Ministrado por: Wellington Cássio Faria Contato:

Atividade de laboratório 003. Prof: Carlos Eduardo de Brito Novaes 29 de abril de Alunos RA Nome Curso Semestre

ARDUÍNO PROCEDIMENTOS BÁSICOS

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Conhecendo o ARDUINO LEGENDA

Internet das Coisas Ferramentas Para Prototipação. João Bosco Teixeira Junior >

O ARDUINO. Plataforma de prototipagem eletrônica; Open Source; Formada por duas partes básicas: hardware e software.

Tutorial Proteus 02. Como simular o Arduino no Proteus ISIS utilizando a biblioteca "Emulater" por João Vitor

Pequenos Projetos com Arduino

Curso de robótica 2. Novos conceitos de programação

A protoboard ou Matriz de contatos é utilizada para fazer montagens provisórias e/ou teste de projetos. É constituída por uma base plástica, contendo

Lista de Exercícios A2

introdução Olá, Após alimentar você deve enviar comandos AT para verificar que o modulo está funcionando e comunicando via serial.

Manual do Receptor Infravermelho Studuino

ARDUINO. Níveis lógicos de referência VCC e GND Entradas e saídas digitais e analógicas.

Manual Studio Uno 2.0

Projeto No. 12 Display de Led de 7 Segmentos

Laboratório Bluetooth

Objetivos MICROCONTROLADORES SOFTWARE PROGRAMAÇÃO (PARTE: 04) Programação em Linguagem C

ESPECIFICAÇÕES E CONFIGURAÇÕES DO TRATÔMETRO

Por Fernando Koyanagi

Lista de Exercícios 1

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO PROJETO SCATMAN S DIMMER

OTUS X COMPACT. Manual do usuário

SEMÁFORO, SUPER MÁQUINA

ALGORITMOS, ARQUITETURA E ARDUINO

BEC- Bafômetro Embutido em Carros

GUIA RÁPIDO PARA INSTALAÇÃO DO CURUMIM

Projeto No. 11 Display de Leds de 7 Segmentos

MINICURSO ARDUINO AVANÇADO

Tutorial 132 CP DUO Configuração MODBUS Escravo

Programaçãodo RobôZug. Alex Vidigal Bastos

ROBOT ROAMER. Manual de utilização. Características do Recurso Educativo:

Podem ser substituídos pelo módulo P7-Sensor de Luminosidade da GBK Robotics.

Comunicação Serial 1

Configuração em modo Bridge

Projeto No. 2 Potenciômetro

Arduino. Prof. Maurício Dias

Sistemas de Controle 2

Introdução à Programação II. Nino Pereira

Arduino. Aula 3 motores

Manual de instruções. Requisito de sistema:

MINICURSO DE ARDUINO AULA 01. Gabriel de Melo Souza Lucas Nunes de Carvalho Max Rodrigues Marques Victor Paiva de Oliveira

Sequência de passos de programação, gravação e configuração do kit DE0-Nano Altera.

Minicurso de Arduino

Semáforo de 3 cores com interatividade (para carros e pedestres)

Transcrição:

Disciplina: Algoritmos e Programação Vale 1.5 para G2 Profa. Flavia Pereira de Carvalho - Trabalho Prático de Algoritmos e Programação usando Robô Arduino - Imagem do Robô com Legendas Dicas de código para resolver as tarefas: 1) Os pinos dos leds estão nas posições: 2, 3 e 4 2) Comandos básicos necessários para as tarefas (cuidar maiúsculas e minúsculas e os ; no final dos comandos): //declarar as variaveis int nome_variavel = número_posição_pino; //inicializar os pinos que serão executados: comando pinmode, nome da variavel e o comando OUTPUT pinmode(nome_variavel, OUTPUT); //se for usar mais de um pino (led), deve inicializar todos //laço (loop): comandos que serão executados no loop. digitalwrite é o comando de saída = escrever //HIGH liga e o LOW desliga digitalwrite(nome_variavel, HIGH); delay(1000); //tempo de espera em milissegundos digitalwrite(nome_variavel, LOW); delay(1000); //chaves para delimitar os blocos de código: confira se abriu e fechou corretamente

3) Após digitar o código fonte do programa, salve o arquivo no menu Arquivo Salvar (ou Ctrl+S) 4) Antes de compilar e enviar para a placa, você deve verificar se está selecionada a Placa correta: Arduino Uno, através do menu Ferramentas, conforme imagem abaixo: 5) Próximo passo é verificar qual Porta o Arduino que você está usando está conectada. As opções de Portas só aparecerão no menu, depois que você conectar o Robô no computador pela USB, conforme imagem abaixo: 6) Agora você deve Verificar o código, ou seja, Compilar para transformar em Linguagem de Máquina, através da primeira opção (botão) do menu: Se tiver algum erro, tem que arrumar e compilar novamente! 7) Por último (com o cabo USB do Robô já conectado no computador) você vai Enviar o seu programa para a placa Arduino através do segundo botão do menu, que é o de Carregar: Observação: Pode-se fazer direto a opção de Carregar, mas tem que estar com o Robô conectado no computador. Quando clicar em Carregar, vai compilar e logo carregar o software para a placa.

Material Explicativo retirado do seguinte site setup() e loop() Função: setup() A função setup() é chamada no momento em que o programa começa. É usada para inicializar variáveis, definir os modos de entrada ou saída dos pinos, indicar bibliotecas etc. Essa função é executada somente uma vez, quando o Arduino é iniciado ou quando é resetado. Função: loop() No Arduino, após a função setup(), que inicializa e declara os valores iniciais, a função loop() faz precisamente o que seu nome indica: ela repete-se continuamente permitindo que seu programa funcione dinamicamente. É utilizada para controlar de forma ativa a placa Arduino. pinmode(), digitalwrite() e delay() Função: pinmode() Descrição: Configura a porta especificada para se comportar tanto como entrada ou saída. Sintaxe: pinmode(pin, mode) //Atenção: Mode, inicia com M maiúsculo! Parâmetros: pin: o número do pino que deseja configurar mode: modo que deseja configurar o pino. INPUT para entrada e OUTPUT para saída Função: digitalwrite() Descrição: Altera o estado da porta para alto (HIGH) ou baixo (LOW) de uma porta digital. Se a porta foi configurada como saída (OUTPUT) pela função pinmode(), sua voltagem será correspondente aos valores de 5V (ou 3.3V nas placas de 3.3V) para alto (HIGH), e 0V para baixo (LOW). Sintaxe: digitalwrite(pin, value) //Atenção: Write, inicia com W maiúsculo! Parâmetros: pin: o número do pino correspondente value: HIGH para o estado alto ou LOW para o estado baixo

Função: delay() Descrição: Pausa o programa por um período de tempo (em milissegundos) especificado pelo parâmetro. 1000 milissegundos é igual a 1 segundo. Sintaxe: delay(ms) Parâmetros: ms: quantidade de milissegundos a parar o programa. digitalread() e writemicroseconds() Função: digitalread() Descrição: Essa função lê o valor presente em um pino digital. Este valor pode ser HIGH ou LOW. Sintaxe: digitalread(pin) //Atenção: Read, inicia com R maiúsculo! Parâmetros: pin: o número do pino que deseja ler Retorno: O retorno desta função é HIGH ou LOW. Função: writemicroseconds() Grava um valor em microssegundos para o servo, controlando o eixo em conformidade. Em um servo padrão, isto irá definir o ângulo do veio. Em servos standard um valor de parâmetro de 1000 é totalmente anti-horário, 2000 é totalmente no sentido horário, e 1500 é no meio.

Usando o ambiente de programação do Arduino, resolver as tarefas abaixo, em DUPLAS: a) Fazer cada tarefa em um arquivo separado. b) Ao final das tarefas, enviar os arquivos.ino por e-mail para a professora com os nomes da dupla: fpereira@faccat.br. Assunto do e-mail: Trabalho Arduino Fulano e Ciclano DICA: Os pinos mantêm seu estado até que algo novo seja enviado para eles, ou seja, um led aceso só se apaga se um novo comando for enviado para ele. 1) (0.0) Tarefa 1: Piscar um led 2) (0.2) Tarefa 2: Piscar os leds em sequência e depois voltar. Exemplo: 2, 3, 4, 3, 2... EXEMPLO para Tarefa 3: //Led verde bem da direita (pino 2) fica ligado até que pressione a chave direita. Ao pressionar a chave direita, desliga o led do pino 2. int ledverde = 2; //declarando variavel do led no pino posição 2: primeiro verde da direita para esquerda int chavedireita = 6; //declarando variavel da chave da direita = posição 6 (chave esquerda = pino 7) int nivelchavedireita; //declarando variavel da chave direita que será usada nos testes pinmode(ledverde, OUTPUT); //inicializando led ledverde do pino 2 como saída = comando ESCREVER pinmode(chavedireita, INPUT); //inicializando chavedireita posição 6 como entrada = comando LER nivelchavedireita = digitalread(chavedireita); //lê chavedireita e guarda na nivelchavedireita if(nivelchavedireita == HIGH){ //testa chave nivelchavedireita: HIGH é o default (está sempre ligada) digitalwrite(ledverde, HIGH); //liga o led ledverde do pino 2 else{ digitalwrite(ledverde, LOW); //se chave não ligada (HIGH) = desliga o led ledverde do pino 2 //a chave não estará ligada quando for pressionada = LOW 3) (0.2) Tarefa 3: Independente de qual chave seja pressionada (esquerda ou direita), o Led Verde bem da direita (pino 2) deve ser desligado.

EXEMPLO para as Tarefas 4 e 5: //Fazer o robô andar para frente #include<servo.h> //biblioteca do Arduino que provê controles para servos motores int motordireito = 8; //declarando variavel motordireito no pino da posição 8 int motoresquerdo = 9; //declarando variavel motordireito no pino da posição 9 Servo servodireito; //declarando variável servodireito como sendo do tipo Servo, pré-definido na //biblioteca Servo.h (na verdade é um objeto do tipo Servo, já que essa biblioteca, na //verdade, é uma classe) Servo servoesquerdo; //declarando classe e objeto servodireito.attach(motordireito); //informando que o cabo de sinal do servo servodireito está ligado //ao pino da posição 8 = motordireito servoesquerdo.attach(motoresquerdo); servodireito.writemicroseconds(2100); //valor para motor direita: sentido horário servoesquerdo.writemicroseconds(900); //valor para girar ao contrário: sentido anti horário //servoesquerdo.writemicroseconds(1500); //valor para o motor ficar parado: no meio 4) (0.2) Tarefa 4: Agora, o robô deve andar alguns segundos para frente, parar por alguns segundos, e novamente andar mais alguns segundos, parar novamente, andar novamente. Repetir essa sequência de andar parar andar parar andar. 5) (0.3) Tarefa 5: Agora o robô deve andar para frente por alguns segundos, parar uns segundos, e voltar para trás o mesmo número de segundos. Verificar se está parando exatamente no local de largada.

EXEMPLO para Tarefa 6: //Robô anda para frente e quando pressiona a chave esquerda, para. #include<servo.h> int motordireito = 8; int motoresquerdo = 9; int chaveesquerda = 7; int nivelchave; Servo servodireito; Servo servoesquerdo; servodireito.attach(motordireito); servoesquerdo.attach(motoresquerdo); pinmode(chaveesquerda, INPUT); nivelchave = digitalread(chaveesquerda); if(nivelchave == HIGH){ servodireito.writemicroseconds(2100); servoesquerdo.writemicroseconds(900); else{ { servodireito.writemicroseconds(1500); servoesquerdo.writemicroseconds(1500); 6) (0.3) Tarefa 6: Agora o robô deve andar para frente e quando tocar a chave esquerda, parar por 1 segundo e voltar para trás por alguns segundos. Aí, parar novamente, e avançar para frente novamente... se tocar na chave esquerda novamente, parar novamente 1 segundo e voltar para trás por alguns segundos. Aí, parar novamente, e avançar... (ciclo loop infinito), sempre repetindo a mesma função infinitamente.

EXEMPLO para Tarefa 7: //Robô anda para frente até pressionar chave esquerda. Ao pressionar chave esquerda, dá ré e desvia para direita. #include<servo.h> int motordireito = 8; int motoresquerdo = 9; int chaveesquerda = 7; int nivelchave; Servo servodireito; Servo servoesquerdo; servodireito.attach(motordireito); servoesquerdo.attach(motoresquerdo); pinmode(chaveesquerda, INPUT); nivelchave = digitalread(chaveesquerda); if(nivelchave == HIGH){ //enquanto a chave esquerda não estiver pressionada, fica andando para frente servodireito.writemicroseconds(2100); //roda direita em sentido horário: andar para frente servoesquerdo.writemicroseconds(900); //roda esquerda em sentido anti-horário: andar para frente else{ //quando a chave esquerda for pressionada, dá ré e desvia para direita servodireito.writemicroseconds(900); //para ré, inverter os sentidos das rodas servoesquerdo.writemicroseconds(2100); //roda esquerda horario: anda para trás delay(1000); servodireito.writemicroseconds(900); //desvio para direita: roda direita para trás (anti-horario) servoesquerdo.writemicroseconds(900);//roda esquerda anda para frente (anti-horario) delay(550); 7) (0.3) Tarefa 7: Manter anterior, e quando tocar na chave da direita, dar ré e desviar para a esquerda.