Sou meio novato em Arduino então se alguem poder me ajudar fico grato, estou com um código para o Display de 7 Segmentos contar de forma decrescente, no entanto queria faze-lo contar crescentemente ao apertar o botão, já tentei de várias formas sem sucesso, alguém poderia dar uma dica ou algo do tipo ? obg.
Segue código: Arduino.txt
Tags:
Seu programa me parece correto. O que acontece de errado?
aonde tem:
for (byte count = 16; count >0; --count) {
troca para:
for (byte count = 1; count <= 16; ++count) {
@Mauro Assis
Meu Problema e na hora de adicionar o botão, eu uso " if " para checar o estado do botão, só que tenho problema para sair do loop e executar o comando do botão.
@Flavio Bruzaca
Então, mas queria que ele fizesse isso enquanto o botão estivesse pressionado.
Algo assim:
// Define the LED digit patters, from 0 - 9
// Note that these patterns are for common cathode displays
// For common anode displays, change the 1's to 0's and 0's to 1's
// 1 = LED on, 0 = LED off, in this order:
// Arduino pin: 2,3,4,5,6,7,8
byte seven_seg_digits[16][7] = { { 1,0,0,0,0,0,0 }, // = 0
{ 1,1,1,1,1,0,0 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,1,1,0,0,0,0 }, // = 3
{ 0,1,0,1,1,0,0 }, // = 4
{ 0,1,0,0,0,0,1 }, // = 5
{ 0,0,0,0,0,0,1 }, // = 6
{ 1,1,1,1,0,0,0 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,1,0,0,0,0,0 }, // = 9
{ 0,0,0,1,0,0,0 }, // = A
{ 0,0,0,0,1,0,1 }, // = B
{ 1,0,0,0,0,1,1 }, // = C
{ 0,0,1,0,1,0,0 }, // = D
{ 0,1,1,0,0,0,0 }, // = E
{ 0,1,1,1,0,0,0 }, // = F
};
#define pinButton 10
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(pinButton,INPUT);
}
void sevenSegWrite(byte digit) {
byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[digit][segCount]);
++pin;
}
}
void loop() {
while(digitalRead(pinButton)==0); // espera até que o sujeito pressione o botão
for (byte count = 16; count >0; --count) {
if(digitalRead(pinButton) == 0) // se o cabra largou o botão...
break; // cai fora!
delay(1000);
sevenSegWrite(count);
}
delay(1000);
}
Olá Fabiano,
Adicione um if testando a condição do pino onde o botão está conectado, dentro deste if coloque a instrução de como vc quer que o display execute a sequencia de numeros, encerre o if e acione um else para o restante do programa.
ficaria assim:
Se botão presionado, faça, ascender display de 0 a F
Senão, ascender display de F a 0.
@Mauro
Obrigado, ajudou muito o botão agora funciona normalmente, eu modiquei um pouco mas o zero não aparece na contagem decrescente :/ , eu tenho que pressionar 2 vezes o botão para entrar no loop crescente, mas uma vez obg, e se não for abusar de uma olhadinha no codigo ja que nao consegui descobrir os erros citados. Segue modificações:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por