//BINARY TO NUMBERS SIMPLE ARDUINO UNO CONVERTER 0-9
/*Binary table 0-16 for beginners
X3 X2 X1 X0
0 0 0 0 = 0
0 0 0 1 = 1
0 0 1 0 = 2
0 0 1 1 = 3
0 1 0 0 = 4
0 1 0 1 = 5
0 1 1 0 = 6
0 1 1 1 = 7
1 0 0 0 = 8
1 0 0 1 = 9
1 0 1 0 = 10 (out of range for one 7 segment display)
1 0 1 1 = 11 (out of range for one 7 segment display)
1 1 0 0 = 12 (out of range for one 7 segment display)
1 1 0 1 = 13 (out of range for one 7 segment display)
1 1 1 0 = 14 (out of range for one 7 segment display)
1 1 1 1 = 15 (out of range for one 7 segment display)
*/
/*Tutorial (How to set up arduino with 7 segment display)
Pins 2-9 are display pins
Pins 10-13 are data input pins
Segment "A" (top middle) is on pin number 2
Segment "B" (top right) is on pin number 3
Segment "C" (bottom right) is on pin number 4
Segment "D" (bottom middle) is on pin number 5
Segment "E" (bottom left) is on pin number 6
Segment "F" (top left) is on pin number 7
Segment "G" (middle) is on pin number 8
Segment "DP"(dot) is on pin number 9
*/
//If your display doesn't work, switch from +5V to GND and swap HIGH/LOW (ON/OFF) properties
// to get 0 on data input pin connect it to ground (GND)
// to get 1 on data input pin connect it to +5V
//CODE:
//set delay time in ms
#define setdelay 250
//on/off properties for display
int ON = LOW;
int OFF = HIGH;
//x0 x1 x2 x3
int X3 = 13;
int X2 = 12;
int X1 = 11;
int X0 = 10;
//set segments
int segmentA = 2;
int segmentB = 3;
int segmentC = 4;
int segmentD = 5;
int segmentE = 6;
int segmentF = 7;
int segmentG = 8;
int segmentDP = 9;
void setup() {
//turn display OFF
digitalWrite(segmentA, OFF);
digitalWrite(segmentB, OFF);
digitalWrite(segmentC, OFF);
digitalWrite(segmentD, OFF);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, OFF);
digitalWrite(segmentG, OFF);
digitalWrite(segmentDP, OFF);
//set pin modes display
pinMode(segmentA, OUTPUT);
pinMode(segmentB, OUTPUT);
pinMode(segmentC, OUTPUT);
pinMode(segmentD, OUTPUT);
pinMode(segmentE, OUTPUT);
pinMode(segmentF, OUTPUT);
pinMode(segmentG, OUTPUT);
pinMode(segmentDP, OUTPUT);
//set pin modes X3, X2, X1, X0
pinMode(X3, INPUT);
pinMode(X2, INPUT);
pinMode(X1, INPUT);
pinMode(X0, INPUT);
//does the display work?
segmentTest();
}
void loop() {
//0000 = 0
if (digitalRead(X3) == LOW && digitalRead(X2) == LOW && digitalRead(X1) == LOW && digitalRead(X0) == LOW) {
zero();
}
//0001 = 1
if (digitalRead(X3) == LOW && digitalRead(X2) == LOW && digitalRead(X1) == LOW && digitalRead(X0) == HIGH) {
one();
}
//0010 = 2
if (digitalRead(X3) == LOW && digitalRead(X2) == LOW && digitalRead(X1) == HIGH && digitalRead(X0) == LOW) {
two();
}
//0011 = 3
if (digitalRead(X3) == LOW && digitalRead(X2) == LOW && digitalRead(X1) == HIGH && digitalRead(X0) == HIGH) {
three();
}
//0100 = 4
if (digitalRead(X3) == LOW && digitalRead(X2) == HIGH && digitalRead(X1) == LOW && digitalRead(X0) == LOW) {
four();
}
//0101 = 5
if (digitalRead(X3) == LOW && digitalRead(X2) == HIGH && digitalRead(X1) == LOW && digitalRead(X0) == HIGH) {
five();
}
//0110 = 6
if (digitalRead(X3) == LOW && digitalRead(X2) == HIGH && digitalRead(X1) == HIGH && digitalRead(X0) == LOW) {
six();
}
//0111 = 7
if (digitalRead(X3) == LOW && digitalRead(X2) == HIGH && digitalRead(X1) == HIGH && digitalRead(X0) == HIGH) {
seven();
}
//1000 = 8
if (digitalRead(X3) == HIGH && digitalRead(X2) == LOW && digitalRead(X1) == LOW && digitalRead(X0) == LOW) {
eight();
}
//1001 = 9
if (digitalRead(X3) == HIGH && digitalRead(X2) == LOW && digitalRead(X1) == LOW && digitalRead(X0) == HIGH) {
nine();
}
//1010 = ERROR
if (digitalRead(X3) == HIGH && digitalRead(X2) == LOW && digitalRead(X1) == HIGH && digitalRead(X0) == LOW) {
OutOfRange();
}
//1011 = ERROR
if (digitalRead(X3) == HIGH && digitalRead(X2) == LOW && digitalRead(X1) == HIGH && digitalRead(X0) == HIGH) {
OutOfRange();
}
//1100 = ERROR
if (digitalRead(X3) == HIGH && digitalRead(X2) == HIGH && digitalRead(X1) == LOW && digitalRead(X0) == LOW) {
OutOfRange();
}
//1101 = ERROR
if (digitalRead(X3) == HIGH && digitalRead(X2) == HIGH && digitalRead(X1) == LOW && digitalRead(X0) == HIGH) {
OutOfRange();
}
//1110 = ERROR
if (digitalRead(X3) == HIGH && digitalRead(X2) == HIGH && digitalRead(X1) == HIGH && digitalRead(X0) == LOW) {
OutOfRange();
}
//1111 = ERROR
if (digitalRead(X3) == HIGH && digitalRead(X2) == HIGH && digitalRead(X1) == HIGH && digitalRead(X0) == HIGH) {
OutOfRange();
}
}
void zero() {
//forms number 0
digitalWrite(segmentA, ON);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, ON);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, OFF);
digitalWrite(segmentDP, OFF);
}
void one() {
//forms number 1
digitalWrite(segmentA, OFF);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, OFF);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, OFF);
digitalWrite(segmentG, OFF);
digitalWrite(segmentDP, OFF);
}
void two() {
//forms number 2
digitalWrite(segmentA, ON);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, OFF);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, ON);
digitalWrite(segmentF, OFF);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, OFF);
}
void three() {
//forms number 3
digitalWrite(segmentA, ON);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, OFF);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, OFF);
}
void four() {
//forms number 4
digitalWrite(segmentA, OFF);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, OFF);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, OFF);
}
void five() {
//forms number 5
digitalWrite(segmentA, ON);
digitalWrite(segmentB, OFF);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, OFF);
}
void six() {
//forms number 6
digitalWrite(segmentA, ON);
digitalWrite(segmentB, OFF);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, ON);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, OFF);
}
void seven() {
//forms number 7
digitalWrite(segmentA, ON);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, OFF);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, OFF);
digitalWrite(segmentG, OFF);
digitalWrite(segmentDP, OFF);
}
void eight() {
//forms number 8
digitalWrite(segmentA, ON);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, ON);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, OFF);
}
void nine() {
//forms number 9
digitalWrite(segmentA, ON);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, OFF);
}
void OutOfRange() {
//ERROR
letterE();
delay(setdelay);
dotonly();
delay(setdelay);
letterR();
delay(setdelay);
dotonly();
delay(setdelay);
letterR();
delay(setdelay);
dotonly();
delay(setdelay);
letterO();
delay(setdelay);
dotonly();
delay(setdelay);
letterR();
delay(setdelay);
dotonly();
delay(1000); // 1000 = 1s
}
void letterE() {
//forms letter E + dot
digitalWrite(segmentA, ON);
digitalWrite(segmentB, OFF);
digitalWrite(segmentC, OFF);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, ON);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, ON);
}
void letterR() {
//forms letter R + dot
digitalWrite(segmentA, ON);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, OFF);
digitalWrite(segmentE, ON);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, ON);
digitalWrite(segmentDP, ON);
}
void letterO() {
//forms letter O + dot
digitalWrite(segmentA, ON);
digitalWrite(segmentB, ON);
digitalWrite(segmentC, ON);
digitalWrite(segmentD, ON);
digitalWrite(segmentE, ON);
digitalWrite(segmentF, ON);
digitalWrite(segmentG, OFF);
digitalWrite(segmentDP, ON);
}
void dotonly() {
//only DP
digitalWrite(segmentA, OFF);
digitalWrite(segmentB, OFF);
digitalWrite(segmentC, OFF);
digitalWrite(segmentD, OFF);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, OFF);
digitalWrite(segmentG, OFF);
digitalWrite(segmentDP, ON);
}
void segmentTest() {
//turns on and off each segment
digitalWrite(segmentA, ON);
delay(setdelay);
digitalWrite(segmentA, OFF);
digitalWrite(segmentB, ON);
delay(setdelay);
digitalWrite(segmentB, OFF);
digitalWrite(segmentC, ON);
delay(setdelay);
digitalWrite(segmentC, OFF);
digitalWrite(segmentD, ON);
delay(setdelay);
digitalWrite(segmentD, OFF);
digitalWrite(segmentE, ON);
delay(setdelay);
digitalWrite(segmentE, OFF);
digitalWrite(segmentF, ON);
delay(setdelay);
digitalWrite(segmentF, OFF);
digitalWrite(segmentG, ON);
delay(setdelay);
digitalWrite(segmentG, OFF);
digitalWrite(segmentDP, ON);
delay(setdelay);
digitalWrite(segmentDP, OFF);
delay(setdelay);
digitalWrite(segmentDP, ON);
delay(setdelay);
digitalWrite(segmentDP, OFF);
delay(setdelay);
digitalWrite(segmentDP, ON);
delay(setdelay);
digitalWrite(segmentDP, OFF);
delay(setdelay);
digitalWrite(segmentDP, ON);
delay(setdelay);
digitalWrite(segmentDP, OFF);
}