Это изображение имеет пустой атрибут alt; его имя файла - image-16.png

int sensorPin = 0; // A0 on viik, millega on ühendatud potentsiomeeter
int ledPin = 13; // 13 viik – kus asub LED
int sensorValue = 0; // siia salvestame loetud väärtuse

void setup() {
pinMode(ledPin, OUTPUT); // LED – väljund
Serial. begin(9600; // käivitame seeriamonitori } void loop() { sensorValue = analoogRead(sensorPin; // loeme väärtuse A0-st (0 – 1023 digitalWrite(sensorPin)). begin(9600); // käivitame jadamonitori
}

void loop() {
sensorValue = analoogRead(sensorPin); // loeme väärtuse A0-st (0 – 1023)

digitalWrite(ledPin, HIGH); // süütame LED-i
delay(sensorValue); // ootame nii palju ms kui potentsiomeeter tagasi andis
digitalWrite(ledPin, LOW); // lülitame LED-i välja
delay(sensorValue); // ootame jälle

float voltage = sensorValue * (5. 0 / 1023.0); // teisendada volti
Serial.println(voltage); // väljund portmonitorile
}



🧠 Kuidas see töötab:

1. Potentsiomeeter töötab pingejagajana. Kui seda keerata, ilmub keskmisele viigule pinge vahemikus 0 ja 5 V.

2. Arduino loeb seda pinget analoogRead() käsuga viigult A0:

Tagastab väärtuse vahemikus 0 ja 1023 (10-bitine vahemik).

3. Seda väärtust kasutatakse LED-i sisse- ja väljalülitamise viivitusena millisekundites (delay(sensorValue)):

Mida suurem on väärtus → seda aeglasemalt LED vilgub

Mida väiksem on väärtus → seda kiiremini vilgub

4. Paralleelselt arvutab Arduino pinge voltides ja väljastab selle seeriamonitorile:

voltage = sensorValue * (5.0 / 1023.0)


💡 Tulemus:
Kasutaja saab LED-i vilkumise kiirust reguleerida potentsiomeetri nuppu keerates.

Reaalajas toimuvaid pinge muutusi saab jälgida arvutiekraanil.

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

Это изображение имеет пустой атрибут alt; его имя файла - image-3.png

int ledPins[] = {3, 5, 6, 9, 10};

int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);

void setup() {

 for (int i = 0; i < arrayLength; i++) {

   pinMode(ledPins[i], OUTPUT);

 }

}

void loop() {

 int potValue = analogRead(A0);

 int mode = map(potValue, 0, 1023, 0, 6); // теперь 0–6

 mode = constrain(mode, 0, 6);

 switch (mode) {

   case 0: allBlink(); break;

   case 1: sequenceBlink(); break;

   case 2: colorCycle(); break;

   case 3: candleEffect(); break;

   case 4: runningLight(); break;

   case 5: pulseEffect(); break;

   case 6: binaryCounter(); break;

 }

}

// Режим 0

void allBlink() {

 for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], HIGH);

 delay(300);

 for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);

 delay(300);

}

// Режим 1

void sequenceBlink() {

 for (int i = 0; i < arrayLength; i++) {

   digitalWrite(ledPins[i], HIGH);

   delay(150);

   digitalWrite(ledPins[i], LOW);

 }

}

// Режим 2

void colorCycle() {

 for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], HIGH);

 delay(200);

 for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);

 delay(200);

}

// Режим 3

void candleEffect() {

 for (int i = 0; i < arrayLength; i++) {

   if (random(0, 10) < 3) {

     digitalWrite(ledPins[i], HIGH);

     delay(random(10, 100));

     digitalWrite(ledPins[i], LOW);

     delay(random(10, 50));

   }

 }

}

// Режим 4

void runningLight() {

 static int pos = 0;

 for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);

 digitalWrite(ledPins[pos], HIGH);

 delay(150);

 pos = (pos + 1) % arrayLength;

}

// Режим 5: плавная пульсация

void pulseEffect() {

 for (int brightness = 0; brightness <= 255; brightness += 5) {

   for (int i = 0; i < arrayLength; i++) analogWrite(ledPins[i], brightness);

   delay(15);

 }

 for (int brightness = 255; brightness >= 0; brightness -= 5) {

   for (int i = 0; i < arrayLength; i++) analogWrite(ledPins[i], brightness);

   delay(15);

 }

}

// Режим 6: двоичный счёт

void binaryCounter() {

 static int count = 0;

 for (int i = 0; i < arrayLength; i++) {

   bool bitState = bitRead(count, i);

   digitalWrite(ledPins[i], bitState);

 }

 count = (count + 1) % 32; // 5 бит = 0–31

 delay(300);

}

Ühendusskeem:

  • LED-id on ühendatud Arduino digitaalsetele pin’idele: 3, 5, 6, 9, 10
  • Potentsiomeeter:
    • Keskmine jalg → A0
    • Äärmised jalad → GND ja 5V
  • Iga LED-i ees on takisti
  • GND on ühendatud Arduino GND-ga

Tööpõhimõte:

  1. Potentsiomeeter saadab analoogsignaali (0–1023)
  2. Väärtus teisendatakse režiimiks (vahemikus 0 kuni 6)
  3. Vastavalt režiimile käivitatakse üks seitsmest valgusefektist

Valgusefektide režiimid:

NrNimiKirjeldus
0allBlink()Kõik LED-id vilguvad korraga
1sequenceBlink()LED-id vilguvad järjestikku
2colorCycle()Kõik LED-id süttivad ja kustuvad koos kiiresti
3candleEffect()Küünlaleek – vilkuvad juhuslikult
4runningLight()“Jooksev tuli” – üks LED korraga
5pulseEffect()Sujuv heleduse kasv ja kahanemine
6binaryCounter()Dvaainsüsteemi loendus 0–31 LED-ide abil

Olulised Arduino käsud:

  • analogRead(A0) – loeb potentsiomeetri väärtuse
  • map() – teisendab väärtuse teise vahemikku
  • digitalWrite() – lülitab LED-i sisse/välja
  • analogWrite() – juhib LED-i heledust
  • bitRead() – loeb konkreetset bitti arvus