Potentsiomeetri kasutamine

Katse 2 – Potentsiomeetri kasutamine:

Используемые компоненты:

  • Arudiono Uno 1 шт
  • Плата 1 шт
  • Светодиод 1 шт
  • Резистор 220 Om
  • Потенциометр 1 шт
  • Провода 7 шт

Схема соединения:

Код:

int sensorPin = 0;    	  

int ledPin = 13;                           			  

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.         

}

Пояснение кода:

Этот скетч на Arduino считывает значение с потенциометра — это ручной регулятор, с помощью которого можно менять напряжение, подаваемое на аналоговый вход.

В зависимости от положения ручки потенциометра:

  • А в Serial Monitor выводится рассчитанное напряжение в вольтах от 0 до 5V.
  • Светодиод мигает быстрее или медленнее (значение задержки зависит от полученного сигнала),
  • pinMode(ledPin, OUTPUT); – Устанавливаем режим пина 13 как OUTPUT — теперь мы можем подавать сигнал на светодиод (вкл/выкл).
  • Serial.begin(9600); – Запускаем сериал-порт на скорости 9600 бод, чтобы можно было выводить данные в Serial Monitor
  • analogRead(sensorPin) – возвращает значение от 0 до 1023, которое соответствует входному напряжению от 0 до 5 Вольт (10-битная точность: 2¹⁰ = 1024 шагов).
  • digitalWrite(ledPin, HIGH); – Включаем светодиод (подаём на пин 13 высокий уровень — 5В).
  • delay(sensorValue); – Задержка в миллисекундах. Чем больше значение sensorValue, тем дольше горит светодиод.
  • digitalWrite(ledPin, LOW); – Выключаем светодиод.
  • float voltage = sensorValue * (5.0 / 1023.0); – Переводим значение от 0 до 1023 в напряжение от 0 до 5 В. Формула основана на делении всего диапазона (5.0 В) на 1023 возможных значения.
  • Serial.println(voltage); – Печатаем напряжение в монитор порта. Можно наглядно увидеть, как оно меняется при повороте ручки потенциометра.

Ülesanne 2 – Гирлянда-Valguskett

Описание работы:

Данный проект реализует световую гирлянду из пяти светодиодов, управляемую с помощью потенциометра. В зависимости от положения ручки потенциометра, пользователь может выбирать один из пяти предустановленных режимов свечения, каждый из которых реализует уникальный визуальный эффект.

Используемые компоненты:

  • Arudiono Uno 1 шт
  • Плата 1 шт
  • Светодиод 5 шт
  • Резистор 220 Om 5 шт
  • Потенциометр 10 кОм 1 шт
  • Провода 10 шт

Схема соединения:

Код:

// Пины для светодиодов
const int leds[] = {2, 4, 6, 8, 13};
const int numLeds = 5;
const int potPin = A0; // Потенциометр
 
void setup() {
  // Настройка всех светодиодов
  for(int i = 0; i < numLeds; i++) {
    pinMode(leds[i], OUTPUT);
  }
}
 
void loop() {
  // Выбор режима потенциометром (0-4)
  int mode = map(analogRead(potPin), 0, 1023, 0, 5);
   
  // Выполнение текущего режима
  switch(mode) {
    case 0: allBlink(); break;    // Все мигают
    case 1: oneByOne(); break;    // По очереди
    case 2: byColor(); break;     // По цветам
    case 3: randomBlink(); break; // Случайные
    case 4: runningLight(); break;// Бегущий огонь
  }
  delay(100); // Небольшая задержка
}
 
// 1. Все мигают одновременно
void allBlink() {
  for(int i = 0; i < numLeds; i++) {
    digitalWrite(leds[i], HIGH);
  }
  delay(300);
  for(int i = 0; i < numLeds; i++) {
    digitalWrite(leds[i], LOW);
  }
  delay(300);
}
 
// 2. Поочередное мигание
void oneByOne() {
  static int current = 0;
  digitalWrite(leds[current], LOW);
  current = (current + 1) % numLeds;
  digitalWrite(leds[current], HIGH);
  delay(200);
}
 
// 3. По цветам
void byColor() {
  static int color = 0;
  allOff();
  digitalWrite(leds[color % 3], HIGH); 
  color = (color + 1) % 3;
  delay(400);
}
 
// 4. Случайные светодиоды
void randomBlink() {
  allOff();
  digitalWrite(leds[random(numLeds)], HIGH);
  delay(200);
}
 
// 5. Бегущий огонь
void runningLight() {
  static int pos = 0;
  static bool forward = true;
   
  allOff();
  digitalWrite(leds[pos], HIGH);
   
  if(forward) {
    pos++;
    if(pos >= numLeds-1) forward = false;
  } else {
    pos--;
    if(pos <= 0) forward = true;
  }
  delay(150);
}
 
// Вспомогательная функция - выключить все
void allOff() {
  for(int i = 0; i < numLeds; i++) {
    digitalWrite(leds[i], LOW);
  }
}

Процесс работы:

  1. Светодиоды подключены к цифровым пинам 2, 4, 6, 8, и 13.
  2. Потенциометр подключен к аналоговому пину A0 и используется для выбора режима работы гирлянды.
  3. В функции loop() значение с потенциометра считывается и преобразуется с помощью map() в число от 0 до 4 — это и есть номер текущего режима.
  4. В зависимости от режима, запускается одна из пяти функций, каждая из которых определяет поведение гирлянды.

Режим 0: Все мигают

  • Функция: allBlink()
  • Все светодиоды одновременно включаются на 300 мс, затем выключаются на 300 мс.
  • Эффект: классическое мигание гирлянды.

Режим 1: Поочерёдное мигание

  • Функция: oneByOne()
  • Светодиоды включаются по одному: текущий выключается, следующий загорается.
  • Эффект: «волна» из светодиодов, двигающаяся по очереди.

Режим 2: По цветам

  • Функция: byColor()
  • Включается один светодиод из первых трёх (подразумевается, что они разных цветов).
  • Светодиоды загораются по кругу: 0 → 1 → 2 → 0 → …
  • Эффект: смена «цветов» — если использовать RGB или разноцветные светодиоды.

Режим 3: Случайные вспышки

  • Функция: randomBlink()
  • Каждый раз случайным образом включается один светодиод, остальные выключаются.
  • Эффект: «мерцание» гирлянды в случайном порядке.

Режим 4: Бегущий огонь

  • Функция: runningLight()
  • Один светодиод включается и «бежит» по ряду туда-обратно.
  • Эффект: классический “бегущий огонь” — движущийся свет.

Функции-помощники

  • allOff() — выключает все светодиоды. Используется в большинстве режимов для сброса перед включением нужных.

Видео:

Применение потенциометра в разных проектах:

Учебные и хобби-проекты

  • Регулятор громкости — крутишь ручку — меняется громкость зуммера или динамика.
  • Управление яркостью LED — плавно меняет яркость свечения.

Умный дом

  • Ручной регулятор температуры — задаёшь нужную температуру, система сравнивает с датчиком и греет/охлаждает.
  • Сценарий освещения — настройка уровня света в зависимости от времени суток.
  • Контроль положения штор — крутишь — шторы поднимаются или опускаются.
  • Установка таймера — чем дальше крутишь, тем больше времени задаётся (например, на полив или включение света).

Автомобильные проекты

  • Регулятор подсветки приборной панели — плавное изменение яркости.
  • Имитация акселератора — в учебных автосимуляторах.
  • Управление RC-моделями — используется как контроллер поворота руля или газа.

Робототехника и мехатроника

  • Ручное управление сервоприводом — удобно при обучении.
  • Обратная связь по положению — когда потенциометр прикреплён к суставу робота.
  • Управление скоростью вращения мотора — потенциометр как газ в мини-роботе.
  • Настройка чувствительности датчиков — прямо на месте без перепрошивки.

Арт и инсталляции

  • Интерактивное освещение — зритель крутит ручку и меняет цвет/интенсивность света.
  • Музыкальные инструменты — создание аналоговых синтезаторов.

Научные и лабораторные приборы

  • Калибровка измерительных приборов — например, точная настройка шкалы.
  • Лабораторный источник питания — задание напряжения с помощью потенциометра.
  • Симуляция аналоговых сигналов — удобно при тестировании систем с переменным входом.