Exercises
The goal is to write a program which is able to perform tasks described below.
Warm up exercise
For beginners
This simulates standard traffic light for cars.
This simulates manually operated traffic light at pedestrian crossing. Until no button is pressed a green LED is lit for the cars. After pressing a button (S1) the green LED will start to blink for 3 seconds, this is followed by lighting the yellow LED for 3 seconds and red for 10 seconds, after this sequence a green LED is lit again. When red LED is on, the 7-segment display countdowns seconds until green LED starts.
This counts how many times the button is pressed. The result is displayed by blinking of the LEDs. After each pressing the number of blinking is increased by one. A random button can be selected. In order for the LED to blink a sub function must be used, with parameters set on the number of blinks.
Present numbers in hexadecimal system randomly on the 7-segment display. The frequency is 1 Hz.
Pressing button S1, the blinking speed of all three LEDs is slowed down two times. Pressing button S3, the blinking gets 2 times faster and pressing button S2 the frequency of the blinking will be set to 1 Hz. Using interrupt is required (do not use software delay).
Create three piece of musics, which will be played when button is pressed. Change the piece of music should be instant when other button is pressed.
For advanced
When pressing buttons in sequence S3 – S2 - S1, green LED will lit. All other combinations results red LED. Every button press a yellow LED will blink.
There is one button for each LED. The controller blinks LEDs randomly and the user has to repeat the same sequence. The sequence of blinks gets longer – one random LED is added with a new round. The sequence is controlled after each user. The time gap between each entry is two seconds. In case of an incorrect entry all LEDs blink three times. (The number of correct entries by the user may be displayed on a LCD screen).
Light in circular sequence 6 outside segments on the 7-segment indicator with the period of 500 ms.
Make a program where you can move “X” symbol around the screen. Use button S1 to move left, button S3 to move right and button S2 to change the row.
Write a simple worm game on the graphic LCD. The width of the worm is 1 pixel and the length is 5 pixels. The worm can be made to turn either left or right using buttons. The worm must be able to avoid collision with the border of the screen (turning before). Bonus points are for ability of picking up the eggs and making the worm to grow. The simplest solution is to make the worm out of the letter “O”.
Questions
What is the difference between operations”=” and”==” ? Give two examples to verify the statement.
What is the difference between operations “|” and “||”? Give two examples to verify the statement.
Write an expression using the equation “x = x + 1” twelve times.
How an endless loop is written in C-programming language? Provide two different examples.
What type of a variable do you choose in C–language to present positive values between 7 and 154?
Witch register determines the direction of a port? Provide an example of configuring settings of ports’ input and output.
What are the methods for eliminating the bouncing of the contacts and the false connections caused by flickering? Provide examples of solutions using both hardware and software.
What is bit shift? Give a practical example with an explanation.
Why are pull-up resistors used in switches? How is their resistance determined?
Calculate the resistance for regulating LED current, the voltage is 5 V, forward voltage of the LED is 2,7 V and the current is 30 mA.
How many pins uses the 7-segment number-indicator (with point segment), if it is connected directly to the controller? How many pins would be needed if if were controlled through the shift register 74HC595?
What determines the brightness of the 7-segment number-indicator? How can it be adjusted if the number-indicator is controlled a)directly b)through the shift register 74HC595?
How can the numbers in decimal system be converted to binary system (to text) and vice versa?
How is monochrome (black and white)LCD different from color LCD?
How is software delay created? On which parameters depends the duration of the software delay?
What makes us use hardware delay/timer with interruptions?
Calculate the overflow interruption period for 8-bit timer, if the clock rate is 16
MHz and frequency divider's factor is 1024.
What can be done with the AVR timers besides counting time?
Which is the longest duration of the interruptions in milliseconds which can be achieved with ATxmega128A1U micro-controller that work at the clock frequency of 32
MHz? Show the calculation formula.
In case the processor is heavily loaded with an execution of a program (for example, it controls several motors and the values of several sensors at once), does this have an effect on the accuracy of the timer? Explain your answer.