Bom dia! Sou novo com arduíno e preciso de ajuda. Quero fazer, em uma Arduino mega, um contador de 0 à 9 em um display de 7 segmentos com 4 botões, e cada vez que pressiono qualquer botão, soma-se mais 1 dígito no display. O display de 7 segmentos é catodo comum e o arduíno é o mega, já procurei vídeos aulas/tutoriais e não encontrei nada para me ajudar.
Olá, vamos por partes.
Parte 1
Arduino Mega com display de 7 segmentos.
Veja este tutorial.
(se tiver problemas com inglês, use o tradutor do google).
Parte 2
Coloque os botões em 4 pinos diferente do arduino;
Escreva uma rotina que lê os botões e caso eles esteja pressionados, incremente o contador.
Se tiver dificuldade com a modificação do código, publique aqui a sua tentativa de faze-lo e então o ajudaremos a resolver a dificuldade.
Olá, boa noite! Fiz meu código com a montagem mas deu erro, não consegui prosseguir com o código. Preciso de ajuda ![]()
O código que utilizei foi este:
byte numero [10][8]=
{
{1,1,1,1,1,1,0,0}
{0,1,1,0,0,0,0,0}
{1,1,0,1,1,0,1,0}
{1,1,1,1,0,0,1,0}
{0,1,1,0,0,1,1,0}
{1,0,1,1,0,1,1,0}
{1,0,1,1,1,1,1,0}
{1,1,1,0,0,0,0,0}
{1,1,1,1,1,1,1,0}
{1,1,1,0,0,1,1,0}
}
bool anterior[10][8]=
{
{1,1,1,1,1,1,0,0}
{0,1,1,0,0,0,0,0}
{1,1,0,1,1,0,1,0}
{1,1,1,1,0,0,1,0}
{0,1,1,0,0,1,1,0}
{1,0,1,1,0,1,1,0}
{1,0,1,1,1,1,1,0}
{1,1,1,0,0,0,0,0}
{1,1,1,1,1,1,1,0}
{1,1,1,0,0,1,1,0}
}
void setup(){
int i;
for (i = 2; i<=8; i++) { pinMode(i, OUTPUT);
digitalWrite(i, LOW); }
int b;
for (b = 9; b <= 12; i++) { pinMode(b, INPUT); }
}
void loop ( )
{
for ( i = 0; i <=9; i++) {
Int bot = digitalRead(b)
If (bot != anterior [ i ]) {
delay (20)
anterior[ i ]= bot;
}
}
If (bot == LOW) {
sev.seg.setNumber(i+1);
}
else {
sevseg.black( );
}
}
}
Ele não está funcionando e apresenta erros, não estou conseguindo resolver.
assim por alto tens um erro aqui:
void loop() {
int i; // <- Falta-te isto.
Depois:
Int bot = digitalRead(b) // Int não existe e falta-te um ; no final desta instrução.
Depois:
If (bot != anterior [ i ]) { //estás a comprar um bit a um array de bits... o que esperas tirar daqui?
Mas se disseres quais são os erros é mais fácil de te ajudar.
Eu refiz o código e deixei ele diferente do anterior; ele tá funcionando, mas os botões não estão funcionando quando são clicados. Não aparece o dígito de quantas vezes os botões foram pressionados e não estou conseguindo resolver. Uma parte do código está funcionando, mas falta a parte principal que é o botão :(.
int botao1 = 9;
int botao2 = 10;
int botao3 = 11;
int botao4 = 12;
int lei1 = 0;
int lei2 = 0;
int lei3 = 0;
int lei4 = 0;
int ultlei1 = 0;
int ultlei2 = 0;
int ultlei3 = 0;
int ultlei4 = 0;
int number = 0;
void setup(){
int i;
for (i = 2; i < 9; i++) { pinMode(i, OUTPUT);
digitalWrite(i, LOW); }
pinMode (botao1, INPUT);
pinMode (botao2, INPUT);
pinMode (botao3, INPUT);
pinMode (botao4, INPUT);
Serial.begin (9600);
byte number [10][8] = {
{1,1,1,1,1,1,0,0},
{0,1,1,0,0,0,0,0},
{1,1,0,1,1,0,1,0},
{1,1,1,1,0,0,1,0},
{0,1,1,0,0,1,1,0},
{1,0,1,1,0,1,1,0},
{1,0,1,1,1,1,1,0},
{1,1,1,0,0,0,0,0},
{1,1,1,1,1,1,1,0},
{1,1,1,0,0,1,1,0},
};
}
void loop ( )
{
lei1 = digitalRead (botao1);
lei2 = digitalRead (botao2);
lei3 = digitalRead (botao3);
lei4 = digitalRead (botao4);
if (lei1 != ultlei1) {
if (lei1 == HIGH) {
number ++;
}
}
ultlei1 = lei1;
if (lei2 != ultlei2) {
if (lei2 == HIGH) {
number ++;
}
}
ultlei2 = lei2;
if (lei3 != ultlei3) {
if (lei3 == HIGH) {
number ++;
}
}
ultlei3 = lei3;
if (lei4 != ultlei4) {
if (lei4 == HIGH) {
number ++;
}
}
ultlei4 = lei4;
Serial.println(number);
if (number >= 10) {
number = 0;
}
if (number <= -1) {
number = 9;
}
}
O código que utilizei foi este. Poderiam me ajudar com isso? Por favor!
Olá,
testa este Código e veja se funciona os botões como vc precisa.
int botao1 = 9;
int botao2 = 10;
int botao3 = 11;
int botao4 = 12;
int number = 0;
bool flag = false;
void setup() {
int i;
for (i = 2; i < 9; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
pinMode (botao1, INPUT);
pinMode (botao2, INPUT);
pinMode (botao3, INPUT);
pinMode (botao4, INPUT);
Serial.begin (9600);
byte number [10][8] = {
{1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 0, 0, 0, 0, 0},
{1, 1, 0, 1, 1, 0, 1, 0},
{1, 1, 1, 1, 0, 0, 1, 0},
{0, 1, 1, 0, 0, 1, 1, 0},
{1, 0, 1, 1, 0, 1, 1, 0},
{1, 0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 0, 0, 1, 1, 0},
};
}
void loop ( )
{
if (digitalRead (botao1) == HIGH or digitalRead (botao2) == HIGH or digitalRead (botao3) == HIGH or digitalRead (botao4) == HIGH )
{
delay(30);
while (digitalRead (botao1) == HIGH or digitalRead (botao2) == HIGH or digitalRead (botao3) == HIGH or digitalRead (botao4) == HIGH )
{
flag = true;
}
}
if (flag == true)
{
number++;
if (number >= 10) {
number = 0;
}
if (number <= -1) {
number = 9;
}
flag = false;
Serial.println(number);
}
}
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.