Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- 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);
+ }
+}