25. September 2012
Ein Potentiometer steurt über die map() Funktion ein LED Element. Drehen nach rechts füllt die anzeige, drehen nach links leert sie. Video
#define LATCH_PIN 8 //Pin zu ST_CP vom 74HC595
#define CLOCK_PIN 12 //Pin zu SH_CP vom 74HC595
#define DATA_PIN 11 //Pin zu DS vom 74HC595
int potPin = 2;
int val = 0;
void setup()
{
pinMode(LATCH_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(DATA_PIN, OUTPUT);
}
void loop()
{
registerWrite(9, HIGH);
}
void registerWrite(int _whichPin, int _whichState)
{
val = analogRead(potPin);
int myPins[] = {0, 1, 3, 7, 15, 31, 63, 127, 255};
int poti = map(val, 0, 1023, 0, 8);
byte bitsToSend = myPins[poti];
digitalWrite(LATCH_PIN, LOW);
bitWrite(bitsToSend, _whichPin, _whichState); // Hier wird das entsprechende Bit im Byte gesetzt (z.B. 00100000)
shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, bitsToSend);
digitalWrite(LATCH_PIN, HIGH);
}