-LED dioodid ja RGB LED-

Katse 1.1 LED kasutamine

Töö kirjeldus:

Valgusdioodi vilgutamine, mis vilgutab plaadil olevat LED-i.

Komponendid:

Arudiono Uno 1tk
Arendusplaat1 tk
Valgusdiood 1tk
Takisti 330 Om
Juhtmed 3tk

Ühendamise skeem:

Programm:

void setup()
 
{
 
  // Функция pinMode() получает два значения, которые Вы передаете ей
 
  // в круглых скобках, сразу после имени функции. Первое это цифра - номер
 
  // порта, второе - слово INPUT(ВХОД) или OUTPUT(ВЫХОД).
 
  pinMode(13, OUTPUT);  
 
}
 
void loop()
 
{
 
  digitalWrite(13, HIGH);   // Включить светодиод
 
  delay(1000);              // Ожидание - 1 секунда  
 
  digitalWrite(13, LOW);    // Выключить светодиод  
 
  delay(1000);              // Ожидание - 1 секунда
 
}

Funktsioonid

pinMode(pin,reziim) //INPUT, OUTPUT
setup() — sätted
loop() — põhifunkstioonid, alati töötab
digitalWrite (pin,pinge) // HIGH, LOW
delay(aeg) //ms 1000 = 1s
analogWrite (pin,pinge) //0,255

Katse 1.2 RGB LED kasutamine

Töö kirjeldus:

Valgusdioodi vilgutamine, mis vilgutab plaadil olevat LED-i.

Komponendid:

Arudiono Uno
Arendusplaat
Valgusdiood (LED RGB)
Takisti
Juhtmed

Ühendamise skeem:

const int RED_PIN = 11;
 
const int GREEN_PIN = 9;
 
const int BLUE_PIN = 10;
 
int DISPLAY_TIME = 100;  // переменная контролирует, на сколько быстро выполняется цикл по смене цветов  в миллисекундах
 
void setup()
 
{
 
  pinMode(RED_PIN, OUTPUT);
 
  pinMode(GREEN_PIN, OUTPUT);
 
  pinMode(BLUE_PIN, OUTPUT);
 
}
 
void loop()
 
{
 
// Мы создали функцию с именем mainColors (), которая проходит через  все восемь цветов. Здесь мы только вызываем нашу функцию, Сам же код функции находится ниже.
 
mainColors();
 
// Эта функция включает и выключает отдельно каждый светодиод либо Вкл., либо Выкл. Если вы хотите получить больше чем восемь цветов, вам придется
 
// изменять еще и яркость каждого светодиода. Для этого можно воспользоваться
 
// функцию analogWrite(), - градация яркости от 0 до 255. Далее идет функция
 
// с именем showSpectrum (), которая плавно проследует через каждый из 8 цветов. ее,  код находится ниже.
 
  showSpectrum();
 
}
 
void mainColors()
 
{
 
// Выкл. – все светодиоды выключены
 
  digitalWrite(RED_PIN, LOW);
 
  digitalWrite(GREEN_PIN, LOW);
 
  digitalWrite(BLUE_PIN, LOW);
 
 delay(1000);
 
// Включаем КРАСНЫЙ – RED_PIN, HIGH.
 
  digitalWrite(RED_PIN, HIGH);
 
  digitalWrite(GREEN_PIN, LOW);
 
  digitalWrite(BLUE_PIN, LOW);
 
  delay(1000);
 
// Включаем ЗЕЛЕНЫЙ – GREEN_PIN, HIGH.
 
  digitalWrite(RED_PIN, LOW);
 
  digitalWrite(GREEN_PIN, HIGH);
 
  digitalWrite(BLUE_PIN, LOW);
 
  delay(1000);
 
// Включаем СИНИЙ – BLUE_PIN, HIGH.
 
  digitalWrite(RED_PIN, LOW);
 
  digitalWrite(GREEN_PIN, LOW);
 
  digitalWrite(BLUE_PIN, HIGH);
 
  delay(1000);
 
// Включаем ЖЕЛТЫЙ – RED и GREEN HIGH.
 
  digitalWrite(RED_PIN, HIGH);
 
  digitalWrite(GREEN_PIN, HIGH);
 
  digitalWrite(BLUE_PIN, LOW);
 
  delay(1000);
 
// БИРЮЗОВЫЙ – GREEN и BLUE
 
  digitalWrite(RED_PIN, LOW);
 
  digitalWrite(GREEN_PIN, HIGH);
 
  digitalWrite(BLUE_PIN, HIGH);
 
  delay(1000);
 
//РОЗОВЫЙ – RED и BLUE
 
  digitalWrite(RED_PIN, HIGH);
 
  digitalWrite(GREEN_PIN, LOW);
 
  digitalWrite(BLUE_PIN, HIGH);
 
  delay(1000);
 
//БЕЛЫЙ – все цвета HIGH (Вкл.)
 
  digitalWrite(RED_PIN, HIGH);
 
  digitalWrite(GREEN_PIN, HIGH);
 
  digitalWrite(BLUE_PIN, HIGH);
 
  delay(1000);
 
}
 
// Ниже приведен код еще двух функций:  ShowSpectrum () и showRGB().  ShowRGB () - выводит один цвет на светодиод.  ShowSpectrum () выводит все цвета по очереди – радуга. 
 
void showSpectrum()
 
{
 
  int x;
 
  for (x = 0; x < 768; x++)
 
  {
 
    showRGB(x);  // Вызов RGBspectrum() сновым значением x
 
    delay(10);   // Пауза 10 ms (1/100 секунды)
 
  }
 
}
 
// ShowRGB() 
 
// Базовые цифры: 
 
// 0 = чистый красный 
 
// 255 = чистый зеленый 
 
// 511 = чистый синий 
 
// 767 = чистый красный (опять же) 
 
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 if (color >= 512)             
 
  {
 
    redIntensity = (color - 512);         // красный выкл. К вкл.
 
    greenIntensity = 0;                   // зеленый всегда выкл.
 
    blueIntensity = 255 - (color - 512);  // голубой от вкл. К выкл.
  }
   
  analogWrite(RED_PIN, redIntensity);
 
  analogWrite(BLUE_PIN, blueIntensity);
 
  analogWrite(GREEN_PIN, greenIntensity);
  }

Ülesanne «Valgusfoor»

Töö kirjeldus:

Päevvalgusfoor: päevaajal töötab valgusfoor autole nagu peab: punane, kollane ja roheline ning inimesele: punane ja roheline. Värvi vahetamised: roheline — kollane 5s, kollane — punane 2.5s, punane — kollane 5s, ning kui auto valgusfoor põleb punasega — inimene võib läbikäia, sest inimese valgusfoor on roheline. Kui põleb kollane auto valgusfoor sel ajal on inimesel punane värv ja läbikäia ei saa.


Öövalgusfoor: öösel töötab auto valgusfoor autonoomsel reziimis, ehk vilgutab kollasega ja inimese valgusfoor ei tööta. Auto valgusfoor vilgutab iga 1s vahel ning kordab seda reziimi selles koodis 8 korda.

Komponendid:

Arudiono Uno 1tk
Arendusplaat 1tk
Valgusdiood 5tk
Takisti 5tk
Juhtmed 7 tk

Ühendamise skeem:

// C++ code
//Anname pin numbrid vastavalt plaatile 11-13 auto valgusfoor, inimese valgusfoor 8-9 
const int LIIK_RED_PIN = 12;
 
const int LIIK_GREEN_PIN = 13;
 
const int LIIK_YELLOW_PIN = 11;
 
const int INIM_RED_PIN = 9;
 
const int INIM_GREEN_PIN = 8;
 
void setup()
{
 //Loeb pin väljaks
  pinMode(LIIK_RED_PIN, OUTPUT);
 
  pinMode(LIIK_GREEN_PIN, OUTPUT);
 
  pinMode(LIIK_YELLOW_PIN, OUTPUT);
   
  pinMode(INIM_RED_PIN, OUTPUT);
 
  pinMode(INIM_GREEN_PIN, OUTPUT);
 
}
 
void loop()
{
 //täitab paevvalgusfoor ja kordab tsüklis oovalgusfoor, et see võiks mitu korda vilgutama   
paevvalgusfoor();
   
for(int i=0;i<8;i++)
{
oovalgusfoor();
}
   
}
void paevvalgusfoor()
{
  //горит зелённый для машин, красный для пешехода
  digitalWrite(LIIK_RED_PIN, LOW);
 
  digitalWrite(LIIK_YELLOW_PIN, LOW);
 
  digitalWrite(LIIK_GREEN_PIN, HIGH);
 
  digitalWrite(INIM_RED_PIN, HIGH);
 
  digitalWrite(INIM_GREEN_PIN, LOW);
   
  delay(5000);
   
  //переход на желтый для машин, красный для пешехода
   
  digitalWrite(LIIK_RED_PIN, LOW);
 
  digitalWrite(LIIK_YELLOW_PIN, HIGH);
 
  digitalWrite(LIIK_GREEN_PIN, LOW);
 
  digitalWrite(INIM_RED_PIN, HIGH);
 
  digitalWrite(INIM_GREEN_PIN, LOW);
   
  delay(2500);
   
  //переход на красный для машин, зеленый для пешехода
   
  digitalWrite(LIIK_RED_PIN, HIGH);
 
  digitalWrite(LIIK_YELLOW_PIN, LOW);
 
  digitalWrite(LIIK_GREEN_PIN, LOW);
 
  digitalWrite(INIM_RED_PIN, LOW);
 
  digitalWrite(INIM_GREEN_PIN, HIGH);
   
  delay(5000);
   
  //переход на желтый для машин, красный для пешехода
   
  digitalWrite(LIIK_RED_PIN, LOW);
 
  digitalWrite(LIIK_YELLOW_PIN, HIGH);
 
  digitalWrite(LIIK_GREEN_PIN, LOW);
 
  digitalWrite(INIM_RED_PIN, HIGH);
 
  digitalWrite(INIM_GREEN_PIN, LOW);
   
  delay(2500);
   
   
}
 
void oovalgusfoor()
{
//kollane värv põleb, kõik teised ei põle
  digitalWrite(LIIK_RED_PIN, LOW);
 
  digitalWrite(LIIK_YELLOW_PIN, HIGH);
 
  digitalWrite(LIIK_GREEN_PIN, LOW);
 
  digitalWrite(INIM_RED_PIN, LOW);
 
  digitalWrite(INIM_GREEN_PIN, LOW);
   
  delay(1000);
   
//kõik värvid ei põle
  digitalWrite(LIIK_RED_PIN, LOW);
 
  digitalWrite(LIIK_YELLOW_PIN, LOW);
 
  digitalWrite(LIIK_GREEN_PIN, LOW);
 
  digitalWrite(INIM_RED_PIN, LOW);
 
  digitalWrite(INIM_GREEN_PIN, LOW);
   
  delay(1000);
}  
  

https://www.tinkercad.com/things/7BJQwkEN8Mt/editel?returnTo=%2Fdashboard

const int LIIK_RED_PIN = 12; // autode punane tuli
const int LIIK_GREEN_PIN = 13; // autode roheline tuli
const int LIIK_YELLOW_PIN = 11; // autode kollane tuli

const int INIM_RED_PIN = 9; // jalakäijate punane tuli
const int INIM_GREEN_PIN = 8; // jalakäijate roheline tuli

Siin määratakse ära, millistele Arduino pin’idele on LED-tuled ühendatud.
LIIK_ viitab liiklusele (autod), INIM_ jalakäijatele.

void setup()
{
pinMode(LIIK_RED_PIN, OUTPUT);
pinMode(LIIK_GREEN_PIN, OUTPUT);
pinMode(LIIK_YELLOW_PIN, OUTPUT);

pinMode(INIM_RED_PIN, OUTPUT);
pinMode(INIM_GREEN_PIN, OUTPUT);
}

Funktsioon, mis käivitub korra programmi alguses.
Siin seadistatakse kõik pin’id väljunditeks, et neile saaks anda elektrisignaali (s.t. panna LEDid põlema või kustuma).

void loop()
{
paevvalgusfoor(); // käivitatakse päevarežiim

for(int i=0;i<8;i++)
{
oovalgusfoor(); // öörežiim: vilkuv kollane tuli
}
}

See on põhitsükkel, mida Arduino pidevalt kordab:

  1. Käivitatakse päevarežiimi funktsioon.
  2. Seejärel käivitatakse öörežiim 8 korda järjest (vilkuv kollane).

// ✅ paevvalgusfoor() funktsioon – päevarežiim

// 1. etapp: autod – roheline, jalakäijad – punane
digitalWrite(LIIK_GREEN_PIN, HIGH);
digitalWrite(INIM_RED_PIN, HIGH);
delay(5000); // 5 sekundit

// 2. etapp: autod – kollane, jalakäijad – punane
digitalWrite(LIIK_GREEN_PIN, LOW);
digitalWrite(LIIK_YELLOW_PIN, HIGH);
delay(2500); // 2.5 sekundit

// 3. etapp: autod – punane, jalakäijad – roheline
digitalWrite(LIIK_YELLOW_PIN, LOW);
digitalWrite(LIIK_RED_PIN, HIGH);
digitalWrite(INIM_RED_PIN, LOW);
digitalWrite(INIM_GREEN_PIN, HIGH);
delay(5000); // 5 sekundit

// 4. etapp: autod – kollane, jalakäijad – punane
digitalWrite(LIIK_RED_PIN, LOW);
digitalWrite(LIIK_YELLOW_PIN, HIGH);
digitalWrite(INIM_GREEN_PIN, LOW);
digitalWrite(INIM_RED_PIN, HIGH);
delay(2500); // 2.5 sekundit

// See funktsioon imiteerib päevast liiklusfoori tsüklit – sarnaselt päris liiklusfoorile.

// 🌙 oovalgusfoor() funktsioon – öörežiim

// ainult autode kollane tuli vilgub
digitalWrite(LIIK_YELLOW_PIN, HIGH);
delay(1000); // põleb 1 sekundi

digitalWrite(LIIK_YELLOW_PIN, LOW);
delay(1000); // kustub 1 sekundiks

// Seda funktsiooni kutsutakse loop() sees 8 korda.
// See tähendab, et kollane tuli vilgub 8 korda (iga kord 1 sekund põleb, 1 sekund ei põle).

Video:

https://drive.google.com/file/d/1Uwl-LoNCYEhIwse2QJJTLCcAYC3EdLBp/view?usp=sharing

ru_RUРусский