This project is about a digital clock with automatic correction of 7-Seg LED display and it is upgraded from my Digital Clock with Mirrored Display Driven by Accelerometers.
This clock can be rotated in any position keeping the digits readable even upside down or in a mirror image!
It is controlled by an Arduino and driven by accelerometers to find out the correct position in 3D coordinates.
Additionaly there is a feature to show the indoor ambient temperature in Celsius or in Fahrenheit degrees.
Now it is updated to Arduino 101.
The assemble is very simple and I hope you have fun using it!
1) Material List
The MPU-6050 breakout to be used with Arduino UNO consists in a triple axis accelerometer and gyroscope plus a temperature sensor with following specifications:
- Chip: MPU-6050
- Input Voltage: 3-5V
- ADC: 16 bits
- I/O: standard I2C
- Gyroscope full-scale range: ±250, 500, 1000, 2000°/s
- Accelerometer full-scale range: ±2, ±4, ±8, ±16g
- Temperature sensor range: -40 to +85 ºC
Multi Function Shield (MFD):
The MFD can simplify and speed up the prototype development.
- 4 digit 7-segment LED display module driven by two serial 74HC595's
- 4 x surface mount LED's in a parallel configuration
- 10K adjustable precision potentiometer
- 3 x independent push buttons
- Piezo buzzer
- DS18B20 temperature sensor interface
- LM35 temperature sensor interface
- Infrared receiver interface
- Serial interface header for convenient connection to serial modules such as Bluetooth, wireless interface, voice module, a voice recognition module, etc.
This version of the Arduino is no longer produced despite having interesting features such as temperature sensor, a 6-axis accelerometer and a gyroscope on board.
It is very useful for this project avoiding an external MPU.2) Assembly
The assembly is very simple and does not need any schematics:
- Insert the Multi Shield into the Arduino.
- Fasten the MPU-6050 breakout on the Arduino board using a tiny screw.
There only 04 jumper wires to be connected:
- Red wire: Vcc (+5V)
- Black wire: Gnd
- Green wire: SCL of MPU-6050 breakout to port #6 in the Multi Shield.
- Yellow wire: SDA of MPU-6050 breakout to port #5 in the Multi Shield.
There are 3 buttons to setup the clock:
- Left button: Press to adjust the hours. Quickly press to set up step by step. Continuous press to advance the hours quickly.
- Center button: Set the minutes. Continuous press to advance the hours quickly.
- Right button: a quick press to move for temperature mode.
Note: In Temperature Mode is possible to change the status to Fahrenheit or Celsius pressing the Left button.4) Code
The main functions of the code are:
- Reading of accelerometers inclination angles.
- Calculation of the transfer function for the 7-seg LED display (see pictures).
With the angles is possible to detect the spacial position of the clock and decide what routine will be released:
- Front View - Clock Stand Up
- Front View - Clock Upside Down
- Mirror View - Clock Stand Up
- Mirror View - Clock Upside Down