求助个书中疑问-P141
/*Digital Pot Control
This example controls an Analog Devices AD5206 digital potentiometer.
The AD5206 has 6 potentiometer channels. Each channel's pins are labeled
*/
// 引用SPI库
#include <SPI.h>
// 设置10号引脚控制AD5206的SS脚
const int slaveSelectPin = 10;
void setup() {
// 设置SS为输出
pinMode (slaveSelectPin, OUTPUT);
// 初始化SPI
SPI.begin();
}
void loop() {
// 分别操作6个通道的数字电位器
for (int channel = 0; channel < 6; channel++) {
// 逐渐增大每个通道的阻值
for (int level = 0; level < 255; level++) {
digitalPotWrite(channel, level);
delay(10);
}
// 延时一段时间
delay(100);
// 逐渐减小每个通道的阻值
for (int level = 0; level < 255; level++) {
digitalPotWrite(channel, 255 - level);
delay(10);
}
}
}
int digitalPotWrite(int address, int value) {
// 将SS输出低电平,选择能这个设备
digitalWrite(slaveSelectPin,LOW);
// 向SPI传输地址和对应的配置值
SPI.transfer(address);
SPI.transfer(value);
//将SS输出高电平,取消选择这个设备
digitalWrite(slaveSelectPin,HIGH);
}
如上面这个例程,在最后 SPI.transfer(address);和SPI.transfer(value);这两行里面的(address)和(value)值应该是多少?我看上面只有定义两个变量是整形。
还有不是说先输出低电平选定这个外设才能使用吗?按照程序从上往下执行的顺序应该是应该先执行digitalWrite(slaveSelectPin,LOW);先选定这个外设才可以,为什么会把它放在最下面?
设置LED对应的电阻值才对。
digitalPotWrite(channel, level);
这是一个函数调用,如果对函数不太了解,可以百度下相关知识
页:
[1]