Posted in

Katse 2

Peamine ülesanne:

Mulle ja minu partnerile Maksimile tehti ülesandeks luua valguskett

Asjad, mida me vajasime ja kasutasime:

Arendusplaat (Arendusplaat pakub kõike vajalikku mikrokontrolleriga mugavaks töötamiseks),

4x RGB-LED (LED-moodul, mis suudab toota peaaegu kõiki värve, kasutades neid kolme peamist lisavärvi: Punane, roheline ja sinine),

12x 220 (OM) resistorit (Takisti on passiivne kahetermiline elektrooniline komponent, mis rakendab elektritakistust vooluahela elemendina),

1x 10k(OM) potenrsiomeeter (Potentsiomeeter on käsitsi reguleeritav muutuvtakisti, millel on 3 klemmi),

Juhtmed ühenduste loomiseks (juht lihtsalt liigutab elektrit),

Makettplaat komponentide paigutamiseks (Makettplaat koosneb elektrit mitte juhtivast plaadist)

Ühendamise skeem:

Meie lampidel on erinevad režiimid ja need on määratud potentsoimeetri pöörlemisega.

Sisekood:

// 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
};

see osa kirjandus ütleb meile, et traat on ühendatud nendes kohtades. See on näha pildil.

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

paneb potentsiomeetri seaded ja režiimid

// REŽIIMID

// 1. Kõik LED-id valged
void allOn() {
  // Valged LED-id
  setColor(0, 255, 255, 153);
  setColor(1, 255, 255, 255);
  // Sinised LED-id
  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 toonid)
void redYellowAlternate() {
  // Esimene kombinatsioon: LED 1-2 punased, LED 3-4 kollased
  setColor(0, 255, 0, 0);
  setColor(1, 255, 255, 0);
  setColor(2, 255, 0, 0);
  setColor(3, 255, 255, 0);
  delay(500);
  
  // Teine kombinatsioon: LED 1-2 kollased, LED 3-4 punased
  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);
}

režiimid ja mida nad teevad

// Abifunktsioon LED-i värviseadistuseks
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);
}

lülitage kõik välja

Video:

Leave a Reply

Your email address will not be published. Required fields are marked *