Posts | Comments

Planet Arduino

Archive for the ‘7-segment display’ Category

Alarm clocks of old—and certainly many of those today—require several button pushes to set things up properly. Maker Michael Wessel, however, decided to implement his own take on a more intuitive clock, creating a device that features three separate eight-digit seven-segment LED panels. Eight buttons allow for direct manipulation of each of the digits, with their own dedicated LEDs.

The info on display includes time and date, as well as temperature, and it can even show how many days, hours, or minutes have passed since a special pre-programmed day. Up to seven audible alarms are available, which can be silenced by a loud noise (e.g. clapping your hands) via a sound sensor. 

The clock is controlled via an Arduino Mega, along with an RTC module to keep things accurate.

I remember I always had to set all digital clocks for my grandparents in the ’80s — these clocks and watches always required some complicated button juggling! So, here it is: a DIY LED alarm clock that my grandparents would have been able to set and use without my help! 

An Arduino-based LED clock with 7 individual alarms, highly intuitive user interface, temperature display, and display of days / hours / minutes passed since a special date, e.g., your birthday. An active / ringing alarm can be disabled by making a loud noise, e.g., by clapping your hands. Timer-based PWM sound output for alarm melodies. 

The Arduino’s EEPROM is being used to store the alarms of course, and the DS3231 RTC is battery backed up, so it survives a temporary power outage and you won’t be late for work the next morning. 

This was put together rather quickly, thanks to off the shelf components, Velcro and existing Arduino libraries for them! The clock can be built for about $30 – 40. 

When you, perhaps after being late for an important event one too many times, decide to build a wall clock, there are many DIY options from which to choose. But none may be as massive or unique as the aptly named “Titan Clock.”

To justify this particular design, hacker “ProtheanSoft” lists several of its advantages, such as its large size, energy efficiency (runs on a smartphone charger), thinness (only 18mm thick with casing), and of course, affordability.

The Titan Clock—which can be assembled for less than $50—consists of RGB LEDs, inexpensive craft materials like foamcore board, acrylic and aluminum sheets, as well as recycled components including the diffuser from a broken LCD monitor or TV to generate a uniform glow for each segment. 

The project uses an Arduino Nano for control, along with with a DS3231 RTC module for accurate timekeeping. In this version, the Arduino is programmed to display the time and change color every hour based on a predetermined table.

Interested in creating your own? You can find more details on the build here, as well its code and a wiring diagram on GitHub.

Gen
20

[Apachexmd] wanted to do something fun for his three-year-old son’s birthday party. Knowing how cool race cars are, he opted to build his own Hot Wheels drag race timer. He didn’t take the easy way out either. He put both his electronics and 3D printing skills to the test with this project.

The system has two main components. First, there’s the starting gate. The cars all have to leave the gate at the same time for a fair race, so [Apachexmd] needed a way to make this electronically controlled. His solution was to use a servo connected to a hinge. The hinge has four machine screws, one for each car. When the servo is rotated in one direction, the hinge pushes the screws out through holes in the track. This keeps the cars from moving on the downward slope. When the start button is pressed, the screws are pulled back and the cars are free to let gravity take over.

The second component is the finish line. Underneath the track are four laser diodes. These shine upwards through holes drilled into the track. Four phototransistors are mounted up above. These act as sensors to detect when the laser beam is broken by a car. It works similarly to a laser trip wire alarm system. The sensors are aimed downwards and covered in black tape to block out extra light noise.

Also above the track are eight 7-segment displays; two for each car. The system is able to keep track of the order in which the cars cross the finish line. When the race ends, it displays which place each car came in above the corresponding track. The system also keeps track of the winning car’s time in seconds and displays this on the display as well.

The system runs on an Arduino and is built almost exclusively out of custom designed 3D printed components. Since all of the components are designed to fit perfectly, the end result is a very slick race timer. Maybe next [Apachexmd] can add in a radar gun to clock top speed. Check out the video below to see it in action.


Filed under: Arduino Hacks, toy hacks
Giu
29

Arduino 2 Digit 7 Segment Display Sketch (with Buttons) | Part 5

7-segment display, arduino, button, code, project, sketch Commenti disabilitati su Arduino 2 Digit 7 Segment Display Sketch (with Buttons) | Part 5 

* This is a multi-part post. Here are links to all parts: Part 1: Intro, bill of materials and simple sketch Part 2: The circuit for the 2-digit 7-segment counter Part 3: Sketch broken down in sections, explained Part 4: Added two buttons, and modified sketch Part 5: Code for buttons, explained; this post As […]
Giu
22

Arduino 2-Digit 7-Segment Display with Buttons | Part 4

7-segment display, arduino, button, code, project, sketch, video Commenti disabilitati su Arduino 2-Digit 7-Segment Display with Buttons | Part 4 

This week we modify the original circuit and sketch to include two buttons, one to control each digit of the display.

Here’s what the setup looks like:

2-Digit 7-Segment Display

And here’s the complete sketch:

// www.TinkerHobby.com
// Natalia Fargasch Norman
// Dual seven-segment LED Display with buttons
// Common Anode digit 1 pin 10
// Common Anode digit 2 pin 5

//       CA1 G  F  A  B
//        |  |  |  |  |      -> pins and segments they control
//   ---------    ---------
//   |   A   |    |   A   |
//  F|       |B  F|       |B
//   |---G---|    |---G---|
//  E|       |C  E|       |C
//   |   D   |    |   D   |
//   ---------    ---------
//        |  |  |  |  |      -> pins and segments they control
//        D  DP E  C CA2         

// Segments that make each number when lit:
// 0 => -FEDCBA
// 1 => ----BC-
// 2 => G-ED-BA
// 3 => G--DCBA
// 4 => GF--CB-
// 5 => GF-DC-A
// 6 => GFEDC-A
// 7 => ----CBA
// 8 => GFEDCBA
// 9 => GF-DCBA

// Arduino digital pins used to light up
// corresponding segments on the LED display
#define A 3
#define B 2
#define C 6
#define D 8
#define E 7
#define F 4
#define G 5

// Pushbuttons connected to pins 9 and 10
#define BTN1 9
#define BTN2 10

// Pins driving common anodes
#define CA1 13
#define CA2 12

// Pins for A B C D E F G, in sequence
const int segs[7] = { A, B, C, D, E, F, G };

// Segments that make each number
const byte numbers[10] = { 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010,
0b0000010, 0b1111000, 0b0000000, 0b0010000 };

int digit1 = 0;
int digit2 = 0;

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BTN1, INPUT);
  pinMode(BTN2, INPUT);
  pinMode(CA1, OUTPUT);
  pinMode(CA2, OUTPUT);
}

void loop() {

  // check button1
  int val1 = digitalRead(BTN1);
  if (val1 == HIGH) {
    digit1++;
    digit1 %= 10;
    delay(10);
  }

  // check button2
  int val2 = digitalRead(BTN2);
  if (val2 == HIGH) {
    digit2++;
    digit2 %= 10;
    delay(10);
  }

  // display number
  unsigned long startTime = millis();
  for (unsigned long elapsed=0; elapsed < 600; elapsed = millis() - startTime) {
    lightDigit1(numbers[digit1]);
    delay(5);
    lightDigit2(numbers[digit2]);
    delay(5);
  }
}

void lightDigit1(byte number) {
  digitalWrite(CA1, LOW);
  digitalWrite(CA2, HIGH);
  lightSegments(number);
}

void lightDigit2(byte number) {
  digitalWrite(CA1, HIGH);
  digitalWrite(CA2, LOW);
  lightSegments(number);
}

void lightSegments(byte number) {
  for (int i = 0; i < 7; i++) {
    int bit = bitRead(number, i);
    digitalWrite(segs[i], bit);
  }
}

Here’s a video of the Arduino 2-digit 7-segment display counter with buttons in action.

Arduino 2-Digit 7-Segment Display with Buttons | Part 4 originally appeared on Tinker Hobby on June 22, 2010.



  • Newsletter

    Sign up for the PlanetArduino Newsletter, which delivers the most popular articles via e-mail to your inbox every week. Just fill in the information below and submit.

  • Like Us on Facebook