Happy new years all
I could use a little guidance on how to tighten up some code.
Basically i will be using 8 digital output pins on an arduino nano and two 4028's (BCD to Decimal ic's) to poll multiple ultrasonic sensors at specific timings to avoid cross talk.
The table below translates the pin states on the two ic's and the subsequent output (relavant to a given sensor) of the 4028s.
In setup i have made it easy to recall the relevant binary functions (in the program loop) on the Arduinos outputs. This is to makes it easy to modify according to the environment and the position of the sensors to one another (which is not finalised yet and of which I may have little control over).
However, it makes the set up very long winded (stacks of on/off functions), and whilst i know so little about code (this is my first program) and am new to working with binary. Im guessing there is a more efficient way to do this (translating the decimals to binary and assigning the result to output to pins?) and would appreciate any input.
bellow is the current code and a small example loop to help explain the idea and what I will be doing is trying to cram as much polling as possible in, in as little time as possible.
/*
 DECIMAL TO BCD PINS
 IC1
 1 = 2
 2 = 3
 3 = 3 & 2
 4 = 4
 5 = 4 & 2
 6 = 4 & 3
 7 = 4 & 3 & 2
 8 = 5
 IC2
 9 = 5 & 2
 10 = 6
 11 = 7
 12 = 7 & 6
 13 = 8
 14 = 8 & 6
 15 = 8 & 7
 16 = 8 & 7 & 6
 17 = 9
 18 = 9 & 6
*/
//IMPORTANT TEST POLLING DELAY REQUIRED FOR A SINGLE CHIP
int on = 1;
int off = 20;
void setup()
{
 pinMode(2, OUTPUT); // IC a 1-9
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT); //IC b 10-18
 pinMode(7, OUTPUT);
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(13, OUTPUT); // test pin
}
// POLL ON
void poll_1on() {
 digitalWrite(2, HIGH);
}
void poll_2on() {
 digitalWrite(3, HIGH);
}
void poll_3on() {
 digitalWrite(3, HIGH);
 digitalWrite(2, HIGH);
}
void poll_4on() {
 digitalWrite(4, HIGH);
}
void poll_5on() {
 digitalWrite(4, HIGH);
 digitalWrite(2, HIGH);
}
void poll_6on() {
 digitalWrite(4, HIGH);
 digitalWrite(3, HIGH);
}
void poll_7on() {
 digitalWrite(4, HIGH);
 digitalWrite(3, HIGH);
 digitalWrite(2, HIGH);
}
void poll_8on() {
 digitalWrite(5, HIGH);
}
void poll_9on() {
 digitalWrite(5, HIGH);
 digitalWrite(2, HIGH);
}
void poll_10on() {
 digitalWrite(6, HIGH);
}
void poll_11on() {
 digitalWrite(7, HIGH);
}
void poll_12on() {
 digitalWrite(7, HIGH);
 digitalWrite(6, HIGH);
}
void poll_13on() {
 digitalWrite(8, HIGH);
}
void poll_14on() {
 digitalWrite(8, HIGH);
 digitalWrite(6, HIGH);
}
void poll_15on() {
 digitalWrite(8, HIGH);
 digitalWrite(7, HIGH);
}
void poll_16on() {
 digitalWrite(8, HIGH);
 digitalWrite(7, HIGH);
 digitalWrite(6, HIGH);
}
void poll_17on() {
 digitalWrite(9, HIGH);
}
void poll_18on() {
 digitalWrite(9, HIGH);
 digitalWrite(6, HIGH);
}
// POLL OFF
void poll_1off() {
 digitalWrite(2, LOW);
}
void poll_2off() {
 digitalWrite(3, LOW);
}
void poll_3off() {
 digitalWrite(3, LOW);
 digitalWrite(2, LOW);
}
void poll_4off() {
 digitalWrite(4, LOW);
}
void poll_5off() {
 digitalWrite(4, LOW);
 digitalWrite(2, LOW);
}
void poll_6off() {
 digitalWrite(4, LOW);
 digitalWrite(3, LOW);
}
void poll_7off() {
 digitalWrite(4, LOW);
 digitalWrite(3, LOW);
 digitalWrite(2, LOW);
}
void poll_8off() {
 digitalWrite(5, LOW);
}
void poll_9off() {
 digitalWrite(5, LOW);
 digitalWrite(2, LOW);
}
void poll_10off() {
 digitalWrite(6, LOW);
}
void poll_11off() {
 digitalWrite(7, LOW);
}
void poll_12off() {
 digitalWrite(7, LOW);
 digitalWrite(6, LOW);
}
void poll_13off() {
 digitalWrite(8, LOW);
}
void poll_14off() {
 digitalWrite(8, LOW);
 digitalWrite(6, LOW);
}
void poll_15off() {
 digitalWrite(8, HIGH);
 digitalWrite(7, HIGH);
}
void poll_16off() {
 digitalWrite(8, LOW);
 digitalWrite(7, LOW);
 digitalWrite(6, LOW);
}
void poll_17off() {
 digitalWrite(9, LOW);
}
void poll_18off() {
 digitalWrite(9, LOW);
 digitalWrite(6, LOW);
}
void poll_teston() // TEST PIN FOR CHECKING CODE
 {
 digitalWrite(13, HIGH);
 }
 void poll_testoff()
 {
 digitalWrite(13, LOW);
 }
void loop()
/*{
 poll_teston(); // TEST PIN EXAMPLE CODE
 delay(on);
 poll_testoff();
 delay(off);
 }
*/
//IMPORTANT TEST POLLING DELAY REQUIRED FOR A SINGLE CHIP 1-8 9-18
// delayMicroseconds(200); for delays in polling on a single 4028
{
 poll_1on();
 delayMicroseconds(200);
 poll_3on();
 delay(on);
 poll_1off();
 delayMicroseconds(200);
 poll_3off();
 delay(off);
 poll_2on();
 poll_13on();
 delay(on);
 poll_2off();
 poll_13off();
 delay(off);
}