Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
avatar
Daniel Lukas
Mensagens : 62
Data de inscrição : 06/03/2020
Idade : 17
Escola : Rua Aníbal Silva
https://sayajin-gamers-store.myshopify.com/

Exercício 2.23 Empty Exercício 2.23

Qua Jul 29, 2020 7:35 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.13
* Tema: Função FOR()e comando continue
* Atividade: Sequencial de 6 LEDS com acendimento gradual
* Descrição: fazer os 3 leds mais o led RGB piscarem de forma sequencial aumentando e reduzindo o brilho gradualmente
* Hardware: Ligar os 6 leds em seis pinos digital configurados como SAÍDA
* Comandos: pinMode, analogWrite, delay,for(), continue, break
* Dica1: Usar uma variavel para armazenar o tempo de espera entre as trocas de estado
* Dica2: Configurar os leds nos pinos em ordem sequencial, usar os pinos PWM 3,5,6,9,10,11 e o contador do for rodando esses pinos
* Dica3: As funções for() serão montadas uma dentro da outra
* Dica4: Uma função for() conta os pinos dos leds e dentro do bloco outra função for() conta o incremento e decremento do brilho
* Dica5: Para pular os pinos que não são PWM use o comando continue
* Dica6: Parar o sequencial caso uma tecla seja pressionada, usar interrupção para essa aplicação
*/

//DEFINICOES INICIAIS
#define led1 3 //Definido que o pino 3 vai se chamar "led1"
#define led2 5 //Definido que o pino 4 vai se chamar "led2"
#define led3 6 //Definido que o pino 5 vai se chamar "led3"
#define led4 9 //Definido que o pino 6 vai se chamar "led4"
#define led5 10 //Definido que o pino 7 vai se chamar "led5"
#define led6 11 //Definido que o pino 8 vai se chamar "led6"
#define tecla 2 // tecla de interrupção

//DECLARAcAO DE VARIAVEIS
bool parada = 0; //variavel declarada

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT); //programado o led1 como saida
pinMode(led2, OUTPUT); //programado o led2 como saida
pinMode(led3, OUTPUT); //programado o led3 como saida
pinMode(led4, OUTPUT); //programado o led4 como saida
pinMode(led5, OUTPUT); //programado o led5 como saida
pinMode(led6, OUTPUT); //programado o led6 como saida
attachInterrupt(0, parou,FALLING); //variavel com função para parar
}

//FUNÇÕES COMPLEMENTARES

void parou() {
parada = 1; // variavel declarada
}
//PROGRAMA PRINCIPAL
void loop() {
for(byte pino = 3 ; pino <= 11 ; pino++){ //configurado os pinos analogicos que serão ativados
if(pino == 4 || pino == 7 || pino == 8)break; //pino com função de parar
byte x = 1; // variavel
for(byte brilho = 0 ; brilho < 255 ; brilho = brilho + x){ //brilho cm função para ativar os pinos
analogWrite(pino, brilho); //Acende o Led correspondente ao valor de brilho
delay(10); //tempo de espera
if(brilho == 253) x = -1;
if(parada == 1) break;//variavel com função de parar
}
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5021
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.23 Empty Re: Exercício 2.23

Qui Jul 30, 2020 10:50 pm
Daniel, Precisa revisar o código.
Veja como funciona o continue e como ele é utilizado para pular os pinos que não são PWM, no exercício 2.12 fizemos isso
Revisa a utilização do break e como empregá-lo, principalmente nesse programa
A tecla precisa ser inicializada como pull_up, senão não funciona
Lembre que tem dois for() um dentro do outro, precisa empregar o break nas duas estruturas
Nota 4.0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos