|et

Tema 1. Led ja RGB

Katse 1

void setup()

{

  // pinMode() määrab töörežim

  pinMode(13, OUTPUT);   // 13-pini number, INPUT/OUTPUT(Sisend/Väljund).

}

void loop()

{

  digitalWrite(13, HIGH);   // Lülita sisse

  delay(1000);              // Ootab 1 sek  

  digitalWrite(13, LOW);    // Lülita välja

  delay(1000);              // Ootab 1 sek

}

На русском:

Этот код написан для платформы Arduino. Он использует два основных блока: setup() и loop(). Давайте разберём его по частям:

  1. void setup():
    • Эта функция выполняется один раз при старте программы.
    • Внутри этой функции используется pinMode(13, OUTPUT);, которая настраивает пин номер 13 как выход (OUTPUT). Это значит, что через этот пин можно подавать напряжение (включать или выключать светодиод или другое устройство).
  2. void loop():
    • Это основная часть программы, которая будет выполняться постоянно (в цикле).
    • Внутри цикла используются две команды digitalWrite() и delay():
      • digitalWrite(13, HIGH); — включает пин 13 (подаёт на него напряжение, светодиод загорится).
      • delay(1000); — заставляет программу «заснуть» на 1000 миллисекунд (или 1 секунду).
      • digitalWrite(13, LOW); — выключает пин 13 (убирает напряжение, светодиод погаснет).
      • delay(1000); — снова заставляет программу ждать 1 секунду.
    • Таким образом, программа будет включать и выключать пин 13 (например, светодиод) с интервалом в 1 секунду.

Eestikeelne selgitus:

See kood on kirjutatud Arduino jaoks. Kood sisaldab kahte peamist plokki: setup() ja loop(). Vaatame seda samm-sammult:

  1. void setup():
    • See funktsioon käivitub ainult üks kord programmi alguses.
    • Selles funktsioonis on kasutatud pinMode(13, OUTPUT);, mis määrab pin 13 töörežiimiks väljundi (OUTPUT). See tähendab, et selle piniga saab juhtida seadet (näiteks lülitada sisse või välja LED-i).
  2. void loop():
    • See on programmi põhiosa, mis töötab pidevas tsüklis.
    • Tsüklis on kaks käsku digitalWrite() ja delay():
      • digitalWrite(13, HIGH); — lülitab pin 13 sisse (paneb sellele pinget, LED süttib).
      • delay(1000); — paneb programmi «magama» 1000 millisekundiks (1 sekund).
      • digitalWrite(13, LOW); — lülitab pin 13 välja (eemaldab pinget, LED kustub).
      • delay(1000); — paneb programmi jälle ootama 1 sekundi.
    • Nii töötab programm pidevalt, lülitades pin 13 (näiteks LED) sisse ja välja 1 sekundi vahedega.

Katse 2

const int RED_PIN = 11;

const int GREEN_PIN = 9;

const int BLUE_PIN = 10;

int DISPLAY_TIME = 100;  // värvimuutuse kiirus

void setup()

{

  pinMode(RED_PIN, OUTPUT);

  pinMode(GREEN_PIN, OUTPUT);

  pinMode(BLUE_PIN, OUTPUT);

}

void loop()

{

mainColors();

showSpectrum();

}

void mainColors()

{

// Kõik LEDid on välja lülitatud

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, LOW);

 delay(1000);

//Põleb punane

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Põleb roheline

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Sinine on sisse lülitatud

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

// Kollane.

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Lilla

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

//Roosa

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

//Valge ehk kõik on sisse lülitatud

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

}

// Vikerkaar. 

void showSpectrum()

{

  int x;

  for (x = 0; x < 768; x++)

  {

    showRGB(x);  // 

    delay(10);   // paus 0,001 sek

  }

}

// ShowRGB()  põhivärvid: 

// 0 = punane 

// 255 = roheline

// 511 = sinine

// 767 = jälle punane 

void showRGB(int color)

{

  int redIntensity;

  int greenIntensity;

  int blueIntensity;

  if (color <= 255)                

  {

    redIntensity = 255 - color;    // lülitakse välja punane

    greenIntensity = color;        // lülitakse sisse roheline

    blueIntensity = 0;             // sinine on välja lülitatud

  }

  else if (color <= 511)          

  {

    redIntensity = 0;                     // punane on välja lülitatud

    greenIntensity = 255 - (color - 256); 

    blueIntensity = (color - 256);        

  }

  else if (color >= 512)             

  {

    redIntensity = (color - 512);        

    greenIntensity = 0;                  

    blueIntensity = 255 - (color - 512);  

  }

  analogWrite(RED_PIN, redIntensity); // punase LED´i sujuv ümberlülitamine

  analogWrite(BLUE_PIN, blueIntensity);

  analogWrite(GREEN_PIN, greenIntensity);

}

На русском:

Этот код предназначен для управления RGB-светодиодом на платформе Arduino. Он создает плавные переходы цветов и отображает спектр цветов. Давайте разберём его по частям:

1. Объявление переменных и констант:

const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;
int DISPLAY_TIME = 100;  // скорость изменения цвета

  • RED_PIN, GREEN_PIN, BLUE_PIN — это пины, к которым подключены компоненты RGB-светодиода.
  • DISPLAY_TIME — это переменная для настройки времени между изменениями цвета.

2. Функция setup():

void setup() {
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
}

  • Функция setup() выполняется один раз при старте программы.
  • Внутри этой функции устанавливаются пины 11, 9 и 10 как выходные (OUTPUT) для управления светодиодами.

3. Основной цикл loop():

void loop() {
  mainColors();
  showSpectrum();
}

В цикле loop() вызываются две функции:

  • mainColors() — управляет основными цветами (красный, зелёный, синий и т. д.).
  • showSpectrum() — показывает спектр цветов, плавно переходя от одного к другому.

4. Функция mainColors():

void mainColors() {
  // Всё выключено
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(1000);

  // Показ цветов по очереди
  digitalWrite(RED_PIN, HIGH);
  delay(1000);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  delay(1000);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, HIGH);
  delay(1000);
  digitalWrite(BLUE_PIN, LOW);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, HIGH);
  delay(1000);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, HIGH);
  delay(1000);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(BLUE_PIN, HIGH);
  delay(1000);
}

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

5. Функция showSpectrum():

void showSpectrum() {
  int x;
  for (x = 0; x < 768; x++) {
    showRGB(x);  
    delay(10);   
  }
}

  • Функция showSpectrum() запускает цикл от 0 до 767, при этом на каждом шаге вызывается функция showRGB(x) для отображения различных цветов спектра.

6. Функция showRGB():

void showRGB(int color) {
  int redIntensity;
  int greenIntensity;
  int blueIntensity;

  if (color <= 255) {
    redIntensity = 255 - color;
    greenIntensity = color;
    blueIntensity = 0;
  }
  else if (color <= 511) {
    redIntensity = 0;
    greenIntensity = 255 - (color - 256);
    blueIntensity = (color - 256);
  }
  else {
    redIntensity = (color - 512);
    greenIntensity = 0;
    blueIntensity = 255 - (color - 512);
  }

  analogWrite(RED_PIN, redIntensity);
  analogWrite(BLUE_PIN, blueIntensity);
  analogWrite(GREEN_PIN, greenIntensity);
}

  • Эта функция управляет интенсивностью каждого из цветов (красного, зелёного и синего) в зависимости от текущего значения color.
  • Для значения color от 0 до 255 активируется красный, от 256 до 511 — зелёный, от 512 до 767 — синий.
  • Функция плавно изменяет цвета, создавая эффект перехода через спектр.

Eestikeelne selgitus:

See kood on mõeldud Arduino jaoks RGB LED-i juhtimiseks. Kood loob sujuvad värvimuutused ja kuvab vikerkaare värve. Vaatame koodi samm-sammult:

1. Muudatavate väärtuste ja konstandite määramine:

const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;
int DISPLAY_TIME = 100;  // värvimuutuse kiirus

  • RED_PIN, GREEN_PIN, BLUE_PIN — pin’id, millele on ühendatud RGB LED-i komponendid.
  • DISPLAY_TIME — muutuv väärtus, mis määrab värvimuutuse kiirus.

2. Funktsioon setup():

void setup() {
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
}

  • Funktsioon setup() käivitub ainult üks kord programmi alguses.
  • Selles funktsioonis määratakse pin’id 11, 9 ja 10 väljunditeks (OUTPUT), et juhtida LED-e.

3. Põhiloop loop():

void loop() {
  mainColors();
  showSpectrum();
}

  • Tsüklis loop() kutsutakse välja kaks funktsiooni:
    • mainColors() — haldab peamisi värve (punane, roheline, sinine jne).
    • showSpectrum() — kuvab vikerkaare värve, liikudes sujuvalt ühelt värvilt teisele.

4. Funktsioon mainColors():

void mainColors() {
  // Kõik LED-id on välja lülitatud
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(1000);

  // Kuvatakse värve järjestikku
  digitalWrite(RED_PIN, HIGH);
  delay(1000);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  delay(1000);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, HIGH);
  delay(1000);
  digitalWrite(BLUE_PIN, LOW);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, HIGH);
  delay(1000);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, HIGH);
  delay(1000);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(BLUE_PIN, HIGH);
  delay(1000);
}

  • See funktsioon lülitab kõik LED-id välja üheks sekundiks ja seejärel lülitab iga värvi järjestikku üheks sekundiks.

5. Funktsioon showSpectrum():

void showSpectrum() {
  int x;
  for (x = 0; x < 768; x++) {
    showRGB(x);  
    delay(10);   
  }
}

  • Funktsioon showSpectrum() käivitab tsükli, mis liigub vahemikus 0 kuni 767, ja igal sammul kutsub välja funktsiooni showRGB(x), et kuvada erinevaid värve vikerkaare spektris.

6. Funktsioon showRGB():

void showRGB(int color) {
  int redIntensity;
  int greenIntensity;
  int blueIntensity;

  if (color <= 255) {
    redIntensity = 255 - color;
    greenIntensity = color;
    blueIntensity = 0;
  }
  else if (color <= 511) {
    redIntensity = 0;
    greenIntensity = 255 - (color - 256);
    blueIntensity = (color - 256);
  }
  else {
    redIntensity = (color - 512);
    greenIntensity = 0;
    blueIntensity = 255 - (color - 512);
  }

  analogWrite(RED_PIN, redIntensity);
  analogWrite(BLUE_PIN, blueIntensity);
  analogWrite(GREEN_PIN, greenIntensity);
}


See funktsioon määrab iga värvi intensiivsuse vastavalt color väärtusele ja muudab iga LED-i heleduse, et kuvada sujuvat värvimuutust.

VIDEO

https://drive.google.com/file/d/1vHCpdw5MGY4oW3DpqyvdQQS3v0h7Tuva/view?usp=sharing