# Easy Question - How to set an attribute bit

I have a sketch that polls the user for:

1. A time duration between 1 and 15 seconds.
2. The amount of that duration that digital pin 9 should be set high.
3. How many (up to 4) additional digital pins should be activated at that frequency. These are pins 10-13.

What I want to do is to set each additional pin to either be synchronized with pin 9 or offset by the duration that pin 9 is HIGH.

I am trying to understand how I can set a “sync” bit for the additional channels.

Here is the function that I am hoping to have handle the selection of additional channels and whether or not to synchronize each to the master channel 9. I am learning as I go so it may be convoluted and if you have to time to steer me in the right direction I am very willing to take criticism. For what it’s worth, here it is:

``````//
//
//Set Number of Channels
//
//
int setChannels(){
int result;                                      // Variable to store return value
do {
mySerial.print("?x00?y0");                     // Cursor to column 0, line 0
mySerial.print("Set Number of");
mySerial.print("?x00?y1?l");                   // Cursor to column 0, line 1, clear line
mySerial.print("Channels: ");
potval = map(potval, 0, 1023, 5, 1);         // Scale pot value to 1 to 5 channels
mySerial.print(potval);                        // Print pot value

buttonval = digitalRead(buttonpin);            // Check for button press
/*
If button is pressed & it wasn't being pressed a moment ago & its been long enough since the
last time that it isn't a bounce... ...remember press time for next debounce?
*/
if (buttonval == HIGH && prevbuttonval == LOW && millis() - presstime > debounce) {
presstime = millis();                        // Store time button was pressed
result = potval;                              // Store potval to cycle
delay(1000);
mySerial.print("?x00?y0?l");                 // Cursor to column 0, line 0, clear line
mySerial.print("Set Number of");
delay(2000);
mySerial.print("?f");                        // Clear the LCD
//     prevbuttonval = buttonval;

// Set Channel Sync
if(result > 1){
for(int i = 2; i <= result; i++){               // Loop to set channel sync

do {
mySerial.print("?x00?y0Set Channel ");         // Cursor to column 0,line 0
mySerial.print(i);                             // Print channel in question
mySerial.print("?x00?y1?lSync.: ");             // Cursor to column 0, line 1, clear line

if(potval <= 511) {
mySerial.print("Yes");
}
else {
mySerial.print("No");
}
buttonval = digitalRead(buttonpin);            // Check for button press
/*
If button is pressed & it wasn't being pressed a moment ago & its been long enough since the
last time that it isn't a bounce... ...remember press time for next debounce?
*/
if (buttonval == HIGH && prevbuttonval == LOW && millis() - presstime > debounce) {
presstime = millis();                        // Store time button was pressed

/*

How to set sync bit?

*/
}

return result;
}
while (i <= result);
}
}
}
}
while (1 == 1);
}
``````

Thanks so much for any help.

Sam

Nevermind, I figured it out.