Arduino 了解使用操纵杆控制8x8点阵的代码背后的逻辑
我在网上找到了这段代码,用于用Arduino控制max7219 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)
#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);