max7219 arduino不显示小数

时间:2018-09-07 10:31:28

标签: arduino-uno

我正在使用LedControl库中的arduino示例代码。

我真的很陌生。

我有代码对显示屏上的所有数字进行计数。

但是由于某些原因,我无法点亮小数点。

整个代码在下面。

//We always have to include the library
#include "LedControl.h"

/*
Now we need a LedControl to work with.
 ***** These pin numbers will probably not work with your hardware *****
pin 12 is connected to the DataIn 
pin 11 is connected to the CLK 
pin 10 is connected to LOAD 
 We have only a single MAX72XX.
*/
LedControl lc=LedControl(3,7,6,1);

/* we always wait a bit between updates of the display */
unsigned long delaytime=250;

void setup() {
/*
The MAX72XX is in power-saving mode on startup,
we have to do a wakeup call
*/
lc.shutdown(0,false);
/* Set the brightness to a medium values */
lc.setIntensity(0,8);
/* and clear the display */
lc.clearDisplay(0);
int b = 0;
while (b < 10)
{
lc.setDigit(0,7,b,false);
lc.setDigit(0,6,b,false);
lc.setDigit(0,5,b,false);
lc.setDigit(0,4,b,false);
lc.setDigit(0,3,b,false);
lc.setDigit(0,2,b,false);
lc.setDigit(0,1,b,false);
lc.setDigit(0,0,b,false);
lc.setDigit(0,0,'.',false);
delay(500);
b++;
}
delay(2000);
lc.clearDisplay(0);
}


/*
This method will display the characters for the
word "Arduino" one after the other on digit 0. 
*/
void writeArduinoOn7Segment() {
lc.setChar(0,0,'a',false);
delay(delaytime);
lc.setRow(0,0,0x05);
delay(delaytime);
lc.setChar(0,0,'d',false);
delay(delaytime);
lc.setRow(0,0,0x1c);
delay(delaytime);
lc.setRow(0,0,B00010000);
delay(delaytime);
lc.setRow(0,0,0x15);
delay(delaytime);
lc.setRow(0,0,0x1D);
delay(delaytime);
lc.clearDisplay(0);
delay(delaytime);
} 

/*
This method will scroll all the hexa-decimal
numbers and letters on the display. You will need at least
four 7-Segment digits. otherwise it won't really look that good.
*/
void scrollDigits() {
for(int i=0;i<13;i++) {
lc.setDigit(0,3,i,false);
lc.setDigit(0,2,i+1,false);
lc.setDigit(0,1,i+2,false);
lc.setDigit(0,0,i+3,false);
delay(delaytime);
}
lc.clearDisplay(0);
delay(delaytime); 
}

void loop() { 
writeArduinoOn7Segment();
scrollDigits();
}

在设置阶段,我进行计数,但是无论我尝试什么,它都不会点亮小数点。

在头文件中说

/* 
     * Display a hexadecimal digit on a 7-Segment Display
     * Params:
     * addr address of the display
     * digit    the position of the digit on the display (0..7)
     * value    the value to be displayed. (0x00..0x0F)
     * dp   sets the decimal point.
     */
    void setDigit(int addr, int digit, byte value, boolean dp);

    /* 
     * Display a character on a 7-Segment display.
     * There are only a few characters that make sense here :
     *  '0','1','2','3','4','5','6','7','8','9','0',
     *  'A','b','c','d','E','F','H','L','P',
     *  '.','-','_',' ' 
     * Params:
     * addr address of the display
     * digit    the position of the character on the display (0..7)
     * value    the character to be displayed. 
     * dp   sets the decimal point.
     */
    void setChar(int addr, int digit, char value, boolean dp);

让我认为末尾的false是小数点,但是将其更改为true不会做任何事情。

我知道它很小,但是我不知道从这里到哪里

0 个答案:

没有答案