求助个书中疑问-P141-Arduino中文社区 - Powered by Discuz! Archiver

王振668 发表于 2016-8-18 09:13

求助个书中疑问-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对应的电阻值才对。

奈何col 发表于 2016-8-18 10:43

digitalPotWrite(channel, level);
这是一个函数调用,如果对函数不太了解,可以百度下相关知识
页: [1]
查看完整版本: 求助个书中疑问-P141