How can we keep count of button clicks in verilog? The idea is that everytime on
ID: 2082741 • Letter: H
Question
How can we keep count of button clicks in verilog?
The idea is that everytime one button (btn3) is pressed we need to add a "quarter" to the total for the vending machine.
- so when you press btn3, the number "25" will be displayed on the 7segment display (seg0 and seg1)
- then if button is pressed a 2nd time it we will display "50" on seg0 and seg1
- then if button is pressed a 3rd time it we will display "75" on seg0 and seg1
- if the button is pressed a 4th time we will display "10" on seg0 and seg1
Explanation / Answer
Solution:
Verilog Code: (count of button Press)
int number1 =25;
int number2=50;
int number3=75;
int number4=10;
int button1=2;
int button2=3;
int button3=4;
int button4=5;
int button1state=0;
int button2state=0;
int button3state=0;
int button4state=0;
int segment0=0;
int segment1=0;
void setup()
{
pinmode(button1,input);
pinmode(button2,input);
pinmode(button3,input);
pinmode(button4,input);
}
void loop()
{
button1state = digitalread(button1);
if(button1state == high && segment0<=350)
{
segment0=segment0+1;
digitalwire(number1,segment0);
delay(350);
}
button2state = digitalread(button2);
if(button2state == high && segment0<=350 && segment1<=350)
{
segment0=segment0+1;
segment1=segment1+1;
digitalwire(number2,segment0,segment1);
delay(350);
}
button3state = digitalread(button3);
if(button3state = =high && segment0<=350 && segment1<=350)
{
segment0=segment0+1;
segment1=segment1+1;
digitalwire(number3,segment0,segment1);
delay(350);
}
button4state = digitalread(button4);
if(button4state = =high && segment0<=350 && segment1<=350)
{
segment0=segment0+1;
segment1=segment1+1;
digitalwire(number4,segment0,segment1);
delay(350);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.