Set low which are not high

I am playing with leds to create animations on Arduino mega.I am tired with setting pins that are not High as low.It takes time and makes sketch larger.Also it slows down the mega.Is there any trick for shortcut?
For example:

digitalWrite(2, LOW); 
digitalWrite(3, LOW); 
digitalWrite(4, LOW); 
digitalWrite(5, HIGH); 
digitalWrite(6, HIGH); 
digitalWrite(7, HIGH); 
digitalWrite(8, HIGH); 
digitalWrite(9, LOW); 
digitalWrite(10, LOW); 
digitalWrite(11, LOW); 
digitalWrite(12, LOW); 
digitalWrite(13, LOW); 
digitalWrite(14, LOW); 
digitalWrite(15, LOW); 
digitalWrite(16, LOW);  
digitalWrite(17, LOW); 
digitalWrite(18, LOW);
digitalWrite(19, LOW);
digitalWrite(20, LOW);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
digitalWrite(24, HIGH);
digitalWrite(25, LOW);
digitalWrite(26, LOW);
digitalWrite(27, LOW);
digitalWrite(28, HIGH);
digitalWrite(29, LOW);
digitalWrite(30, LOW);
digitalWrite(31, LOW);
digitalWrite(32, LOW);
digitalWrite(33, HIGH);
digitalWrite(34, LOW);
digitalWrite(35, LOW);
digitalWrite(36, LOW);
digitalWrite(37, HIGH);
digitalWrite(38, HIGH);
digitalWrite(39, HIGH);
digitalWrite(40, HIGH);
digitalWrite(41, LOW);
digitalWrite(42, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
digitalWrite(49, LOW);
digitalWrite(50, LOW);
digitalWrite(51, LOW);
digitalWrite(52, LOW);
digitalWrite(53, HIGH);

thereyouare:
I am playing with leds to create animations on Arduino mega.I am tired with setting pins that are not High as low.It takes time and makes sketch larger.Also it slows down the mega.Is there any trick for shortcut?

What do you mean " setting pins that are not High as low"? If there are pins that are not HIGH, then they are already LOW.
You have shown us a snippet of code that sets a number of pins HIGH, and another bunch of pins LOW. What are the criteria for which pins are set to HIGH,. and which pins are set to LOW?

Tell us exactly what you want to do, and post your code for doing it. The entire code, not just a snippet.

try this

for(int x = 2; x <= 50; x++)
{
	digitalWrite(x,!digitalRead(x));

}

Great idea Ehrja.Thank you.

setting pins that are not High as low

A very confusing description and technically not what Ehrja's code does although it obviously does what you wanted, which is to invert all pins.

BTW a pin that is "not high" is already low.


Rob

Hi, I'm not familiar with the mega, but you shouldn't have set outputs LOW on startup.
Can you post your complete sketch and let us find the solution.
Have you used PINMODE to set your pins up as inputs and outputs?

Tom.... :slight_smile:

TomGeorge:
Hi, I'm not familiar with the mega, but you shouldn't have set outputs LOW on startup.
Can you post your complete sketch and let us find the solution.
Have you used PINMODE to set your pins up as inputs and outputs?

Tom.... :slight_smile:

Sure.This is the sketch.I shortened the sketch.But the idea is the same.

int analog1 = A1;
int analogread1 = 0; 

void setup() {
  

pinMode(2, OUTPUT);  
 pinMode(3, OUTPUT); 
 pinMode(4, OUTPUT); 
 pinMode(5, OUTPUT); 
 pinMode(6, OUTPUT); 
 pinMode(7, OUTPUT); 
 pinMode(8, OUTPUT); 
 pinMode(9, OUTPUT); 
 pinMode(10, OUTPUT); 
 pinMode(11, OUTPUT); 
 pinMode(12, OUTPUT); 
 pinMode(13, OUTPUT); 
 pinMode(14, OUTPUT); 
 pinMode(15, OUTPUT); 
 pinMode(16, OUTPUT); 
 pinMode(17, OUTPUT); 
 pinMode(18, OUTPUT); 
 pinMode(19, OUTPUT); 
 pinMode(20, OUTPUT); 
 pinMode(21, OUTPUT); 
 pinMode(22, OUTPUT); 
 pinMode(23, OUTPUT); 
 pinMode(24, OUTPUT); 
 pinMode(25, OUTPUT); 
 pinMode(26, OUTPUT); 
 pinMode(27, OUTPUT); 
 pinMode(28, OUTPUT); 
 pinMode(29, OUTPUT); 
 pinMode(30, OUTPUT);  
  pinMode(31, OUTPUT);  
   pinMode(32, OUTPUT);  
    pinMode(33, OUTPUT);  
     pinMode(34, OUTPUT);  
      pinMode(35, OUTPUT);  
       pinMode(36, OUTPUT);  
        pinMode(37, OUTPUT);  
         pinMode(38, OUTPUT);  
          pinMode(39, OUTPUT);  
      pinMode(40, OUTPUT);  
       pinMode(41, OUTPUT);  
        pinMode(42, OUTPUT);
       pinMode(43, OUTPUT);  
      pinMode(44, OUTPUT);  
     pinMode(45, OUTPUT);  
    pinMode(46, OUTPUT);  
   pinMode(47, OUTPUT);  
  pinMode(48, OUTPUT);  
 pinMode(49, OUTPUT);  
 pinMode(50, OUTPUT);  
 pinMode(51, OUTPUT);  
 pinMode(52, OUTPUT);  
 pinMode(53, OUTPUT);
}

void loop(){


analogread1 = analogRead (analog1);

  if ((analogread1 >= 100 && analogread1 <= 200)) {     
    digitalWrite(2, LOW); 
    digitalWrite(3, LOW); 
    digitalWrite(4, HIGH); 
    digitalWrite(5, LOW); 
    digitalWrite(6, LOW); 
    digitalWrite(7, LOW); 
    digitalWrite(8, HIGH); 
    digitalWrite(9, LOW); 
    digitalWrite(10, LOW); 
    digitalWrite(11, LOW); 
    digitalWrite(12, HIGH); 
    digitalWrite(13, LOW); 
    digitalWrite(14, LOW); 
    digitalWrite(15, HIGH); 
    digitalWrite(16, HIGH); 
    digitalWrite(17, LOW); 
    digitalWrite(18, LOW);
    digitalWrite(19, HIGH);
    digitalWrite(20, HIGH);
    digitalWrite(21, LOW);
    digitalWrite(22, LOW);
    digitalWrite(23, LOW);
    digitalWrite(24, HIGH);
    digitalWrite(25, LOW); 
    digitalWrite(26, LOW); 
    digitalWrite(27, HIGH); 
    digitalWrite(28, LOW); 
    digitalWrite(29, LOW); 
    digitalWrite(30, LOW); 
    digitalWrite(31, HIGH); 
    digitalWrite(32, LOW); 
    digitalWrite(33, LOW); 
    digitalWrite(34, LOW); 
    digitalWrite(35, HIGH); 
    digitalWrite(36, LOW); 
    digitalWrite(37, LOW); 
    digitalWrite(38, LOW); 
    digitalWrite(39, HIGH); 
    digitalWrite(40, LOW); 
    digitalWrite(41, LOW);
    digitalWrite(42, LOW);
    digitalWrite(43, HIGH);
    digitalWrite(44, LOW);
    digitalWrite(45, LOW);
    digitalWrite(46, LOW);
    digitalWrite(47, HIGH);
    digitalWrite(48, HIGH);
    digitalWrite(49, HIGH);
    digitalWrite(50, HIGH);
    digitalWrite(51, HIGH);
    digitalWrite(52, HIGH);               
    digitalWrite(53, HIGH);               
  } 
  else {
  
      if ((analogread1 >= 300 && analogread1 <= 400) ) {     
      digitalWrite(2, HIGH); 
    digitalWrite(3, HIGH); 
    digitalWrite(4, HIGH); 
    digitalWrite(5, LOW); 
    digitalWrite(6, LOW); 
    digitalWrite(7, LOW); 
    digitalWrite(8, HIGH); 
    digitalWrite(9, LOW); 
    digitalWrite(10, LOW); 
    digitalWrite(11, LOW); 
    digitalWrite(12, HIGH); 
    digitalWrite(13, LOW); 
    digitalWrite(14, LOW); 
    digitalWrite(15, LOW); 
    digitalWrite(16, HIGH); 
    digitalWrite(17, LOW); 
    digitalWrite(18, LOW);
    digitalWrite(19, LOW);
    digitalWrite(20, HIGH);
    digitalWrite(21, LOW);
    digitalWrite(22, LOW);
    digitalWrite(23, LOW);
    digitalWrite(24, HIGH);
    digitalWrite(25, LOW); 
    digitalWrite(26, HIGH); 
    digitalWrite(27, HIGH); 
    digitalWrite(28, LOW); 
    digitalWrite(29, LOW); 
    digitalWrite(30, LOW); 
    digitalWrite(31, HIGH); 
    digitalWrite(32, LOW); 
    digitalWrite(33, LOW); 
    digitalWrite(34, LOW); 
    digitalWrite(35, HIGH); 
    digitalWrite(36, LOW); 
    digitalWrite(37, LOW); 
    digitalWrite(38, LOW); 
    digitalWrite(39, HIGH); 
    digitalWrite(40, HIGH); 
    digitalWrite(41, LOW);
    digitalWrite(42, LOW);
    digitalWrite(43, HIGH);
    digitalWrite(44, LOW);
    digitalWrite(45, LOW);
    digitalWrite(46, LOW);
    digitalWrite(47, HIGH);
    digitalWrite(48, LOW);
    digitalWrite(49, LOW);
    digitalWrite(50, HIGH);
    digitalWrite(51, LOW);
    digitalWrite(52, LOW);               
    digitalWrite(53, HIGH); 
  } 
  else {
    
      if ((analogread1 >= 500 && analogread1 <= 600)) {     

     digitalWrite(2, LOW); 
    digitalWrite(3, LOW); 
    digitalWrite(4, HIGH); 
    digitalWrite(5, LOW); 
    digitalWrite(6, HIGH); 
    digitalWrite(7, LOW); 
    digitalWrite(8, HIGH); 
    digitalWrite(9, LOW); 
    digitalWrite(10, LOW); 
    digitalWrite(11, LOW); 
    digitalWrite(12, HIGH); 
    digitalWrite(13, LOW); 
    digitalWrite(14, HIGH); 
    digitalWrite(15, LOW); 
    digitalWrite(16, HIGH); 
    digitalWrite(17, LOW); 
    digitalWrite(18, HIGH);
    digitalWrite(19, LOW);
    digitalWrite(20, HIGH);
    digitalWrite(21, LOW);
    digitalWrite(22, LOW);
    digitalWrite(23, LOW);
    digitalWrite(24, HIGH);
    digitalWrite(25, LOW); 
    digitalWrite(26, LOW); 
    digitalWrite(27, HIGH); 
    digitalWrite(28, LOW); 
    digitalWrite(29, HIGH); 
    digitalWrite(30, LOW); 
    digitalWrite(31, HIGH); 
    digitalWrite(32, LOW); 
    digitalWrite(33, LOW); 
    digitalWrite(34, LOW); 
    digitalWrite(35, HIGH); 
    digitalWrite(36, LOW); 
    digitalWrite(37, LOW); 
    digitalWrite(38, LOW); 
    digitalWrite(39, HIGH); 
    digitalWrite(40, LOW); 
    digitalWrite(41, LOW);
    digitalWrite(42, LOW);
    digitalWrite(43, HIGH);
    digitalWrite(44, LOW);
    digitalWrite(45, LOW);
    digitalWrite(46, LOW);
    digitalWrite(47, HIGH);
    digitalWrite(48, HIGH);
    digitalWrite(49, LOW);
    digitalWrite(50, HIGH);
    digitalWrite(51, HIGH);
    digitalWrite(52, HIGH);               
    digitalWrite(53, LOW);  
  } 
  else {
    digitalWrite(2, LOW); 
    digitalWrite(3, LOW); 
    digitalWrite(4, HIGH); 
    digitalWrite(5, LOW); 
    digitalWrite(6, LOW); 
    digitalWrite(7, LOW); 
    digitalWrite(8, HIGH); 
    digitalWrite(9, LOW); 
    digitalWrite(10, LOW); 
    digitalWrite(11, LOW); 
    digitalWrite(12, HIGH); 
    digitalWrite(13, LOW); 
    digitalWrite(14, LOW); 
    digitalWrite(15, HIGH); 
    digitalWrite(16, HIGH); 
    digitalWrite(17, LOW); 
    digitalWrite(18, LOW);
    digitalWrite(19, LOW);
    digitalWrite(20, HIGH);
    digitalWrite(21, LOW);
    digitalWrite(22, HIGH);
    digitalWrite(23, LOW);
    digitalWrite(24, HIGH);
    digitalWrite(25, LOW); 
    digitalWrite(26, LOW); 
    digitalWrite(27, HIGH); 
    digitalWrite(28, LOW); 
    digitalWrite(29, LOW); 
    digitalWrite(30, LOW); 
    digitalWrite(31, HIGH); 
    digitalWrite(32, LOW); 
    digitalWrite(33, LOW); 
    digitalWrite(34, LOW); 
    digitalWrite(35, HIGH); 
    digitalWrite(36, LOW); 
    digitalWrite(37, LOW); 
    digitalWrite(38, LOW); 
    digitalWrite(39, HIGH); 
    digitalWrite(40, LOW); 
    digitalWrite(41, LOW);
    digitalWrite(42, LOW);
    digitalWrite(43, HIGH);
    digitalWrite(44, LOW);
    digitalWrite(45, LOW);
    digitalWrite(46, HIGH);
    digitalWrite(47, HIGH);
    digitalWrite(48, HIGH);
    digitalWrite(49, HIGH);
    digitalWrite(50, HIGH);
    digitalWrite(51, LOW);
    digitalWrite(52, HIGH);               
    digitalWrite(53, HIGH);   
  }
}
}
}

This is why we ask for people to show the entire sketch, this is a very different requirement to what we've been talking about.

I'll knock up some code that should to the job, meanwhile let's have a look at setup()

void setup() {
  
for (int i = 2; i < 54; i++) 
	pinMode(i, OUTPUT);  
 
}

Spot the difference?

EDIT: BTW you are missing some values, are 0-99, 201-299 and 401-499 all supposed to do the same thing?


Rob

Here's some code that should get you close, you add the extra 49 values in each pattern array and maybe adjust the values in the tests.

As there is no obvious (to me) relationship between the analog value and the pattern I've used a lookup table of values for each pin.

int analog1 = A1;
int analogread1 = 0; 

#define N_LEDS 52

int pinVals [][N_LEDS] = {
	{LOW, LOW, HIGH},		// you add the other 49 values
	{HIGH, HIGH, HIGH},
	{LOW, LOW, HIGH},
	{LOW, LOW, HIGH}
};

void setup() {
  
for (int i = 2; i < 54; i++) 
	pinMode(i, OUTPUT);  
 
}

void loop(){

	int analogread1 = analogRead (analog1);
	int pattern = 3;                // default the 4th pattern
	
	if (analogread1 >= 100 && analogread1 <= 200) pattern = 0;  
	if (analogread1 >= 300 && analogread1 <= 400) pattern = 1;  
	if (analogread1 >= 500 && analogread1 <= 600) pattern = 2;  

	for (int i = 0; i < N_LEDS; i++) {
		digitalWrite (i, pinVals[pattern][i]);
	}
}

Rob

int pinVals

"byte" at most, please.

Sorry :slight_smile:

Hi, thanks for posting the sketch.
When you say that the output is not low, how do you now this, is it because the device you are outputting to is not off, or because the output measures not off with a multimeter.
Can you please post a circuit diagram of what and how you are driving with the outputs.
Just an example of one output if they are all the same, and how you have your power supplies connected.

Thanks Tom.... :slight_smile: