我对Arduino中的#define
事情感到困惑。通常我使用#define
来选择我想要使用的引脚。
但是here代码有像
#define LTC_CS 2
#define LTC_MISO 4
#define LTC_SCK 5
但是在Arduino Uno上我分别连接引脚10,12和13? 这是什么意思?为什么我不连接引脚2,4和5? LTC 2400您可以从图中检查连接。请帮我卡住。 我无法将它连接到Arduino Leonardo。当我将它连接到引脚10,12和13时,它无法正常工作。
答案 0 :(得分:1)
如果您添加了您链接的代码中的注释,那么它实际上会解释这些#define
正在做什么。
#define LTC_CS 2 // LTC2400 Chip Select Pin on Portb 2
#define LTC_MISO 4 // LTC2400 SDO Select Pin on Portb 4
#define LTC_SCK 5 // LTC2400 SCK Select Pin on Portb 5
这似乎解释了对应于Arduino的IO端口B引脚2的物理IO引脚应连接到LTC2400上的CS(片选)引脚,类似地,其他两个引脚连接到LTC2400上的其他命名引脚
这些数字与实际物理引脚数不同的原因是它们没有引用引脚号,它们指的是控制PORTB
寄存器中引脚的位的位置。 sbi(PORTB,LTC_CS)
表示"将PORTB寄存器的第2位设置为1"并将引脚升至逻辑高电平。
#define
本身不是在Arduino上运行的代码;它是preprocessor directive。 #define
在这里做的是定义常量。 #define LTC_CS 2
表示"在此代码文件中,当我写LTC_CS
时,假装我写了2
而不是#34;。稍后,这些宏将用于sbi(PORTB,LTC_CS);
之类的代码中。在该函数调用中,您可以改为编写sbi(PORTB,2)
,并且由于LTC_CS已定义为值2,因此它意味着相同的事情并编译为相同的代码。