sventon subversion web client - http://www.sventon.org
[show recent changes]
 
  Go to revisionGo to path
Help
Rev: HEAD (658) - svn://greenwoodma.servehttp.com/open-source / blog-code / arduino / libraries / ShiftRegister / ShiftRegister.cpp
Show File - ShiftRegister.cpp  [show properties]
spinner
/**
 * ShiftRegister
 * Copyright (c) Mark A. Greenwood, 2012
 * This work is licensed under the Creative Commons
 * Attribution-NonCommercial-ShareAlike 3.0 Unported License.
 * To view a copy of this license, visit
 * http://creativecommons.org/licenses/by-nc-sa/3.0/.
 **/
10  #include "Arduino.h"
11  #include "ShiftRegister.h"
12 
13  ShiftRegister::ShiftRegister(byte data, byte clock, byte latch)
14  {
15    _data = data;
16    _clock = clock;
17    _latch = latch;
18 
19    _state = B00000000;
20 
21    pinMode(_data, OUTPUT);  
22    pinMode(_clock, OUTPUT);
23    pinMode(_latch, OUTPUT);
24 
25    sync();
26  }
27 
28  void ShiftRegister::sync ()
29  {
30    // Signal to the 595 to listen for data
31    digitalWrite (_latch, LOW);
32 
33    shiftOut (_data, _clock, MSBFIRST, _state);
34       
35    // Signal to the 595 that I'm done sending
36    digitalWrite (_latch, HIGH);
37  }
38       
39  void ShiftRegister::setPin(byte pin, byte value) {
40    setPin(pin, value, true);
41  }
42 
43  void ShiftRegister::setPin(byte pin, byte value, boolean update) {
44    if (value == HIGH) {
45      bitSet(_state, pin); 
46    }
47    else {
48      bitClear(_state, pin); 
49    }
50        
51    if (update) sync();
52  }

feed icon

sventon 2.1.4