Created
July 10, 2016 15:49
-
-
Save hidenba/8eaf4b8be28822914995a6d51726f5d1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const int pin_a = 10; | |
const int pin_b = 12; | |
const int pin_c = 9; | |
const int pin_d = 4; | |
const int pin_e = 5; | |
const int pin_f = 8; | |
const int pin_g = 11; | |
const int pin_dp = 13; | |
const int dig1 = 2; | |
const int dig2 = 3; | |
const int dig3 = 6; | |
const int dig4 = 7; | |
const int all_pins[] = {pin_a, pin_b, pin_c, pin_d, pin_e, pin_f, pin_g, pin_dp, dig1, dig2, dig3, dig4}; | |
const int all_pin_count = (sizeof(all_pins)/sizeof(int)); | |
const int led_pins[] = {pin_a, pin_b, pin_c, pin_d, pin_e, pin_f, pin_g, pin_dp}; | |
const int led_pin_count = (sizeof(led_pins)/sizeof(led_pins[0])); | |
const int slider_pin = 0; | |
const int ultrasonic_pin = 0; | |
long val; | |
int dig4_index; | |
int dig3_index; | |
int dig2_index; | |
int dig1_index; | |
typedef void (*FUNCPTR)(); | |
FUNCPTR write_ptr[] = {&write_0, &write_1, &write_2, &write_3, &write_4, &write_5, | |
&write_6, &write_7, &write_8, &write_9, &write_dp}; | |
void setup() { | |
for(int i = 0; i < all_pin_count; i++){ | |
pinMode(all_pins[i], OUTPUT); | |
} | |
dig_off(); | |
} | |
void loop() { | |
int bar_val = analogRead(slider_pin); | |
if(bar_val == 0) { | |
val = ultrasonic_read(); | |
dig4_index = (val%10); val/=10; | |
dig3_index = (val%10); val/=10; | |
dig2_index = (val%10); val/=10; | |
dig1_index = (val%10); val/=10; | |
} | |
use_dig1(); | |
write_ptr[dig1_index](); | |
use_dig2(); | |
write_ptr[dig2_index](); | |
use_dig3(); | |
write_ptr[dig3_index](); | |
use_dig4(); | |
write_ptr[dig4_index](); | |
} | |
long ultrasonic_read() { | |
pinMode(ultrasonic_pin, OUTPUT); | |
digitalWrite(ultrasonic_pin, LOW); | |
delayMicroseconds(2); | |
digitalWrite(ultrasonic_pin, HIGH); | |
delayMicroseconds(5); | |
digitalWrite(ultrasonic_pin,LOW); | |
pinMode(ultrasonic_pin,INPUT); | |
long duration; | |
duration = pulseIn(ultrasonic_pin,HIGH); | |
long RangeInCentimeters; | |
RangeInCentimeters = duration/29/2; | |
return RangeInCentimeters; | |
} | |
void write_0() { | |
const int pins[] = {pin_a, pin_b, pin_c, pin_d, pin_e, pin_f}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_1() { | |
const int pins[] = {pin_b, pin_c}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_2() { | |
const int pins[] = {pin_a, pin_b, pin_d, pin_e, pin_g}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_3() { | |
const int pins[] = {pin_a, pin_b, pin_c, pin_d, pin_g}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_4() { | |
const int pins[] = {pin_b, pin_c, pin_f, pin_g}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_5() { | |
const int pins[] = {pin_a, pin_c, pin_d, pin_f, pin_g}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_6() { | |
const int pins[] = {pin_a, pin_c, pin_d, pin_e, pin_f, pin_g}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_7() { | |
const int pins[] = {pin_a, pin_b, pin_c, pin_f}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_8() { | |
const int pins[] = {pin_a, pin_b, pin_c, pin_d, pin_e, pin_f, pin_g}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_9() { | |
const int pins[] = {pin_a, pin_b, pin_c, pin_d, pin_f, pin_g}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void write_dp() { | |
const int pins[] = {pin_dp}; | |
write_7seg(led_pins, led_pin_count, LOW); | |
write_7seg(pins, (sizeof(pins)/sizeof(pins[0])), HIGH); | |
delay(1); | |
} | |
void use_dig1() { | |
dig_off(); | |
digitalWrite(dig1, LOW); | |
} | |
void use_dig2() { | |
dig_off(); | |
digitalWrite(dig2, LOW); | |
} | |
void use_dig3() { | |
dig_off(); | |
digitalWrite(dig3, LOW); | |
} | |
void use_dig4() { | |
dig_off(); | |
digitalWrite(dig4, LOW); | |
} | |
void dig_off() { | |
digitalWrite(dig1, HIGH); | |
digitalWrite(dig2, HIGH); | |
digitalWrite(dig3, HIGH); | |
digitalWrite(dig4, HIGH); | |
} | |
void write_7seg(const int pattern[], int index, int value) { | |
for(int i = 0; i < index; i++) { | |
digitalWrite(pattern[i], value); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment