Description: The TPL0501 100K Digital Potentiometer Module is a precision 256-step digitally controlled resistor, perfect for adjusting voltage, signal gain, or contrast in electronic circuits. Controlled via SPI interface, it allows for accurate and repeatable resistance adjustments without mechanical wear, making it ideal for Arduino, Raspberry Pi, and other microcontroller projects.
Specifications:
Potentiometer Type: Digital (256-step)
Resistance: 100 KΩ
Interface: SPI
Supply Voltage: 3.3V–5V
Step Resolution: 256 steps (8-bit)
Temperature Range: -40°C to 125°C
Package Type: Module with pins for easy breadboard connection
Short Features:
100KΩ digitally controlled potentiometer
256-step high-resolution adjustment
SPI interface for precise digital control
Compact module, easy to integrate in projects
Wide voltage range: 3.3V–5V
Package Includes:
Pin Connections Table 1
Board Sensor Pin Connection TPL0501 VCC/GND/CS 2.7-5.5V / GND / board digital pin
TPL0501 100K Digital Potentiometer Module (256-Step SPI) - Arduino Uno
TPL0501 100K Digital Potentiometer Module (256-Step SPI) - Arduino Nano
TPL0501 100K Digital Potentiometer Module (256-Step SPI) - Arduino Mega
TPL0501 100K Digital Potentiometer Module (256-Step SPI) - ESP32
TPL0501 100K Digital Potentiometer Module (256-Step SPI) - ESP8266
TPL0501 100K Digital Potentiometer Module (256-Step SPI) - STM32
TPL0501 100K Digital Potentiometer Module (256-Step SPI) - Raspberry Pi Pico
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // CS=10 on Arduino Uno (SPI digital potentiometer, 256 steps)
6 #include <SPI.h>
7
8 #define CS_PIN 10
9
10 void setPot(byte value) { // 0 -255
11 digitalWrite (CS_PIN, LOW );
12 SPI.transfer(0x00); // write command to wiper register
13 SPI.transfer(value);
14 digitalWrite (CS_PIN, HIGH );
15 }
16
17 void setup () {
18 pinMode (CS_PIN, OUTPUT );
19 digitalWrite (CS_PIN, HIGH );
20 SPI.begin();
21 }
22
23 void loop () {
24 for (int v = 0 ; v <= 255 ; v += 5 ) { setPot(v); delay (30 ); }
25 for (int v = 255 ; v >= 0 ; v -= 5 ) { setPot(v); delay (30 ); }
26 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // CS=10 on Arduino Nano (SPI digital potentiometer, 256 steps)
6 #include <SPI.h>
7
8 #define CS_PIN 10
9
10 void setPot(byte value) { // 0 -255
11 digitalWrite (CS_PIN, LOW );
12 SPI.transfer(0x00); // write command to wiper register
13 SPI.transfer(value);
14 digitalWrite (CS_PIN, HIGH );
15 }
16
17 void setup () {
18 pinMode (CS_PIN, OUTPUT );
19 digitalWrite (CS_PIN, HIGH );
20 SPI.begin();
21 }
22
23 void loop () {
24 for (int v = 0 ; v <= 255 ; v += 5 ) { setPot(v); delay (30 ); }
25 for (int v = 255 ; v >= 0 ; v -= 5 ) { setPot(v); delay (30 ); }
26 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // CS=53 on Arduino Mega (SPI digital potentiometer, 256 steps)
6 #include <SPI.h>
7
8 #define CS_PIN 53
9
10 void setPot(byte value) { // 0 -255
11 digitalWrite (CS_PIN, LOW );
12 SPI.transfer(0x00); // write command to wiper register
13 SPI.transfer(value);
14 digitalWrite (CS_PIN, HIGH );
15 }
16
17 void setup () {
18 pinMode (CS_PIN, OUTPUT );
19 digitalWrite (CS_PIN, HIGH );
20 SPI.begin();
21 }
22
23 void loop () {
24 for (int v = 0 ; v <= 255 ; v += 5 ) { setPot(v); delay (30 ); }
25 for (int v = 255 ; v >= 0 ; v -= 5 ) { setPot(v); delay (30 ); }
26 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // CS=5 on ESP32 (SPI digital potentiometer, 256 steps)
6 #include <SPI.h>
7
8 #define CS_PIN 5
9
10 void setPot(byte value) { // 0 -255
11 digitalWrite (CS_PIN, LOW );
12 SPI.transfer(0x00); // write command to wiper register
13 SPI.transfer(value);
14 digitalWrite (CS_PIN, HIGH );
15 }
16
17 void setup () {
18 pinMode (CS_PIN, OUTPUT );
19 digitalWrite (CS_PIN, HIGH );
20 SPI.begin();
21 }
22
23 void loop () {
24 for (int v = 0 ; v <= 255 ; v += 5 ) { setPot(v); delay (30 ); }
25 for (int v = 255 ; v >= 0 ; v -= 5 ) { setPot(v); delay (30 ); }
26 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // CS=D8 on ESP8266 (SPI digital potentiometer, 256 steps)
6 #include <SPI.h>
7
8 #define CS_PIN D8
9
10 void setPot(byte value) { // 0 -255
11 digitalWrite (CS_PIN, LOW );
12 SPI.transfer(0x00); // write command to wiper register
13 SPI.transfer(value);
14 digitalWrite (CS_PIN, HIGH );
15 }
16
17 void setup () {
18 pinMode (CS_PIN, OUTPUT );
19 digitalWrite (CS_PIN, HIGH );
20 SPI.begin();
21 }
22
23 void loop () {
24 for (int v = 0 ; v <= 255 ; v += 5 ) { setPot(v); delay (30 ); }
25 for (int v = 255 ; v >= 0 ; v -= 5 ) { setPot(v); delay (30 ); }
26 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // CS=PA4 on STM32 (SPI digital potentiometer, 256 steps)
6 #include <SPI.h>
7
8 #define CS_PIN PA4
9
10 void setPot(byte value) { // 0 -255
11 digitalWrite (CS_PIN, LOW );
12 SPI.transfer(0x00); // write command to wiper register
13 SPI.transfer(value);
14 digitalWrite (CS_PIN, HIGH );
15 }
16
17 void setup () {
18 pinMode (CS_PIN, OUTPUT );
19 digitalWrite (CS_PIN, HIGH );
20 SPI.begin();
21 }
22
23 void loop () {
24 for (int v = 0 ; v <= 255 ; v += 5 ) { setPot(v); delay (30 ); }
25 for (int v = 255 ; v >= 0 ; v -= 5 ) { setPot(v); delay (30 ); }
26 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // CS=17 on Raspberry Pi Pico (SPI digital potentiometer, 256 steps)
6 #include <SPI.h>
7
8 #define CS_PIN 17
9
10 void setPot(byte value) { // 0 -255
11 digitalWrite (CS_PIN, LOW );
12 SPI.transfer(0x00); // write command to wiper register
13 SPI.transfer(value);
14 digitalWrite (CS_PIN, HIGH );
15 }
16
17 void setup () {
18 pinMode (CS_PIN, OUTPUT );
19 digitalWrite (CS_PIN, HIGH );
20 SPI.begin();
21 }
22
23 void loop () {
24 for (int v = 0 ; v <= 255 ; v += 5 ) { setPot(v); delay (30 ); }
25 for (int v = 255 ; v >= 0 ; v -= 5 ) { setPot(v); delay (30 ); }
26 }
Project Notes: SPI-controlled digital potentiometer.