Tema 2: POTENTSIOMEETER \ Katse -Potentsiomeetri kasutamine

2. Katse -Potentsiomeetri kasutamine-

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.         
  
}

int sensorPin = 0; — Объявляется переменная sensorPin, которая будет использоваться для подключения датчика. В данном случае используется аналоговый пин 0. // Deklareeritakse muutuja sensorPin, mida kasutatakse anduri ühendamiseks. Antud juhul kasutatakse analoogpinni 0.

int ledPin = 13; — Здесь создается переменная ledPin для пина, к которому подключен светодиод. Это пин 13 // Siin luuakse muutuja ledPin, mis tähistab viigu, millega LED on ühendatud. See on viik 13

int sensorValue = 0; — Переменная sensorValue будет хранить значение, которое считывается с датчика. // Muutuja sensorValue salvestab andurilt loetud väärtuse.

void setup() — Функция setup() — выполняется один раз при старте программы. // käivitatakse üks kord programmi alguses.
{
pinMode(ledPin, OUTPUT); — 
настраивает пин 13 как выход для управления светодиодом. // konfigureerib viigu 13 väljundina LED-i juhtimiseks.

Serial.begin(9600) — инициализирует последовательный порт со скоростью 9600 бод для вывода данных в Serial Monitor. // Initsialiseerib 9600 baudi jadapordi andmete väljastamiseks seeriamonitorile.

void loop() { — Функция loop() выполняется бесконечно, после запуска программы. // Funktsiooni loop() täidetakse lõpmatult pärast programmi käivitamist.

sensorValue = analogRead(sensorPin); — Считывается значение с аналогового пина 0 (где подключен датчик). Значение будет в диапазоне от 0 до 1023. // Väärtus loetakse analoogviigult 0 (kuhu on ühendatud andur). Väärtus jääb vahemikku 0-1023.

digitalWrite(ledPin, HIGH); — Включается светодиод (пин 13). // LED (viik 13) lülitub sisse.

delay(sensorValue); — Задержка (пауза) равная значению sensorValue (в миллисекундах). Чем больше значение датчика, тем дольше будет задержка. // Viivitus (paus), mis on võrdne sensorValue väärtusega (millisekundites). Mida suurem on sensori väärtus, seda pikem on viivitus.

digitalWrite(ledPin, LOW); — Выключается светодиод. // LED on välja lülitatud.

float voltage = sensorValue * (5.0 / 1023.0); — Преобразуется значение с датчика (от 0 до 1023) в напряжение от 0 до 5 В. Это делается через умножение на коэффициент (5.0 / 1023.0). // Teisendab andurilt saadud väärtuse (0 kuni 1023) pingeks 0 kuni 5 V. Selleks korrutatakse see teguriga (5,0 / 1023,0).

Serial.println(voltage); — Выводится вычисленное напряжение на Serial Monitor. // Arvutatud pinge väljastatakse seeriamonitorile.

Ülesanne 2 Valguskett

Tinkercad

Minu kood

int potPin = A0; // Пин потенциометра
int ledPins[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};

void setup() {
  for (int i = 0; i < 10; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  int potValue = analogRead(potPin);
  int mode = 0;

  // Выбор режима в зависимости от положения потенциометра
  if (potValue < 205) {
    mode = 0; // Режим 1 — Переливание
  } else if (potValue < 410) {
    mode = 1; // Режим 2 — Градиент
  } else if (potValue < 615) {
    mode = 2; // Режим 3 — Бегущий огонь
  } else if (potValue < 820) {
    mode = 3; // Режим 4 — Пульсация
  } else {
    mode = 4; // Режим 5 — Дождь
  }

  if (mode == 0) {
    // Режим 1 — Переливание (R, G, B)
    for (int color = 0; color < 3; color++) {
      for (int i = 0; i < 10; i++) {
        if (i % 3 == color) {
          digitalWrite(ledPins[i], HIGH);
        } else {
          digitalWrite(ledPins[i], LOW);
        }
      }
      delay(300);
    }
  } else if (mode == 1) {
    // Режим 2 — Градиент (нарастание света)
    for (int i = 0; i < 10; i++) {
      digitalWrite(ledPins[i], HIGH);
      delay(150);
    }
    for (int i = 0; i < 10; i++) {
      digitalWrite(ledPins[i], LOW);
      delay(100);
    }
  } else if (mode == 2) {
    // Режим 3 — Бегущий огонь
    for (int i = 0; i < 10; i++) {
      // Сначала выключим все
      for (int j = 0; j < 10; j++) {
        digitalWrite(ledPins[j], LOW);
      }
      // Включим только один
      digitalWrite(ledPins[i], HIGH);
      delay(100);
    }
  } else if (mode == 3) {
    // Режим 4 — Пульсация
    for (int brightness = 0; brightness < 255; brightness++) {
      for (int i = 0; i < 10; i++) {
        analogWrite(ledPins[i], brightness);
      }
      delay(10);
    }
    for (int brightness = 255; brightness > 0; brightness--) {
      for (int i = 0; i < 10; i++) {
        analogWrite(ledPins[i], brightness);
      }
      delay(10);
    }
  } else if (mode == 4) {
    // Режим 5 — Дождь
    for (int i = 0; i < 10; i++) {
      digitalWrite(ledPins[i], HIGH);
      delay(100);
      digitalWrite(ledPins[i], LOW);
      delay(200);
    }
  }
}

Funktsioonid
setup() – Seadistab pinnid (LEDide ja potentsiomeetri jaoks) ning käivitab juhuslike arvude generaatori.

loop() – Programmi põhitsiirkond: loeb potentsiomeetri väärtust, määrab režiimi ja kutsub välja vastava kasutajafunktsiooni.

mode1() – Režiim 1: LEDide järjestikune süttimine ülevalt alla.

pinMode(pin, mode) – Seadistab pinni töörežiimi (sisse- või väljund).

digitalWrite(pin, value) – Seab määratud pinnile kõrge või madala loogika taseme.

delay(milliseconds) – Peatab programmi täitmise etteantud millisekundiks.

analogRead(pin) – Loeb antud pinnilt analoogsignaali väärtust.

constrain(x, a, b) – Piirab väärtuse x vahemikku a kuni b.

map(value, fromLow, fromHigh, toLow, toHigh) – Teisendab väärtuse ühest vahemikust teise.

randomSeed(seed) – Initsialiseerib juhuslike arvude generaatori sädeme.

random(min, max) – Tagastab juhusliku arvu antud väärtusvahemikus.

Kuidas programm töötab
Režiim 1: LEDide järjestikune süttimine ülalt alla.

Režiim 2: LEDide süttimine vastupidises järjekorras (alt üles).

Režiim 3: Esmalt süttivad LEDid, mille indeksid on paarisarvulised, seejärel need, mille indeksid on paaritud.

Režiim 4: Kõik LEDid süttivad samaaegselt, seejärel kustutatakse.

Režiim 5: Ühe LEDi juhuslik süttimine.

Mida ma kasutan

Arduino plaat (näiteks Arduino Uno).

9 LED-d, ühendatud järgmistele pinnadele:

  • Punane – pin 3
  • Hall – pin 2
  • Roheline – pin 11
  • Punane – pin 10
  • Roheline – pin 9
  • Kollane – pin 8
  • Roheline – pin 7
  • Kollane – pin 6
  • Roheline – pin 4

Kuidas elus kasutada

Õppeprojektid: See kood on suurepärane näide algajatele elektroonika ja mikrokontrollerite programmeerimisel. Õpilased saavad õppida, kuidas töötada pinnide, analoogandurite ja juhuslike arvude funktsioonidega ning mõista programmistruktuuri erinevate töörežiimidega.

Dekoratatiivne valgustus: Loo interaktiivne garland või valgusinstallatsioon pühadeks, pidude jaoks või lihtsalt ruumi kaunistamiseks. Potentsiomeeter võimaldab käsitsi valida erinevaid valgustuse stiile, luues mitmekesiseid valguseefekte.

Video