Topic 2. Arduino Potentiometer

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:

  1. 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)
  2. 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.
  3. 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

Tinkercad

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

Tinkercad

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();
}
}