【发布时间】:2020-05-13 05:22:54
【问题描述】:
我在网上找到了这段代码,用于使用 Arduino 控制 max7219 8x8 矩阵,但我很难理解关于代码的一些内容。这是整个代码:
#include <LedControl.h>
int UD = 0;
int LR = 0; //Setting up controller//
LedControl lc=LedControl(8,10,9,1); //10 is to CLOCK, 9 = CS, 8=DIN//
void setup() {
Serial.begin(9600);
lc.shutdown(0,false); // turn off power saving, enables display
lc.setIntensity(0,1); // sets brightness (0~15 possible values)
lc.clearDisplay(0); // clear screen
}
void loop() {
UD = analogRead(A0);
LR = analogRead(A1);
char x_translate = map(LR, 1021, 0, 7, 0); //map(value, fromLow, fromHigh, toLow, toHigh)
char y_translate = map(UD, 1021, 0, 0, 7);
Serial.print("UD = ");
Serial.print(UD, DEC);
Serial.print(", LR = ");
Serial.print(LR, DEC);
Serial.print(", x = ");
Serial.print(x_translate, DEC);
Serial.print(", y = ");
Serial.println(y_translate, DEC);
// not in shutdown mode
lc.clearDisplay(0);
lc.setLed(0,x_translate,y_translate,true);
delay(150); //adjust delay to get your joystick correct//
}
我的第一个问题与Serial.begin(9600) 的含义有关。
我最大的问题是将操纵杆的模拟输入转换为点亮矩阵上的 LED:
char x_translate = map(LR, 1021, 0, 7, 0); //map(value, fromLow, fromHigh, toLow, toHigh)
char y_translate = map(UD, 1021, 0, 0, 7);
1021 来自哪里,为什么它是 fromLow 值,而它似乎是它扩展的任何范围的最大值? 7 是从哪里来的,为什么会出现在他们现在的位置上?
最后,所有Serial.print() 语句到底发生了什么?什么是 Serial,什么是 DEC?
如您所知,我对 C++ 还很陌生,因此我们将不胜感激,谢谢。
【问题讨论】:
-
“Serial”表示它使用串行传输协议。 DEC 表示十进制。
-
如你所知,我对 C++ 还很陌生 -- 仅供参考 -- 你提出的问题与 C++ 语言几乎没有关系,更多的是使用 Arduino API 函数。一位没有对 Arduino 做过任何事情的 C++ 专家无法回答您提出的问题。
-
请不要问可以参考Arduino手册回答的问题
-
DEC 意味着写这篇文章的人可能不太清楚他们在做什么。 DEC 是打印语句的默认值。当您看到这通常表明某人对 Arduino 编码不那么流利时。它们中的每一个都可以在不更改任何内容的情况下删除。
标签: arduino led joystick arduino-c++