PIR Multplexing

Bij Leds-buy.nl had ik honderd groene LEDjes voor een euro gevonden. Een 8 x 8 rooster multiplexen met twee shiftregisters erbij leek me een uitdaging. Later voegde ik nog de PIR toe. Zie ook andere PIR tutorial voor de details.


const int latchPin = 5; 
const int dataPin  = 6; 
const int clockPin = 7; 

void setup()
{
Serial.begin(9600);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop()
{
  for (int x = 0; x< 8; x++){
    int f=analogRead(A0);
    unsigned long y = map(f,0,880,0,10);
    unsigned long xd = 0x8000 >> x;
    unsigned long getal = xd + (0b10000000 >> y);
    shiftIt (getal);
    delay (28);
    }
}

void shiftIt (unsigned long data)
{
    digitalWrite(latchPin, LOW);
    for (int k=0; k < 16; k++)
    {
      digitalWrite(clockPin, LOW);
      if ( data & (1 << k) )
      {
       digitalWrite(dataPin, HIGH);
      }
      else
      {
       digitalWrite(dataPin, LOW);
      }
      digitalWrite(clockPin, HIGH);
    }
    digitalWrite(clockPin, LOW);
    digitalWrite(latchPin, HIGH);
}

Uitleg sketch

Hier een lang filmpje met de bouw en het resultaat.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>