for led jacket

Dependents:   ws2812test

Fork of WS2812 by Rendy Devara

Revision:
0:f080cb888db6
Child:
1:8910a1fcbdb0
diff -r 000000000000 -r f080cb888db6 WS2812.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WS2812.cpp	Sat Dec 10 08:18:58 2016 +0000
@@ -0,0 +1,250 @@
+#include "WS2812.h"
+
+
+WS2812::WS2812(PinName pin, int qty):dataOut(pin)
+{
+    dataPin = pin;
+    LED_Qty = qty;
+}
+WS2812::~WS2812()
+{
+       
+}
+void WS2812::sendReset()
+{
+    dataOut = 0;
+    wait_us(60);
+}
+void WS2812::writeColor(uint32_t RGB)
+{
+     Red = ((RGB&0xFF0000)>>16);
+     Green = ((RGB&0xFF00)>>8);
+     Blue = (RGB&0xFF);
+    
+    writeByte(Green);
+    writeByte(Red);
+    writeByte(Blue);
+    
+}
+void WS2812::send0()
+{
+    dataOut = 1;
+    //asm("nop");
+//    asm("nop");
+//    asm("nop");
+
+//--------------hitung manual
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+    dataOut = 0;
+    //asm("nop");
+//    asm("nop");
+//    asm("nop");
+//    asm("nop");
+//    asm("nop");
+//    asm("nop");
+//    
+//    asm("nop");
+//    asm("nop");
+//    asm("nop");
+
+//-----------------hitung manual
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+}
+void WS2812::send1()
+{
+    dataOut = 1;
+    //asm("nop");
+//    asm("nop");
+//    asm("nop");
+//    asm("nop");
+//    
+//    asm("nop");
+//    asm("nop");
+//    asm("nop");
+//-----------------------------------
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+    dataOut = 0;
+   // asm("nop");
+//    asm("nop");
+//    asm("nop");
+//    
+//    asm("nop");
+//    asm("nop");
+//    asm("nop");
+//-----------------hitung manual
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+            asm("nop");
+}
+void WS2812::writeByte(uint8_t data)
+{
+    for(int x=7;x>=0;x--)
+    {
+        if(data&(1<<x))
+        {
+            //bit is high
+            send1();
+        }
+        else
+        {
+            //bit is low
+            send0();
+        }
+    }
+}
+void WS2812::send1Color(uint32_t RGB)
+{
+    writeColor(RGB);
+    sendReset();
+}
\ No newline at end of file