Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 了解使用操纵杆控制8x8点阵的代码背后的逻辑_Arduino_Led_Joystick_Arduino C++ - Fatal编程技术网

Arduino 了解使用操纵杆控制8x8点阵的代码背后的逻辑

Arduino 了解使用操纵杆控制8x8点阵的代码背后的逻辑,arduino,led,joystick,arduino-c++,Arduino,Led,Joystick,Arduino C++,我在网上找到了这段代码,用于用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)

我在网上找到了这段代码,用于用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//
}
1021从何而来?为什么它是fromLow值,而它似乎是它所缩放的任何范围的最大值?7是从哪里来的,为什么他们会处于这样的位置

最后,所有的
Serial.print()
语句到底发生了什么?什么是序列号,什么是DEC


正如你可以告诉我的,我对C++是很新的,所以这里的任何帮助都会被理解,谢谢。

< >从ARDUIO手册:

设置串行数据的数据速率(以位/秒(波特)为单位) 传输

你的情况是9600

将数据作为人类可读的ASCII文本打印到串行端口。一 可选的第二个参数指定要使用的基(格式); 允许的值为BIN(二进制或基数2)、OCT(八进制或基数8), 十进制(十进制或以10为基数)、十六进制(十六进制或以16为基数)。漂浮 点编号,此参数指定小数位数 使用。比如说-

序列号。打印(78,BIN)显示“1001110”

连载(10月78日)给出“116”

连载印刷(78,12月)给出“78”

串行打印(78,十六进制)显示“4E”

串行打印(1.23456,0)给出“1”

串行打印(1.23456,2)给出“1.23”

串行打印(1.23456,4)给出“1.2345”

将数字从一个范围重新映射到另一个范围。也就是说,值为 fromLow将被映射到toLow,一个从高到高的值, 介于之间的值到介于之间的值等

:要映射的数字。fromLow:值的下限 当前范围

fromHigh:值当前范围的上限

toLow:值目标范围的下限

toHigh:值目标范围的上限


值1021由编写该代码的人选择,因为他想将范围[1021-0]映射到[7-0],很可能是因为最大操纵杆伸长产生模拟值1021。

“串行”表示它使用串行传输协议。DEC是十进制的。正如你可以告诉我的,我对C++是非常新的——FYI——你问的问题与C++语言没有什么关系,更多的是与ARDUINO API函数有关。一个没有对阿杜伊诺做任何事情的C++专家不能回答你提出的问题。请不要问可以通过ARDUIO手册回答的问题,DEC意味着写这个的人可能不太清楚他们在做什么。DEC是打印语句的默认值。当你看到这通常是一个迹象,有人不是那么流利的Arduino编码。它们中的每一个都可以删除,而无需更改任何内容。
char x_translate = map(LR, 1021, 0, 7, 0); //map(value, fromLow, fromHigh, toLow, toHigh)
char y_translate = map(UD, 1021, 0, 0, 7);