A potentiometer, also known as a rotary angle sensor, is a simple electronic component that allows manual adjustment of a value. You might encounter potentiometers in various applications, such as adjusting volume on a stereo, controlling lamp brightness, or even zooming in on an oscilloscope.
How Does It Work?
- A potentiometer typically has three pins:
- GND (Ground) pin: Connect this to the ground (0V).
- VCC (Voltage) pin: Connect this to the power supply (either 5V or 3.3V).
- Output pin: This pin provides a voltage output proportional to the rotated angle of the potentiometer shaft.
- The shaft of the potentiometer is rotatable from 0° (nearest to GND) to an upper bound angle (nearest to the VCC pin), which we’ll call ANGLE_MAX.
- The output voltage from the potentiometer ranges from GND’s voltage to VCC’s voltage.
- The output voltage is directly proportional to the rotated angle of the shaft:
- If the angle is 0°, the output voltage is 0V.
- If the angle is ANGLE_MAX, the output voltage is VCC’s voltage.
- For angles in between, the output voltage can be calculated as:
output_voltage = angle × VCC / ANGLE_MAX
. - Note that the specific value of ANGLE_MAX depends on the manufacturer.
Connecting a Potentiometer to Arduino:
- Connect the potentiometer pins as follows:
- GND pin → Arduino GND
- VCC pin → Arduino 5V (or 3.3V)
- Output pin → Any analog input pin on the Arduino (e.g., A0 to A5)
- The analog input pin on the Arduino converts the voltage (between 0V and VCC) into integer values (ranging from 0 to 1023), known as ADC (analog-to-digital converter) values.
- After reading the ADC value, you can rescale it to obtain meaningful values based on your application.
Controlling speed of LED with arduino
What do you need:
1x Single Colour LED
1x 330 om Resistor
6x Wire


Arduino code
int sensorPin = 0;
int ledPin = 10;
int sensorValue = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin); // loeb analoog sisendi väärtust ja saadab tagasi täisarvu vahemikus 0 kuni 1023. See tähendab 10 bitilist täpsust (2^10 = 1024).
digitalWrite(ledPin, HIGH);
delay(sensorValue);
digitalWrite(ledPin, LOW);
delay(sensorValue);
float voltage = sensorValue * (5.0 / 1023.0); // konverteerime väärtuse (0 - 1023) ja tagastab (0 - 5V):
Serial.println(voltage); // Saadud tulemused kirjutame Serial Monitori.
}
Christmas light with 5 modes
What do you need:
9x Mixed colours LED
9x 220 om Resistor
12x Wire


Arduino code
int sensorPin = 0;
int ledred1 = 10;
int ledblue1 = 9;
int ledgreen1 = 8;
int ledred2 = 11;
int ledblue2 = 12;
int ledgreen2 = 5;
int ledred3 = 4;
int ledblue3 = 3;
int ledgreen3 = 2;
int sensorValue = 0;
int SwitchMode;
void setup()
{
pinMode(ledred1, OUTPUT);
pinMode(ledred2, OUTPUT);
pinMode(ledred3, OUTPUT);
pinMode(ledblue1, OUTPUT);
pinMode(ledblue2, OUTPUT);
pinMode(ledblue3, OUTPUT);
pinMode(ledgreen1, OUTPUT);
pinMode(ledgreen2, OUTPUT);
pinMode(ledgreen3, OUTPUT);
}
//Режим случайного мигания
void randomMiganie() {
digitalWrite(ledred1, random(2)); // Включаем светодиод red1 случайным образом
digitalWrite(ledred2, random(2));
digitalWrite(ledred3, random(2));
digitalWrite(ledblue1, random(2)); // Включаем светодиод blue1 случайным образом
digitalWrite(ledblue2, random(2));
digitalWrite(ledblue3, random(2));
digitalWrite(ledgreen1, random(2)); // Включаем светодиод green1 случайным образом
digitalWrite(ledgreen2, random(2));
digitalWrite(ledgreen3, random(2));
delay(500); // Подождать некоторое время
}
// Последовательное включение светодиодов от одного конца к другому
void girlyanda() {
for (int i = 0; i < 3; i++) {
digitalWrite(ledred1, HIGH);
delay(100);
digitalWrite(ledred1, LOW);
digitalWrite(ledblue1, HIGH);
delay(100);
digitalWrite(ledblue1, LOW);
digitalWrite(ledgreen1, HIGH);
delay(100);
digitalWrite(ledgreen1, LOW);
digitalWrite(ledgreen2, HIGH);
delay(100);
digitalWrite(ledgreen2, LOW);
digitalWrite(ledblue2, HIGH);
delay(100);
digitalWrite(ledblue2, LOW);
digitalWrite(ledred2, HIGH);
delay(100);
digitalWrite(ledred2, LOW);
digitalWrite(ledred3, HIGH);
delay(100);
digitalWrite(ledred3, LOW);
digitalWrite(ledblue3, HIGH);
delay(100);
digitalWrite(ledblue3, LOW);
digitalWrite(ledgreen3, HIGH);
delay(100);
digitalWrite(ledgreen3, LOW);
digitalWrite(ledgreen2, HIGH);
delay(100);
digitalWrite(ledgreen2, LOW);
digitalWrite(ledblue2, HIGH);
delay(100);
digitalWrite(ledblue2, LOW);
digitalWrite(ledred2, HIGH);
delay(100);
digitalWrite(ledred2, LOW);
digitalWrite(ledred1, HIGH);
delay(100);
digitalWrite(ledred1, LOW);
}
}
// Медленный режим
void slow()
{
digitalWrite(ledred1, HIGH);
digitalWrite(ledred2, HIGH);
digitalWrite(ledred3, HIGH);
delay(1000);
digitalWrite(ledred1, LOW);
digitalWrite(ledred2, LOW);
digitalWrite(ledred3, LOW);
delay(1000);
digitalWrite(ledblue1, HIGH);
digitalWrite(ledblue2, HIGH);
digitalWrite(ledblue3, HIGH);
delay(800);
digitalWrite(ledblue1, LOW);
digitalWrite(ledblue2, LOW);
digitalWrite(ledblue3, LOW);
delay(1000);
digitalWrite(ledgreen1, HIGH);
digitalWrite(ledgreen2, HIGH);
digitalWrite(ledgreen3, HIGH);
delay(1000);
digitalWrite(ledgreen1, LOW);
digitalWrite(ledgreen2, LOW);
digitalWrite(ledgreen3, LOW);
delay(1000);
}
//Режим типа змейки
void snake()
{
digitalWrite(ledred1, HIGH);
delay(200);
digitalWrite(ledblue1, HIGH);
delay(200);
digitalWrite(ledgreen1, HIGH);
delay(200);
digitalWrite(ledred2, HIGH);
delay(200);
digitalWrite(ledblue2, HIGH);
delay(200);
digitalWrite(ledgreen2, HIGH);
delay(200);
digitalWrite(ledred3, HIGH);
delay(200);
digitalWrite(ledblue3, HIGH);
delay(200);
digitalWrite(ledgreen3, HIGH);
delay(300);
digitalWrite(ledred1, LOW);
delay(200);
digitalWrite(ledblue1, LOW);
delay(200);
digitalWrite(ledgreen1, LOW);
delay(200);
digitalWrite(ledred2, LOW);
delay(200);
digitalWrite(ledblue2, LOW);
delay(200);
digitalWrite(ledgreen2, LOW);
delay(200);
digitalWrite(ledred3, LOW);
delay(200);
digitalWrite(ledblue3, LOW);
delay(200);
digitalWrite(ledgreen3, LOW);
delay(300);
}
//Плавный режим
void fade()
{
digitalWrite(ledred1, HIGH);
digitalWrite(ledblue2, HIGH);
digitalWrite(ledgreen3, HIGH);
delay(500);
digitalWrite(ledblue1, HIGH);
digitalWrite(ledgreen2, HIGH);
digitalWrite(ledred3, HIGH);
delay(500);
digitalWrite(ledgreen1, HIGH);
digitalWrite(ledred2, HIGH);
digitalWrite(ledblue3, HIGH);
delay(600);
digitalWrite(ledred1, LOW);
digitalWrite(ledblue2, LOW);
digitalWrite(ledgreen3, LOW);
delay(500);
digitalWrite(ledblue1, LOW);
digitalWrite(ledgreen2, LOW);
digitalWrite(ledred3, LOW);
delay(500);
digitalWrite(ledgreen1, LOW);
digitalWrite(ledred2, LOW);
digitalWrite(ledblue3, LOW);
delay(500);
}
void loop()
{
SwitchMode = analogRead(sensorPin);
//Переключение режимов
SwitchMode=map(SwitchMode,0,1023,1,6);
if (SwitchMode==1)
{
girlyanda();
}
else if(SwitchMode==2)
{
randomMiganie();
}
else if(SwitchMode==3)
{
fade();
}
else if(SwitchMode==4)
{
slow();
}
else if (SwitchMode==5)
{
snake();
}
}