Posted in

Teema 2

Содержание страницы

Potentsiomeetr

Komponendid:

  • LED
  • Potentsiomeeter
  • Maketeerimislaud
  • Arendusplaat

Tööpõhimõte:

  • Potentsiomeetri pööramisel muutub takistus, mis mõjutab analoogsisendi pinget (0–5V).
  • Arduino loeb potentsiomeetri väärtust (0–1023) ja kasutab seda LED vilkumise viivituse määramiseks.
  • Serial Monitoris kuvatakse potentsiomeetri tegelik pinge (0–5V).

Ülesanne

Töö kirjeldus:

Luua Arduino valgusketi süsteem nelja RGB-LED-iga, mida saab potentsiomeetri abil juhtida. Süsteemis on kuus erinevat valgusrežiimi, näiteks staatilisi värve, laineefekte ja dünaamilisi vilkumisi.

Kasutatud komponendid:

  • Arendusplaat
  • 4x RGB-LED
  • 12x 220Ω takistit
  • 1x 10kΩ potentsiomeeter
  • Juhtmed ühenduste loomiseks
  • Makettplaat komponentide paigutamiseks

Töö protsess:

Juhtimissüsteem:

  • Kaardistab väärtuse, et valida 5 valgustusrežiimi vahel (1-5)
  • Igal RGB LED-l on 3 kanalit (punane, roheline, sinine)
  • PWM-signaalid kontrollivad värvi intensiivsust (0-255 kanali kohta)
  • Digitaalsed pins lülitavad LED-id sisse/välja mustrite kaupa

Valgustusrežiimid:

  • All White — täielik heledus kõigis värvikanalites
  • Wave Effect — rohelised/sinised värvid lainetavad läbi LEDide
  • Color Cycle — sujuvad üleminekud põhivärvide vahel
  • Candle Effect — juhuslik punane ja kollane värelus
  • Disco Mode — kiire juhuslik värvimuutus

Skeem:

Kood:

// RGB-LED-ide ühendused
const int RGB_PINS[4][3] = {
  {13, 5, 9},   // LED 1: R, G, B
  {12, 4, 8},   // LED 2
  {11, 3, 7},   // LED 3
  {10, 2, 6}    // LED 4
};

const int POT_PIN = A0;  // Potentsiomeeter

void setup() {
  // kõik LED-ide pinnid
  for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 3; j++) {
      pinMode(RGB_PINS[i][j], OUTPUT);
    }
  }
  Serial.begin(9600);
}

void loop() {
  int potValue = analogRead(POT_PIN);
  int mode = map(potValue, 0, 1023, 1, 5);
  mode = constrain(mode, 1, 5);

  Serial.print("Reziim: ");
  Serial.println(mode);

  switch (mode) {
    case 1: allOn(); break;
    case 2: waveEffect(); break;
    case 3: colorCycle(); break;
    case 4: redYellowAlternate(); break;
    case 5: discoEffect(); break;
  }
}

// REŽIIMID

// 1. 2 Valge 2 Yellow LED-id
void allOn() {
  // Valge LED
  setColor(0, 255, 255, 153);
  // Kollane LED
  setColor(1, 255, 255, 255);

  setColor(2, 255, 255, 255);
  setColor(3, 255, 255, 153);
  delay(500);
}

// 2. Laineefekt
void waveEffect() {
  for (int i = 0; i < 4; i++) {
    setColor(i, 0, 255, 0); // Roheline
    delay(100);
    setColor(i, 0, 0, 0);
  }
  for (int i = 3; i >= 0; i--) {
    setColor(i, 0, 0, 255); // Sinine
    delay(100);
    setColor(i, 0, 0, 0);
  }
}

// 3. Värvide tsükkel
void colorCycle() {
  // Punane
  for (int i = 0; i < 4; i++) setColor(i, 255, 0, 0);
  delay(500);
  // Roheline
  for (int i = 0; i < 4; i++) setColor(i, 0, 255, 0);
  delay(500);
  // Sinine
  for (int i = 0; i < 4; i++) setColor(i, 0, 0, 255);
  delay(500);
  // Kollane
  for (int i = 0; i < 4; i++) setColor(i, 255, 255, 0);
  delay(500);
}

// 4. Küünlaefekt (kollased ja punased toonid)
void redYellowAlternate() {
  setColor(0, 255, 0, 0);
  setColor(1, 255, 255, 0);
  setColor(2, 255, 0, 0);
  setColor(3, 255, 255, 0);
  delay(500);

  setColor(0, 255, 255, 0);
  setColor(1, 255, 0, 0);
  setColor(2, 255, 255, 0);
  setColor(3, 255, 0, 0);
  delay(500);
}

// 5. Diskoefekt
void discoEffect() {
  for (int i = 0; i < 4; i++) {
    setColor(i, random(0, 255), random(0, 255), random(0, 255));
  }
  delay(100);
}

// Abifunktsioon
void setColor(int led, int r, int g, int b) {
  analogWrite(RGB_PINS[led][0], r);
  analogWrite(RGB_PINS[led][1], g);
  analogWrite(RGB_PINS[led][2], b);
}

Video:

Uued funktsioonid:

Serial.begin() – alustab sarjaliidestuse, et näha Arduino saadetud andmeid output’is.
analogRead() – loeb potentsiomeetri väärtuse.
map() – teisendab potentsiomeetri väärtuse uude vahemikku.
constrain(mode, 1, 5) – piirab väärtust, et see jääks ainult vahemikku 1 kuni 5.
Serial.println(); – näitavad Serial Monitoris režiimi numbrit.
switch (mode) – kontrollib, milline režiim on valitud, ja käivitab vastava ploki.
case X: – kui režiim on X, tehakse midagi konkreetset.
setColor() – kohandatud funktsioon LED-i värvi määramiseks.
analogWrite() – saadab PWM signaali, mis lubab LED-il tumedamalt või heledamalt põleda.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *