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

Ir para baixo
Thiaguin
Thiaguin
Mensagens : 176
Data de inscrição : 03/03/2020

Exercício 1.15 Sequencial pelo Trimpot Empty Exercício 1.15 Sequencial pelo Trimpot

Ter Jul 07, 2020 5:18 pm
/*
* CURSO DE ROBOTICA 2019
*
* Exercicio: 1.15
* Tema: Pinos Analógicos
* Atividade: Controlar a velocidade do sequencial conforme a posição do trimpot
* Descrição: Usar uma entrada analógica para medir a iposição do trimpot e usar esse valor para ajustar a velocidade
* Requisito1: A cada troca de estado deve ser atualizado o tempo confoeme posição do trimpot
* Requisito2: A variação de tempo deve ser inversamente proporcional ao valor do trimpot, ou seja, quanto maior o valor do trimpot menos rápido o sequencial
* Hardware: Ligar os leds nos pino digitais configurado como SAÍDA DIGITAL e o TRIMPOT em uma entrada analógica
* Comandos: pinMode(), analogRead(), digitalWrite(),delay(), map()
* Dica1:A o conversor analógico possui 10 bits ou seja de 0 até 1024
* Dica2: Usar a função debug() para checar as variações de valor do trimpot no pino analógico
* Dica3:Pode usar a função map() para converter a variação dos valores lidos no trimpot para as variações de tempo desejadas
* Dica4: Pode usar uma função para fazer a leitura do trimpot e temporização do sequencial
*/

//DEFINICOES INICIAIS
#define led1 3 //Definido que o pino 3 irá se chamar led1
#define led2 4 //Definido que o pino 4 irá se chamar led2
#define led3 5 //Definido que o pino 5 irá se chamar led3
#define led4 6 //Definido que o pino 6 irá se chamar led4
#define led5 7 //Definido que o pino 7 irá se chamar led5
#define led6 8 //Definido que o pino 8 irá se chamar led6
#define trimpot A0 //Definido que o pino A0 irá se chamar trimpot

//DECLARAcAO DE VARIAVEIS GLOBAIS
int tempo;//Variável para ser atribuído o valor do tempo

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1,OUTPUT);//Configurado o pino 3 como saída
pinMode(led2,OUTPUT);//Configurado o pino 4 como saída
pinMode(led3,OUTPUT);//Configurado o pino 5 como saída
pinMode(led4,OUTPUT);//Configurado o pino 6 como saída
pinMode(led5,OUTPUT);//Configurado o pino 7 como saída
pinMode(led6,OUTPUT);//Configurado o pino 8 como saída
Serial.begin(9600);//Porta serial será inicializada
}

//FUNÇÕES COMPLEMENTARES
void debug() {
Serial.print("temperatura=");//Quando a função for ativada ele irá colocar o valor da linha baixo
Serial.println(analogRead(trimpot));//O valor lido no trimpot será o valor atribuído à temperatura
Serial.println("tempo=");//Quando a função for ativada ele irá colocar o valor da linha de baixo
Serial.println(tempo);//O valor do intervalo de tempo será o valor atribuído na variável do próprio tempo
}
void debug2() {
tempo=map(analogRead(trimpot),279,930,30,300);//O valor do tempo será os valores lidos no trimpot convertidos pelos valores do tempo, pela função map
delay(tempo);//O valor do tempo será o valor atribuído pela variável tempo
debug();//A primeira função complementar será ativada dentro da segunda
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(led1,HIGH);//Quando o programa inicializar o led1 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led1,LOW);//Quando o intervalo de tempo acabar o led1 irá apagar
digitalWrite(led2,HIGH);//Quando o led1 apagar o led2 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led2,LOW);//Quando o intervalo de tempo acabar o led2 irá apagar
digitalWrite(led3,HIGH);//Quando o led2 apagar o led3 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led3,LOW);//Quando o intervalo de tempo acabar o led3 irá apagar
digitalWrite(led4,HIGH);//Quando o led3 apagar o led4 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led4,LOW);//Quando o intervalo de tempo acabar o led4 irá apagar
digitalWrite(led5,HIGH);//Quando o led4 apagar o led5 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led5,LOW);//Quando o intervalo de tempo acabar o led5 irá apagar
digitalWrite(led6,HIGH);//Quando o led5 apagar o led6 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led6,LOW);//Quando o intervalo de tempo acabar o led6 irá apagar
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 1.15 Sequencial pelo Trimpot Empty Re: Exercício 1.15 Sequencial pelo Trimpot

Sex Jul 10, 2020 1:46 am
Thiago, Alógica está correta, mas a calibração do trimpot não. Os valores variam numa escala diferente da que anotou,
Qaundo coloca o trimpot no mínimo o programa trava, porque vai dar um tempo negativo, ou muito alto, causando uma espera muito longa
Precisa colocar o debug para rodar, verificar os valores mínimos e máximos alcançado pelo trimpot, daí aplicar na função map()
nota 9.0
Thiaguin
Thiaguin
Mensagens : 176
Data de inscrição : 03/03/2020

Exercício 1.15 Sequencial pelo Trimpot Empty Re: Exercício 1.15 Sequencial pelo Trimpot

Ter Jul 14, 2020 6:19 pm
/*
* CURSO DE ROBOTICA 2019
*
* Exercicio: 1.15
* Tema: Pinos Analógicos
* Atividade: Controlar a velocidade do sequencial conforme a posição do trimpot
* Descrição: Usar uma entrada analógica para medir a iposição do trimpot e usar esse valor para ajustar a velocidade
* Requisito1: A cada troca de estado deve ser atualizado o tempo confoeme posição do trimpot
* Requisito2: A variação de tempo deve ser inversamente proporcional ao valor do trimpot, ou seja, quanto maior o valor do trimpot menos rápido o sequencial
* Hardware: Ligar os leds nos pino digitais configurado como SAÍDA DIGITAL e o TRIMPOT em uma entrada analógica
* Comandos: pinMode(), analogRead(), digitalWrite(),delay(), map()
* Dica1:A o conversor analógico possui 10 bits ou seja de 0 até 1024
* Dica2: Usar a função debug() para checar as variações de valor do trimpot no pino analógico
* Dica3:Pode usar a função map() para converter a variação dos valores lidos no trimpot para as variações de tempo desejadas
* Dica4: Pode usar uma função para fazer a leitura do trimpot e temporização do sequencial
*/

//DEFINICOES INICIAIS
#define led1 3 //Definido que o pino 3 irá se chamar led1
#define led2 4 //Definido que o pino 4 irá se chamar led2
#define led3 5 //Definido que o pino 5 irá se chamar led3
#define led4 6 //Definido que o pino 6 irá se chamar led4
#define led5 7 //Definido que o pino 7 irá se chamar led5
#define led6 8 //Definido que o pino 8 irá se chamar led6
#define trimpot A0 //Definido que o pino A0 irá se chamar trimpot

//DECLARAcAO DE VARIAVEIS GLOBAIS
int tempo;//Variável para ser atribuído o valor do tempo

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1,OUTPUT);//Configurado o pino 3 como saída
pinMode(led2,OUTPUT);//Configurado o pino 4 como saída
pinMode(led3,OUTPUT);//Configurado o pino 5 como saída
pinMode(led4,OUTPUT);//Configurado o pino 6 como saída
pinMode(led5,OUTPUT);//Configurado o pino 7 como saída
pinMode(led6,OUTPUT);//Configurado o pino 8 como saída
Serial.begin(9600);//Porta serial será inicializada
}

//FUNÇÕES COMPLEMENTARES
void debug() {
Serial.print("temperatura=");//Quando a função for ativada ele irá colocar o valor da linha baixo
Serial.println(analogRead(trimpot));//O valor lido no trimpot será o valor atribuído à temperatura
Serial.println("tempo=");//Quando a função for ativada ele irá colocar o valor da linha de baixo
Serial.println(tempo);//O valor do intervalo de tempo será o valor atribuído na variável do próprio tempo
}
void debug2() {
tempo=map(analogRead(trimpot),0,1022,30,300);//O valor do tempo será os valores lidos no trimpot convertidos pelos valores do tempo, pela função map
delay(tempo);//O valor do tempo será o valor atribuído pela variável tempo
debug();//A primeira função complementar será ativada dentro da segunda
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(led1,HIGH);//Quando o programa inicializar o led1 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led1,LOW);//Quando o intervalo de tempo acabar o led1 irá apagar
digitalWrite(led2,HIGH);//Quando o led1 apagar o led2 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led2,LOW);//Quando o intervalo de tempo acabar o led2 irá apagar
digitalWrite(led3,HIGH);//Quando o led2 apagar o led3 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led3,LOW);//Quando o intervalo de tempo acabar o led3 irá apagar
digitalWrite(led4,HIGH);//Quando o led3 apagar o led4 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led4,LOW);//Quando o intervalo de tempo acabar o led4 irá apagar
digitalWrite(led5,HIGH);//Quando o led4 apagar o led5 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led5,LOW);//Quando o intervalo de tempo acabar o led5 irá apagar
digitalWrite(led6,HIGH);//Quando o led5 apagar o led6 irá acender
debug2();//A segunda função complementar será ativada
digitalWrite(led6,LOW);//Quando o intervalo de tempo acabar o led6 irá apagar
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 1.15 Sequencial pelo Trimpot Empty Re: Exercício 1.15 Sequencial pelo Trimpot

Qui Jul 23, 2020 9:47 pm
Muito bom Thiago, nota 10.0
Conteúdo patrocinado

Exercício 1.15 Sequencial pelo Trimpot Empty Re: Exercício 1.15 Sequencial pelo Trimpot

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