PWM COM TECLAS UP E DOWN COM DISPLAY 7 SEGMENTOS 0 A 9

BOA TARDE GALERA,

Ai vai mais um contributo aqui para os iniciantes (como eu). A intenção seria de ao invés de 1 display, teriam 3 para mostrar de 0 a 100. Como não tenho ainda habilidades para programar, mais sou curioso e um pouco auto-dadático, tanto é que este projeto nasceu de vários códigos extraídos da net e compilado com êxito, ai vai o código e o circuito.

Espero que tenham gostado do simples circuito. Você poderá utilizar para variar um motor DC e exibir de 0 a 9.

Valeu,

José Antonio

PS. e quem tiver afim de me ajudar a construir com 3 display aceito a ajuda.

Ah, fiz com botões e com potenciômetro.  

O código:

int motorPin = 3; // Motor conectados ao pino 3
int incPin = 4; // Pushbotton para ascelerar conectado no pino 4
int decPin = 5; // Pushbotton para desascelerar conectado no pino 5
int val = 0; // Valor 0 para motor
int incButton = LOW; // valor zerado no push de ascelerar
int decButton = LOW; // valor zarado no push de desascelerar
int displayA = 6; // segmentoA conectado no pino 6
int displayB = 7; // segmentoB conectado no pino 7
int displayC = 8; // segmentoC conectado no pino 8
int displayD = 10; // segmentoD conectado no pino 10
int displayE = 11; // segmentoE conectado no pino 11
int displayF = 12; // segmentoF conectado no pino 12
int displayG = 13; // segmentoG conectado no pino 13

void setup()
{
pinMode(incPin, INPUT); // Pino de acelerar setado como entrada
pinMode(decPin, INPUT); // Pino de desascelerar setado como entrada
pinMode(motorPin, OUTPUT); // Motor setado como sáida
analogWrite(motorPin, 0); // Valor zerado no motor

Serial.begin(9600); // Valor do serial para transferencia de dados

pinMode(6, OUTPUT); // Pino 6 será tipo saída de dados
pinMode(7, OUTPUT); // Pino 7 será tipo saída de dados
pinMode(8, OUTPUT); // Pino 8 será tipo saída de dados
pinMode(10, OUTPUT); // Pino 10 será tipo saída de dados
pinMode(11, OUTPUT); // Pino 11 será tipo saída de dados
pinMode(12, OUTPUT); // Pino 12 será tipo saída de dados
pinMode(13, OUTPUT); // Pino 13 será tipo saída de dados
}
//Programa começa aqui
void loop(){
incButton = digitalRead(incPin);
decButton = digitalRead(decPin);
if (incButton == HIGH)
{
if(val==255)val=255;
else val++;
}
if(val>=0){
digitalWrite(displayA, LOW); //Seguencia do numero 0
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, HIGH);
}
if(val>=3){ //se valor for menor ou igual que -1
digitalWrite(displayA, HIGH); //Seguencia do numero 1
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, HIGH);
}
if(val>=28){
digitalWrite(displayA, LOW); //Seguencia do numero 2
digitalWrite(displayB, LOW);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, LOW);
}
if(val>=56){
digitalWrite(displayA, LOW); //Seguencia do numero 3
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, LOW);
}

if(val>=94){
digitalWrite(displayA, HIGH); //Seguencia do numero 4
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
}
if(val>=128){
digitalWrite(displayA, LOW); //Seguencia do numero 5
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
}
if(val>=156){
digitalWrite(displayA, HIGH); //Seguencia do numero 6
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
}
if(val>=184){
digitalWrite(displayA, LOW); //Seguencia do numero 7
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, HIGH);
}
if(val>=214){
digitalWrite(displayA, LOW); //Seguencia do numero 8
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
}
if(val>=232){
digitalWrite(displayA, LOW); //Seguencia do numero 9
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
}
if(decButton == HIGH)
{
if(val==0)val=0;
else val=val-1;
}
Serial.println(val);
delay(120);
analogWrite(motorPin, val);
}

Exibições: 3471

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Carlos kwiek em 31 dezembro 2014 às 12:12

José,

O problema esta resolvido por favor desconsidere as mensagens abaixo desta, não sei realmente o motivo para postar aqui , mas a questão é que depois de carregar o código esperei uns minutos e dei um reset no Arduíno e tudo esta funcionando perfeitamente.

Veja se pode me dar uma ajuda neste outro caso, você saberia como eu deveria mudar o Código para que em vez de manter o botão pressionado para dimerizar, apenas com um pulso no botão ele acionasse o dimeriza, e outro botão o desdimeriza ( Se é que existe o termo rsrs)

Obrigado e um abraço!

Comentário de Carlos kwiek em 30 dezembro 2014 às 15:50

José,

Obrigado, veja, o problema que tenho ao carregar o codigo, é que o LED TX fica piscando por mais de 2 minutos aproximadamente e o LED 13 da placa acesso, depois destes dois minutos o TX para de piscar mas fica acesso, e o LED 13 também, não sei qual é o problema. Segue meu e-mail: kwiek@icloud.com.

Boa viagem, e Feliz 2015!!!

Grande abraço!

Carlos.

Comentário de Eduardo castellani em 30 dezembro 2014 às 13:15

Olá,  você disse: tanto é que este projeto nasceu de vários códigos extraídos da net e compilado com êxito.

 

Você poderia me ensinar como  unir vários trechos de código ?

Comentário de José Antonio do Nascimento em 30 dezembro 2014 às 6:54

José, segue novo desenho. Fiz uma pequena alteração mais estava correto também. Ficou mais visível.

Comentário de José Antonio do Nascimento em 30 dezembro 2014 às 6:45

Bom dia Xará.Antes de mais nada um Feliz Ano novo.

Não notei nada de errado com ele, se quiser me envie novamente o seu email que assim que puder te envio o codigo novamente. O desenho posso ter cometido alguma falha, mais como faço meus desenhos em ao menos 3 programas darei uma verificada. Já fui coordenador e instrutor eletro/eletrônico e uma coisa que não se deve fazer é postar algo errado para a galera ficar quebrando a cabeça, peço desculpas se tiver errado (isto é anti-didático). Bom vou fazer uma viagem hj as 10 da manhã então se não der tempo envio assim que puder ok.. Abraços

 

Comentário de Carlos kwiek em 26 dezembro 2014 às 17:53

José,

Notei também, (Não sei se estou certo), que existe uma discordância entre o vídeo e o desenho, na parte onde estão desenhados os resistores dos botoes, porque no desenho estão colocados de uma maneira e no vídeo me parece diferente a conexão.

Um abraço,

Carlos.

Comentário de Carlos kwiek em 26 dezembro 2014 às 17:29

José,

Parabéns pelo projeto, tentei implementar o mesmo mas tenho um problema, quando vou transferir o codigo para meu arduino uno, o led tx fica piscando por mais de dois minutos e depois para com ele acesso.

Com outros codigos o arduino funciona normal, e não existe nenhum erro de sintaxe no seu codigo, por tanto não sei se é erro de logica, você teve algu problema deste tipo?

Obrigado.

Um abraço.

Carlos.

Comentário de Eduardo castellani em 15 julho 2014 às 20:51

É VERDADE,  você vai "brincando com ele". Lembro-me de que comecei a ler um livro (muito explicativo e bom) e do nada com a brincadeira de fazer piscar o led, fiz um estrobo de polícia, e depois um semáforo de 2 vias. è só ter um pouco de noção e claro, um espaço deste aqui onde podemos pedir ajuda de outro garagistas e colaboradores. 

OBRIGADO E UM ABRAÇO

Comentário de José Antonio do Nascimento em 15 julho 2014 às 20:30

Boa noite Eduardo,

pois é, começou com led e depois modificado para motor com o irfz46n (tudo bem até ai sem mudança de código), mais depois achei na net um pwm que ia de 0 a 9 com display. Cortei um pedaço daqui, tirei um pedaço dali (e sem muitos conhecimentos em programação), e deu certo. O que mais me deixou satisfeito com o Arduino é que você tendo o conhecimento de onde são as entradas e onde são as saídas, você vai "brincando com ele". Lembro-me de que comecei a ler um livro (muito explicativo e bom) e do nada com a brincadeira de fazer piscar o led, fiz um estrobo de polícia, e depois um semáforo de 2 vias. è só ter um pouco de noção e claro, um espaço deste aqui onde podemos pedir ajuda de outro garagistas e colaboradores.

Abraço e qualquer ajuda posta aqui que com certeza o pessoal não vai negar em ajudar.

Comentário de Eduardo castellani em 15 julho 2014 às 20:16

Obrigado pelo post, mas voce disse: tanto é que este projeto nasceu de vários códigos extraídos da net e compilado com êxito. ENTÃO...eu queria unir varios trechos de codigo, mas como faz isso?

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço