Hey all,
I am trying to convert a loop function that works now in main code to a library function. And I'm getting a bit confused. The idea is to loop over a group of pins that should be turned on or off (only 1 on at the same moment).
I now have:
#define EN_G0 35 // For first pin in group
#define EN_G1 36
#define EN_G2 37
...
#define EN_G5 51
char groupMatrix[6] = {EN_G5, EN_G4, EN_G3, EN_G2, EN_G1, EN_G0}; // This is the order to loop over the pins.
...
/*
* Function to call in the code to turn a specific group/PIN on. group 0...5
*/
void groupOn(byte group)
{
// The channel we will choose
char pin_EN;
pin_EN = groupMatrix[group];
// Set the correct channel open
digitalWrite(pin_EN, HIGH);
}
This works fine.
Now: I've read I can make an enum for the groups, and loop over that using the index of the PIN in the enum to turn the PIN on.
Now my confusement: will this work, as EN_Gx is already an int and has a pin ID as the value?
// in the .h file the enumarator
enum groupMatrix_t {EN_G5, EN_G4, EN_G3, EN_G2, EN_G1, EN_G0};
// in .cpp
void groupOn(byte group)
{
// The channel we will choose
//char pin_EN;
//pin_EN = groupMatrix[group];
// Set the correct channel open
//digitalWrite(pin_EN, HIGH);
digitalWrite(groupMatrix group, HIGH);
}
Or will I need to use something in the range as given here:
Answer
"
If your enum values don't run sequentially from 0 to X in increments of 1, then you can also do the following:
var rank = (rank)Enum.GetValues(typeof(rank))[3];
"
Thanks in advance!