ShiftReg library (74HC595, NUJ3711)

Files at this revision

API Documentation at this revision

Comitter:
kysiki
Date:
Sat Oct 24 17:44:30 2015 +0000
Parent:
0:5f1670338bef
Commit message:
8bit, 16bit, 32bit???

Changed in this revision

ShiftReg.cpp Show annotated file Show diff for this revision Revisions of this file
ShiftReg.h Show annotated file Show diff for this revision Revisions of this file
diff -r 5f1670338bef -r 3741bc0fbba8 ShiftReg.cpp
--- a/ShiftReg.cpp	Sat Oct 24 16:30:11 2015 +0000
+++ b/ShiftReg.cpp	Sat Oct 24 17:44:30 2015 +0000
@@ -1,7 +1,8 @@
 #include "ShiftReg.h"
 #include "mbed.h"
- 
-ShiftReg::ShiftReg(PinName dataPin, PinName stbPin, 
+
+template <class T_bit>
+ShiftReg<T_bit>::ShiftReg(PinName dataPin, PinName stbPin, 
                    PinName clkPin, PinName clrPin)
 : 
     DATA(dataPin),
@@ -14,9 +15,10 @@
     CLK  = 1;
     CLR  = 1;
 }
- 
-void ShiftReg::send_data(uint8_t data) {
-    shiftOut(data);
+
+template <class T_bit>
+void ShiftReg<T_bit>::send_data(T_bit data, uint8_t size) {
+    shiftOut(data, size);
     wait_us(1);
 #ifdef HC595
     STB = 0;
@@ -32,10 +34,14 @@
     wait_us(1);
 }
 
-void ShiftReg::shiftOut(uint8_t data) {
-    for(int i = 0; i < 8; i++) {
+template <class T_bit>
+void ShiftReg<T_bit>::shiftOut(T_bit data, uint8_t size) {
+    for(int i = 0; i < size; i++) {
         DATA = (data & (1 << i));
         CLK = 0;
         CLK = 1;
     }
-}
\ No newline at end of file
+}
+template class ShiftReg<uint8_t>;
+template class ShiftReg<uint16_t>;
+template class ShiftReg<uint32_t>;
\ No newline at end of file
diff -r 5f1670338bef -r 3741bc0fbba8 ShiftReg.h
--- a/ShiftReg.h	Sat Oct 24 16:30:11 2015 +0000
+++ b/ShiftReg.h	Sat Oct 24 17:44:30 2015 +0000
@@ -3,18 +3,23 @@
 #define HC595
 //#define NJU3711
 #include "mbed.h"
- 
+
+template <class T_bit>
 class ShiftReg {
 public:
     ShiftReg(PinName dataPin, PinName stbPin, PinName clkPin, PinName clrPin);
-    void send_data(uint8_t data);
+    void send_data(T_bit data, uint8_t size);
+    typedef ShiftReg<uint8_t> ShiftReg8;
+    typedef ShiftReg<uint16_t> ShiftReg16;
+    typedef ShiftReg<uint32_t> ShiftReg32;
+
   
 private:  
     DigitalOut DATA;
     DigitalOut STB;
     DigitalOut CLK;
     DigitalOut CLR;
-    void shiftOut(uint8_t data);
+    void shiftOut(T_bit data, uint8_t size);
 };
  
 #endif
\ No newline at end of file