Da ich von Natur aus eher ein gemütliches Wesen bin will ich mir beim setzen der DIO-Poins auf INPUT, OUTPUT und dem schalten der PULL-UPS arbeit ersparen. Ich dachte da an eine Funktion in der Art wie:
/*
setPinMode(int,int)
Function to set pinMode and pullUps via bitpattern
Written for Arduinos with 14 DIO-Pins
Bitpattern for the DIO-Pins
14 lowest bits of first int used to set pinmode LSB equals Pin 0
0 sets pinMode to OUTPUT, 1 sets pinMode to INPUT
14 lowest bits of second int used to activate internal pullUp-Resistors if pinMode is set to INPUT
0 deactivates, 1 actitivates the resistors
*/
void setup()
{
setPinMode(B00000000*256+B11111101,
B00000000*256+B11110000); // pins 0,2-7 INPUT, 4-7 with activated pullUps; pins 1, 8-13 OUTPUT
}
void loop()
{
}
void setPinMode(int pinState, int pullUpState)
{
for(byte i = 0; i < 14; i++) // cycle through the 14 DIO-pins
{
if(bitRead(pinState,i) == 0) // if bit i is 0 set pinMode to OUTPUT
{
pinMode(i,OUTPUT);
}
else // if bit i is 1 set pinMode to INPUT
{
pinMode(i,INPUT);
if (bitRead(pullUpState,i) == 1) //check for pullUp-Resistors on Input-pins
{
digitalWrite(i,HIGH);
}
else
{
digitalWrite(i,LOW);
}
}
}
}
Es ist ja dann so, dass ich immer alle Pins auf mit einem Zustand belege, was könnte passieren wenn z.B. die Pins 0 und 1 beide auf OUTPUT geschaltet werden aber die serielle Schnittstelle Zugriff auf die beiden Pins beansprucht. Werden die Pins durch die Bibliothek umgeschaltet oder bleiben die Pins so wie ich sie geschaltet habe und die Kommunikation funktioniert nicht?
Ich hoffe mein Anliegen ist klar geworden.
Bis...
Dambo