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

Ir para baixo
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Resolvido 2.12 Empty Resolvido 2.12

Qui Set 16, 2021 9:15 am
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.12
* Tema: Função FOR()
* 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()
* 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
*/

//DEFINICOES INICIAIS
#define led1 3 //Definido que o pino 3 vai se chamar "led1"
#define led2 4 //Definido que o pino 4 vai se chamar "led2"
#define led3 5 //Definido que o pino 5 vai se chamar "led3"
#define led4 6 //Definido que o pino 6 vai se chamar "led4"
#define led5 7 //Definido que o pino 7 vai se chamar "led5"
#define led6 8 //Definido que o pino 8 vai se chamar "led6"

//DECLARAcAO DE VARIAVEIS
int tempo = 52;//Variável Int Tempo=52
byte x = 14;//Variável Byte x=14

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT); //Programado o led1 como "Saída"
pinMode(led2, OUTPUT); //Programado o led2 como "Saída"
pinMode(led3, OUTPUT); //Programado o led3 como "Saída"
pinMode(led4, OUTPUT); //Programado o led4 como "Saída"
pinMode(led5, OUTPUT); //Programado o led5 como "Saída"
pinMode(led6, OUTPUT); //Programado o led6 como "Saída"
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
for(byte led1=2;led1<=12;led1++){//O valor da variavel led1 no começo ira começar como valor 2 e ira sendo somada a chegar de 1 ao 12
if(pino==3)pino=5;//Se o valor da variável pino for 3 irá passar a ser 5
if(pino==6)pino=8;//Se o valor da variável pino for 6 irá passar a ser 8
if(pino==9)pino=10;//SE o valor da variável pino for 9 irá passar a ser 10
byte x = 1;//Variável byte valor x
for(byte shine=0;shine<255;shine=shine+x){//O valor da variável shine irá começar com o valor 0 , e irá sendo somada com o valor de x , até chegar em 255
analogWrite(led1,shine);//O valor da variavel shine ira receber o numero do led1
delay(tempo);//Quando der um intervalo no tempo vai ser o valor da variavel tempo
if(brilho==255)x=-1;//O valor da variável x for igual a 255 irá passar a ser -1
}
}
}

Resolvido 2.12 Wink Wink Wink
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Resolvido 2.12 Empty Re: Resolvido 2.12

Sáb Set 18, 2021 12:20 am
Oi Monica, colocou como resolvido só que não, hehe
Tem alguns erros relacionados a troca de nome de variáveis.
- No primeiro for declarou uma variável com o mesmo nome do pino, isso não vai rolar
- no segundo for() quando mudou o nome da variável para shine, teria que mudar todas as referencia no programa, senão fica variável não declarada e erro na lógica do programa.

Vou dar nota 5.0 até que revise o programa.
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Resolvido 2.12 Empty Re: Resolvido 2.12

Qui Out 28, 2021 8:41 am
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.12
* Tema: Função FOR()
* 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()
* 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
*/

//DEFINICOES INICIAIS
#define led1 3 //Definido que o pino 3 vai se chamar "led1"
#define led2 4 //Definido que o pino 4 vai se chamar "led2"
#define led3 5 //Definido que o pino 5 vai se chamar "led3"
#define led4 6 //Definido que o pino 6 vai se chamar "led4"
#define led5 7 //Definido que o pino 7 vai se chamar "led5"
#define led6 8 //Definido que o pino 8 vai se chamar "led6"

//DECLARAcAO DE VARIAVEIS
int tempo = 52;//Variável Int Tempo=52
byte x = 14;//Variável Byte x=14

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT); //Programado o led1 como "Saída"
pinMode(led2, OUTPUT); //Programado o led2 como "Saída"
pinMode(led3, OUTPUT); //Programado o led3 como "Saída"
pinMode(led4, OUTPUT); //Programado o led4 como "Saída"
pinMode(led5, OUTPUT); //Programado o led5 como "Saída"
pinMode(led6, OUTPUT); //Programado o led6 como "Saída"
}

//FUNÇÕES COMPLEMENTARES

//PROGRAMA PRINCIPAL
void loop() {
for(byte led1=2;led1<=12;led1++){//O valor da variavel led1 no começo ira começar como valor 2 e ira sendo somada a chegar de 1 ao 12
if(pino==3)pino=5;//Se o valor da variável pino for 3 irá passar a ser 5
if(pino==6)pino=8;//Se o valor da variável pino for 6 irá passar a ser 8
if(pino==9)pino=10;//SE o valor da variável pino for 9 irá passar a ser 10
byte x = 14;//Variável byte valor x = 14
for(byte shine=0;shine<255;shine=shine+x){//O valor da variável shine irá começar com o valor 0 , e irá sendo somada com o valor de x , até chegar em 255
analogWrite(led1,shine);//O valor da variavel shine ira receber o numero do led1
delay(tempo);//Quando der um intervalo no tempo vai ser o valor da variavel tempo
if(shine==255)x=-1;//O valor da variável x for igual a 255 irá passar a ser -1
}
}
}
Refeito 2.12
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Resolvido 2.12 Empty Re: Resolvido 2.12

Ter Nov 23, 2021 12:04 am
Refeito e ainda nada feito, rs.
Tem erros no programa., preciso te ensinar como encontrar, interpretar e corrigir os erros.
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Resolvido 2.12 Empty Re: Resolvido 2.12

Qua Nov 24, 2021 9:21 am
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.12
* Tema: Função FOR()
* 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()
* 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
*/

//DEFINICOES INICIAIS
#define led1 3 //Definido que o pino 3 vai se chamar "led1"
#define led2 4 //Definido que o pino 4 vai se chamar "led2"
#define led3 5 //Definido que o pino 5 vai se chamar "led3"
#define led4 6 //Definido que o pino 6 vai se chamar "led4"
#define led5 7 //Definido que o pino 7 vai se chamar "led5"
#define led6 8 //Definido que o pino 8 vai se chamar "led6"

//DECLARAcAO DE VARIAVEIS
int tempo = 52;//Variável Int Tempo=52
byte x = 14;//Variável Byte x=14

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT); //Programado o led1 como "Saída"
pinMode(led2, OUTPUT); //Programado o led2 como "Saída"
pinMode(led3, OUTPUT); //Programado o led3 como "Saída"
pinMode(led4, OUTPUT); //Programado o led4 como "Saída"
pinMode(led5, OUTPUT); //Programado o led5 como "Saída"
pinMode(led6, OUTPUT); //Programado o led6 como "Saída"
}

//FUNÇÕES COMPLEMENTARES

//PROGRAMA PRINCIPAL
void loop() {
for(byte pino=3;pino<=12;pino++){//Ali o valor da variavel pino no começo vai começar como o valor 3,no casosendo somada aochegar 1 ao 12
if(pino==3)pino=5;//No caso da variavel pino for 3 vai passar a  ser 5
if(pino==6)pino=8;//No caso da variavel pino for 6 vai passar a  ser 8
if(pino==9)pino=10;//No caso da variavel pino for 9 vai passar a  ser 10
byte x = 14;//Variável byte valor x = 14
for(byte shine=0;shine<255;shine=shine+x){//Aqui o valor da varivel shine vai começar com o valor 0,e aos poucos sendo somada com o valor x,que vai chegar em 255
analogWrite(led1,shine);//Aqui o valor da variavel shine vai receber o numero do led1
delay(tempo);//Tempo
if(shine==255)x= -1;//Aqui a variavel x vai ser igual a 255 e vai passar a ser -1
}
}
}
Refeito e testado mas no teste so acendeu o led vermelho Wink Wink
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Resolvido 2.12 Empty Re: Resolvido 2.12

Sex Dez 10, 2021 1:37 am
Monica, precisa rever alguns conceitos para resolver esse programa.
1 - Para fazer o pisca gradual tem que usar os pinos PWM do arduino, senão não consegue controlar o brilho dos leds.
2 - quando usa o for para contar os pinos , não usa o nome do pino (aquele que coloca no #define) tem que usar o numero do pino, que é o usado no primeiro for() , que está contando o numero dos pinos, inclusive usa umns comandos para pular os que não são pwm.
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Resolvido 2.12 Empty Re: Resolvido 2.12

Sex Dez 10, 2021 3:33 pm

/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.12
* Tema: Função FOR()
* 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()
* 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
*/

//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"

//DECLARAcAO DE VARIAVEIS
int tempo = 52;//Variável Int Tempo=52
byte x = 14;//Variável Byte x=14

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT); //Programado o led1 como "Saída"
pinMode(led2, OUTPUT); //Programado o led2 como "Saída"
pinMode(led3, OUTPUT); //Programado o led3 como "Saída"
pinMode(led4, OUTPUT); //Programado o led4 como "Saída"
pinMode(led5, OUTPUT); //Programado o led5 como "Saída"
pinMode(led6, OUTPUT); //Programado o led6 como "Saída"
}

//FUNÇÕES COMPLEMENTARES

//PROGRAMA PRINCIPAL
void loop() {
for(byte pino = 3; pino <= 11; pino ++){//Ali o valor da variavel pino no começo vai começar como o valor 3,no casosendo somada aochegar 1 ao 12
if(pino == 4)pino = 5;//No caso da variavel pino for 4 vai passar a ser 5
if(pino == 7)pino = 9;//No caso da variavel pino for 7 vai passar a ser 9
if(pino == 8)pino = 10;//No caso da variavel pino for 8 vai passar a ser 10
byte x = 1;//Variável byte valor x = 14
for(byte shine = 0; shine < 255; shine = shine + x){//Aqui o valor da varivel shine vai começar com o valor 0,e aos poucos sendo somada com o valor x,que vai chegar em 255
analogWrite(pino,shine);//Aqui o valor da variavel shine vai receber o numero do led1
delay(tempo);//Tempo
if(shine == 255) x = -1;//Aqui a variavel x vai ser igual a 255 e vai passar a ser -1
}
}
}

Refeito e testdo
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Resolvido 2.12 Empty Re: Resolvido 2.12

Ter Abr 26, 2022 11:50 pm
Oi Monica, corrigi o exercício e quase funcionou, ele mantém aceso o led e deveria acender e depois apagar antes de passar para o proximo led.
O problema ocorre quando compara a variavel shine com 255 para mudar o x para -1. Use um número menor que 255 senão a função acaba antes de trocar o valor e decrementar o valor do brilho.
Como a lógica estava correta vou dar a nota 8.0
Conteúdo patrocinado

Resolvido 2.12 Empty Re: Resolvido 2.12

Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos