Writing library

[edit]Hi,

ok I've just changed my question.

Can I do this?:

int myRows[] = {0, 1, 2, 3, 4, 5, 6, 7};
int myPower[] = {A0, A1, A2, A3, A4, A5, A6, A7};
int brightness = 255;
int Delay = 50;

void setup(){
 
 pinMode(myPower[0, 1, 2, 3, 4, 5, 6, 7], OUTPUT);
}


void loop(){
  
  row1();

  
  row2();
  analogWrite(myPower[3, 4], brightness);
  delay(Delay);
  
  row3();
  analogWrite(myPower[2, 5], brightness);
  delay(Delay);
  
  row4();
  analogWrite(myPower[2, 3, 4, 5], brightness);
  delay(Delay);
  
  row5();
  analogWrite(myPower[2, 5], brightness);
  delay(Delay);
  
  row6();
  analogWrite(myPower[2, 5], brightness);
  delay(Delay);
  
  row7();
  analogWrite(myPower[2, 5], brightness);
  delay(Delay);
  
  row8();
}

void row1()
{
  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);
    pinMode(myRows[0], OUTPUT);
    digitalWrite(myRows[0], LOW);
    pinMode(myRows[1, 2, 3, 4, 5, 6, 7], INPUT);
}

void row2()
{
  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);
    pinMode(myRows[1], OUTPUT);
    digitalWrite(myRows[1], LOW);
    pinMode(myRows[0, 2, 3, 4, 5, 6, 7], INPUT);
}

void row3()
{
  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);
    pinMode(myRows[2], OUTPUT);
    digitalWrite(myRows[2], LOW);
    pinMode(myRows[0, 1, 3, 4, 5, 6, 7], INPUT);
}

void row4()
{
  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);
    pinMode(myRows[3], OUTPUT);
    digitalWrite(myRows[3], LOW);
    pinMode(myRows[1, 2, 0, 4, 5, 6, 7], INPUT);
}

void row5()
{
  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);
    pinMode(myRows[4], OUTPUT);
    digitalWrite(myRows[4], LOW);
    pinMode(myRows[0, 1, 2, 3, 5, 6, 7], INPUT);
}

void row6()
{
  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);
    pinMode(myRows[5], OUTPUT);
    digitalWrite(myRows[5], LOW);
    pinMode(myRows[1, 2, 3, 4, 0, 6, 7], INPUT);
}

void row7()
{
  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);
    pinMode(myRows[6], OUTPUT);
    digitalWrite(myRows[6], LOW);
    pinMode(myRows[0, 1, 2, 4, 5, 3, 7], INPUT);
}

void row8()
{
  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);
    pinMode(myRows[7], OUTPUT);
    digitalWrite(myRows[7], LOW);
    pinMode(myRows[1, 2, 3, 4, 5, 6, 0], INPUT);
}

I'm experimenting with coding since I'm new with it.
I think I can't do this or similar things :

  digitalWrite(myPower[0, 1, 2, 3, 4, 5, 6, 7], LOW);

But is there any other way of doing something similar?

Thanks!
[/edit]

There are so many problems with this code that I don't know where to begin.

   pinMode(myRows[1, 2, 3, 4, 5, 6, 7], INPUT);        // Set the others rowpins as INPUT

You can not do this. The pinMode function takes a integer as the first argument. What you have provided is not an int. It is not an array of ints. It is garbage.

I you take the time testing this

I tried. It didn't work.

Start over. Get the functionality working without a library. Then, create a library.

Thanks, I changed my question if you want to take a look at what I wanted to do.

Do you know how I could have the same type of code but with something ok?

Use a 'for' loop, or direct port manipulation

int myPower[] = {A0, A1, A2, A3, A4, A5, A6, A7};
analogWrite(myPower[3, 4], brightness);

Ironic, but you can't do analogue writes to the analogue input pins.

Ironic, but you can't do analogue writes to the analogue input pins.

But, A0, A1, etc. are not analog pins. They are aliases assigned for when analog pins are used as digital pins.

Still, those pins do not support PWM, so analogWrite can't be used on them.

A good thing to know... :stuck_out_tongue:

ok, I reworked a bit my program, I assumed that my arrays declarations are OK.

So would this work? (the code seems long but It's only parts repeating).

int myRows[] = {0, 1, 2, 3, 4, 5, 6, 7};
int myPower[] = {8, 9, 10, 11, 12, 13, 14, 15};
int brightness = 255;
int Delay = 50;

void setup(){
 
 pinMode(myPower[0], OUTPUT);
 pinMode(myPower[1], OUTPUT);
 pinMode(myPower[2], OUTPUT);
 pinMode(myPower[3], OUTPUT);
 pinMode(myPower[4], OUTPUT);
 pinMode(myPower[5], OUTPUT);
 pinMode(myPower[6], OUTPUT);
 pinMode(myPower[7], OUTPUT);
}


void loop(){
  
  row1();

  
  row2();
  analogWrite(myPower[3], brightness);
  analogWrite(myPower[4], brightness);
  delay(Delay);
  
  row3();
  analogWrite(myPower[2], brightness);
  analogWrite(myPower[5], brightness);
  delay(Delay);
  
  row4();
  analogWrite(myPower[2], brightness);
  analogWrite(myPower[3], brightness);
  analogWrite(myPower[4], brightness);
  analogWrite(myPower[5], brightness);
  delay(Delay);
  
  row5();
  analogWrite(myPower[2], brightness);
  analogWrite(myPower[5], brightness);
  delay(Delay);
  
  row6();
  analogWrite(myPower[2], brightness);
  analogWrite(myPower[5], brightness);
  delay(Delay);
  
  row7();
  analogWrite(myPower[2], brightness);
  analogWrite(myPower[5], brightness);
  delay(Delay);
  
  row8();
}

void row1()
{
  digitalWrite(myPower[0], LOW);
  digitalWrite(myPower[1], LOW);
  digitalWrite(myPower[2], LOW);
  digitalWrite(myPower[3], LOW);
  digitalWrite(myPower[4], LOW);
  digitalWrite(myPower[5], LOW);
  digitalWrite(myPower[6], LOW);
  digitalWrite(myPower[7], LOW);
    pinMode(myRows[0], OUTPUT);
    digitalWrite(myRows[0], LOW);
    pinMode(myRows[1], INPUT);
    pinMode(myRows[2], INPUT);
    pinMode(myRows[3], INPUT);
    pinMode(myRows[4], INPUT);
    pinMode(myRows[5], INPUT);
    pinMode(myRows[6], INPUT);
    pinMode(myRows[7], INPUT);
}

void row2()
{
  digitalWrite(myPower[0], LOW);
  digitalWrite(myPower[1], LOW);
  digitalWrite(myPower[2], LOW);
  digitalWrite(myPower[3], LOW);
  digitalWrite(myPower[4], LOW);
  digitalWrite(myPower[5], LOW);
  digitalWrite(myPower[6], LOW);
  digitalWrite(myPower[7], LOW);
    pinMode(myRows[1], OUTPUT);
    digitalWrite(myRows[1], LOW);
    pinMode(myRows[0], INPUT);
    pinMode(myRows[2], INPUT);
    pinMode(myRows[3], INPUT);
    pinMode(myRows[4], INPUT);
    pinMode(myRows[5], INPUT);
    pinMode(myRows[6], INPUT);
    pinMode(myRows[7], INPUT);
}

void row3()
{
  digitalWrite(myPower[0], LOW);
  digitalWrite(myPower[1], LOW);
  digitalWrite(myPower[2], LOW);
  digitalWrite(myPower[3], LOW);
  digitalWrite(myPower[4], LOW);
  digitalWrite(myPower[5], LOW);
  digitalWrite(myPower[6], LOW);
  digitalWrite(myPower[7], LOW);
    pinMode(myRows[2], OUTPUT);
    digitalWrite(myRows[2], LOW);
    pinMode(myRows[0], INPUT);
    pinMode(myRows[1], INPUT);
    pinMode(myRows[3], INPUT);
    pinMode(myRows[4], INPUT);
    pinMode(myRows[5], INPUT);
    pinMode(myRows[6], INPUT);
    pinMode(myRows[7], INPUT);
}

void row4()
{
  digitalWrite(myPower[0], LOW);
  digitalWrite(myPower[1], LOW);
  digitalWrite(myPower[2], LOW);
  digitalWrite(myPower[3], LOW);
  digitalWrite(myPower[4], LOW);
  digitalWrite(myPower[5], LOW);
  digitalWrite(myPower[6], LOW);
  digitalWrite(myPower[7], LOW);
    pinMode(myRows[3], OUTPUT);
    digitalWrite(myRows[3], LOW);
    pinMode(myRows[0], INPUT);
    pinMode(myRows[1], INPUT);
    pinMode(myRows[2], INPUT);
    pinMode(myRows[4], INPUT);
    pinMode(myRows[5], INPUT);
    pinMode(myRows[6], INPUT);
    pinMode(myRows[7], INPUT);
}

void row5()
{
  digitalWrite(myPower[0], LOW);
  digitalWrite(myPower[1], LOW);
  digitalWrite(myPower[2], LOW);
  digitalWrite(myPower[3], LOW);
  digitalWrite(myPower[4], LOW);
  digitalWrite(myPower[5], LOW);
  digitalWrite(myPower[6], LOW);
  digitalWrite(myPower[7], LOW);
    pinMode(myRows[4], OUTPUT);
    digitalWrite(myRows[4], LOW);
    pinMode(myRows[0], INPUT);
    pinMode(myRows[1], INPUT);
    pinMode(myRows[2], INPUT);
    pinMode(myRows[3], INPUT);
    pinMode(myRows[5], INPUT);
    pinMode(myRows[6], INPUT);
    pinMode(myRows[7], INPUT);
}

void row6()
{
  digitalWrite(myPower[0], LOW);
  digitalWrite(myPower[1], LOW);
  digitalWrite(myPower[2], LOW);
  digitalWrite(myPower[3], LOW);
  digitalWrite(myPower[4], LOW);
  digitalWrite(myPower[5], LOW);
  digitalWrite(myPower[6], LOW);
  digitalWrite(myPower[7], LOW);
    pinMode(myRows[5], OUTPUT);
    digitalWrite(myRows[5], LOW);
    pinMode(myRows[0], INPUT);
    pinMode(myRows[1], INPUT);
    pinMode(myRows[2], INPUT);
    pinMode(myRows[3], INPUT);
    pinMode(myRows[4], INPUT);
    pinMode(myRows[6], INPUT);
    pinMode(myRows[7], INPUT);
}

void row7()
{
  digitalWrite(myPower[0], LOW);
  digitalWrite(myPower[1], LOW);
  digitalWrite(myPower[2], LOW);
  digitalWrite(myPower[3], LOW);
  digitalWrite(myPower[4], LOW);
  digitalWrite(myPower[5], LOW);
  digitalWrite(myPower[6], LOW);
  digitalWrite(myPower[7], LOW);
    pinMode(myRows[6], OUTPUT);
    digitalWrite(myRows[6], LOW);
    pinMode(myRows[0], INPUT);
    pinMode(myRows[1], INPUT);
    pinMode(myRows[2], INPUT);
    pinMode(myRows[3], INPUT);
    pinMode(myRows[4], INPUT);
    pinMode(myRows[5], INPUT);
    pinMode(myRows[7], INPUT);
}

void row8()
{
  digitalWrite(myPower[0], LOW);
  digitalWrite(myPower[1], LOW);
  digitalWrite(myPower[2], LOW);
  digitalWrite(myPower[3], LOW);
  digitalWrite(myPower[4], LOW);
  digitalWrite(myPower[5], LOW);
  digitalWrite(myPower[6], LOW);
  digitalWrite(myPower[7], LOW);
    pinMode(myRows[7], OUTPUT);
    digitalWrite(myRows[7], LOW);
    pinMode(myRows[0], INPUT);
    pinMode(myRows[1], INPUT);
    pinMode(myRows[2], INPUT);
    pinMode(myRows[3], INPUT);
    pinMode(myRows[4], INPUT);
    pinMode(myRows[5], INPUT);
    pinMode(myRows[6], INPUT);
}

Thanks!

int myRows[] = {0, 1, 2, 3, 4, 5, 6, 7};
int myPower[] = {8, 9, 10, 11, 12, 13, 14, 15};
int brightness = 255;
int Delay = 50;

void setup(){
  for (int i=0; i<8; i++) { //start from 0 loop to 7
    pinMode(myPower[i], OUTPUT);
  }
}

Interesting.

But in a "for" loop, is the increment made BEFORE the loop, so only "myPower[1]" to 7 would be set as OUTPUT?
Or will I have "myPower[0]" also set as OUTPUT?

Thanks,

0 inclusive :slight_smile:

But in a "for" loop, is the increment made BEFORE the loop, so only "myPower[1]" to 7 would be set as OUTPUT?

No. The increment is performed AFTER the loop. The initialization and conditional evaluation is done BEFORE the loop.