Controlling a servomotor
As we are now able to read the input to the keypad, the thing that is missing to build a safety lock is some kind of motor. For that case, we are going to use an SG90 servomotor. As of the time of writing, the timings on the Arduino Uno are not accurate enough to completely control the SG90 servomotor, but that is not a problem for our use case. We are just going to move the servo in one direction, which is clockwise. Also, there is currently no official driver for the SG90 servomotor, so we are going to write our own!
Understanding SG90 servomotors
SG90 servomotors are controlled by Pulse Width Moduluation (PWM). Basically, the SG90 reads inputs in a 50 Hz period. During this period, we can tell the servomotor to adjust itself to a certain angle by setting a signal for a certain amount of time. The signal length is called the duty cycle. After the duty cycle, we wait for the rest of the period. Depending on the duty cycle (the pulse width), the SG90...