簡體   English   中英

如何拆分一個值以在多個 8 位顯示器上顯示?

[英]How to split a value for showing on multiple 8-digit displays?

我正在嘗試編寫 Arduino 草圖,並且我正在從外部源獲取一個值,我試圖在三個菊花鏈式 8 位 LED 顯示器上顯示該值。

目前我可以像這樣顯示單個數字:

//mydisplay.setDigit(displaynumber, position, value, comma);

mydisplay.setDigit(0, 7, 0, false);
mydisplay.setDigit(0, 6, 9, false);
mydisplay.setDigit(0, 5, 2, false);
mydisplay.setDigit(0, 4, 7, true);
mydisplay.setDigit(0, 3, 5, false);
mydisplay.setDigit(0, 2, 5, false);
mydisplay.setDigit(0, 1, 2, false);
mydisplay.setDigit(0, 0, 5, false);

mydisplay.setDigit(1, 7, 5, false);
mydisplay.setDigit(1, 6, 6, false);


mydisplay.setDigit(1, 3, 5, false);
mydisplay.setDigit(1, 2, 5, false);
mydisplay.setDigit(1, 1, 5, false);
mydisplay.setDigit(1, 0, 6, false);

mydisplay.setDigit(2, 7, 7, false);
mydisplay.setDigit(2, 6, 7, false);
mydisplay.setDigit(2, 5, 8, false);
mydisplay.setDigit(2, 4, 8, false);
mydisplay.setDigit(2, 3, 9, false);
mydisplay.setDigit(2, 2, 9, false);
mydisplay.setDigit(2, 1, 0, false);
mydisplay.setDigit(2, 0, 0, false);

這顯示: 09275525 56 5556 77889900 但我不知道從哪里開始,如果我只想有一個簡單的函數,我可以輸入任何變量並調用這樣的單個函數:

mydisplay.myfunctiontodisplay("09275525 56  5556 77889900");

我知道我需要做某種循環,但我不知道該怎么做。

首先,您將 24 個字符的字符串中的位置(即從 0 到 23(含)的數字映射到(顯示,數字)對。 從您的示例中可以看出,映射應如下所示:

int pos = ...      // This is the position inside your 24-character string
int dsp = pos / 8; // Display index
int dig = 7-pos%8; // Digit index

現在你的setDigits函數可以寫成如下:

void setDigits(Display& display, const char* str) {
    if (!str || strlen(str) != 24) {
        return; // Accept only 24-character strings
    }
    for (int pos = 0 ; pos != 24 ; pos++) {
        char c = str[pos];
        int dsp = pos / 8;
        int dig = 7-pos%8;
        if (isdigit(c)) {
            display.setDigit(dsp, dig, c-'0', false);
        } else {
            display.clear(dsp, dig);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM