Koichi Kurahashi / Mbed 2 deprecated LED_SingleMatrix_Number

Dependencies:   mbed-rtos mbed

Revision:
0:070e4cb87478
Child:
1:badc825f9c7e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Jun 27 07:51:45 2015 +0000
@@ -0,0 +1,101 @@
+#include "mbed.h"
+
+
+char num0[] = {126,129,129,129,129,129,126,0};
+char num1[] = {0,1,65,255,1,1,0,0};
+char num2[] = {33,67,133,137,137,113,1,0};
+char num3[] = {66,129,145,145,145,145,110,0};
+char num4[] = {24,40,72,136,8,255,8,0};
+char num5[] = {242,145,145,145,145,145,142,0};
+char num6[] = {126,145,145,145,145,145,78,0};
+char num7[] = {192,128,128,143,144,160,192,0};
+char num8[] = {110,145,145,145,145,145,110,0};
+char num9[] = {114,137,137,137,137,137,126,0};
+
+
+char *nums[] = {num0, num1, num2, num3, num4, num5, num6, num7, num8, num9};
+
+//BusOut common(dp15,dp25,dp13,dp17, dp1,dp11, dp2);     // anode
+//BusOut row(   dp18, dp4, dp6,dp14,dp10,dp16,dp26,dp28);     // casode
+BusOut common( dp9,  dp2, dp11,  dp1, dp17, dp13, dp25, dp15);     // anode
+BusOut row(   dp28, dp26, dp16, dp10, dp14,  dp6,  dp4, dp18);     // casode
+
+
+
+Ticker frameRate;
+Ticker dynamicRate;
+
+
+char *displayBuffer = "9876543210";
+int nDisplayBuffer;
+int  iDisplayBuffer = 0;
+char *pNumLeft;     // 出力中の数字ビットパターン、左側
+char *pNumRight;    // 出力中の数字ビットパターン、右側
+int  iShift = 0;        // 0 - 7 ... 現在何ビットずれているか
+
+
+void setPNumLeftAndRight() {
+    char left  = displayBuffer[iDisplayBuffer];
+    pNumLeft = nums[left  - '0'];
+    char right = (iDisplayBuffer+1 >= nDisplayBuffer) ? displayBuffer[0] : displayBuffer[iDisplayBuffer+1];
+    pNumRight = nums[right - '0'];
+}
+
+void dynamicDriver();
+
+
+void count() {
+    dynamicRate.detach();
+    
+    iShift++;
+    if (iShift >= 8) {
+        iShift = 0;
+        
+        iDisplayBuffer++;
+        if (iDisplayBuffer >= nDisplayBuffer) {
+            iDisplayBuffer = 0;
+        }
+        setPNumLeftAndRight();
+    }
+    
+    dynamicRate.attach(dynamicDriver, 0.0001);
+}
+
+
+int iYoko = 0;
+int pYoko = 1;
+
+
+void dynamicDriver() {
+    int i = iYoko + iShift;
+    
+    common = 0x00;
+//    char rowData = (i < 8) ? iShift : iShift*16; 
+//    char rowData = (i < 8) ? num0[iShift] : num1[iShift]; 
+    char rowData = (i < 8) ? pNumLeft[i] : pNumRight[i % 8]; 
+    row    = (~rowData) & 0x00ff;
+    common = (pYoko)    & 0x00ff;
+    iYoko++;
+    pYoko *= 2;
+    if (iYoko == 8) {
+        iYoko = 0;
+        pYoko = 1;
+    }
+}
+
+
+int main() {
+    nDisplayBuffer = strlen(displayBuffer);
+    
+    iDisplayBuffer = 0;
+    iShift         = 0;
+    setPNumLeftAndRight();
+    
+    frameRate.attach(count, 0.05);
+    dynamicRate.attach(dynamicDriver, 0.0001);
+
+    
+    while(1) {
+        wait(1);
+    }
+}