1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-11-03 14:33:37 +03:00
Files
app
build
core
hardware
libraries
EEPROM
Esplora
Ethernet
Firmata
LiquidCrystal
SD
SPI
examples
BarometricPressureSensor
DigitalPotControl
DigitalPotControl.ino
SPI.cpp
SPI.h
keywords.txt
Servo
SoftwareSerial
Stepper
WiFi
Wire
.classpath
.gitignore
.project
license.txt
readme.txt
todo.txt
esp8266/libraries/SPI/examples/DigitalPotControl/DigitalPotControl.ino
Tom Igoe 35777612c0 Changed all .pde examples to .ino
All examples in /build/shared/examples/ and /libraries/ have had their
extensions changed to .ino
2011-08-30 15:33:32 -04:00

71 lines
1.9 KiB
C++

/*
Digital Pot Control
This example controls an Analog Devices AD5206 digital potentiometer.
The AD5206 has 6 potentiometer channels. Each channel's pins are labeled
A - connect this to voltage
W - this is the pot's wiper, which changes when you set it
B - connect this to ground.
The AD5206 is SPI-compatible,and to command it, you send two bytes,
one with the channel number (0 - 5) and one with the resistance value for the
channel (0 - 255).
The circuit:
* All A pins of AD5206 connected to +5V
* All B pins of AD5206 connected to ground
* An LED and a 220-ohm resisor in series connected from each W pin to ground
* CS - to digital pin 10 (SS pin)
* SDI - to digital pin 11 (MOSI pin)
* CLK - to digital pin 13 (SCK pin)
created 10 Aug 2010
by Tom Igoe
Thanks to Heather Dewey-Hagborg for the original tutorial, 2005
*/
// inslude the SPI library:
#include <SPI.h>
// set pin 10 as the slave select for the digital pot:
const int slaveSelectPin = 10;
void setup() {
// set the slaveSelectPin as an output:
pinMode (slaveSelectPin, OUTPUT);
// initialize SPI:
SPI.begin();
}
void loop() {
// go through the six channels of the digital pot:
for (int channel = 0; channel < 6; channel++) {
// change the resistance on this channel from min to max:
for (int level = 0; level < 255; level++) {
digitalPotWrite(channel, level);
delay(10);
}
// wait a second at the top:
delay(100);
// change the resistance on this channel from max to min:
for (int level = 0; level < 255; level++) {
digitalPotWrite(channel, 255 - level);
delay(10);
}
}
}
int digitalPotWrite(int address, int value) {
// take the SS pin low to select the chip:
digitalWrite(slaveSelectPin,LOW);
// send in the address and value via SPI:
SPI.transfer(address);
SPI.transfer(value);
// take the SS pin high to de-select the chip:
digitalWrite(slaveSelectPin,HIGH);
}