Katse 1

Funktsioonid:

pinMode(pin,reziim) //INPUT, OUTPUT

setup()-sätted

loop()-põhifunktsioon, alati töötab

digitalWrite(pin,pinge) /HIGH, LOW

delay(aeg)//ms 1000=1s

analogWrite(pin, pinge) //0…255

void setup()

{

// Функция pinMode() получает два значения, которые Вы передаете ей

// в круглых скобках, сразу после имени функции. Первое это цифра - номер

// порта, второе - слово INPUT(ВХОД) или OUTPUT(ВЫХОД).

pinMode(13, OUTPUT);

}

void loop()

{

digitalWrite(13, HIGH); // Включить светодиод

delay(1000); // Ожидание - 1 секунда

digitalWrite(13, LOW); // Выключить светодиод

delay(1000); // Ожидание - 1 секунда

} 

void loop()

{

// Мы создали функцию с именем mainColors (), которая проходит через все восемь цветов. Здесь мы только вызываем нашу функцию, Сам же код функции находится ниже.

mainColors();

// Эта функция включает и выключает отдельно каждый светодиод либо Вкл., либо Выкл. Если вы хотите получить больше чем восемь цветов, вам придется

// изменять еще и яркость каждого светодиода. Для этого можно воспользоваться

// функцию analogWrite(), - градация яркости от 0 до 255. Далее идет функция

// с именем showSpectrum (), которая плавно проследует через каждый из 8 цветов. ее, код находится ниже.

}

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

} 

    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 (), которая проходит через все восемь цветов. Здесь мы только вызываем нашу функцию, Сам же код функции находится ниже.

    // Эта функция включает и выключает отдельно каждый светодиод либо Вкл., либо Выкл. Если вы хотите получить больше чем восемь цветов, вам придется

    // изменять еще и яркость каждого светодиода. Для этого можно воспользоваться

    // функцию analogWrite(), - градация яркости от 0 до 255. Далее идет функция

    // с именем showSpectrum (), которая плавно проследует через каждый из 8 цветов. ее, код находится ниже.

    showSpectrum();
    }
    void showSpectrum()
    {
    int x;
    for (x = 0; x < 768; x++)
    {
    showRGB(x); // Вызов RGBspectrum() сновым значением x delay(15); // Пауза 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 1 Valgusfoor

Töö kirjeldus:

Päeva- ja öörežiimiga valgusfoor.

Komponendid:

Arudino Uno
Takisti (5)
Juhtmed (7)
5 värvilist LEDi (3 auto fooris ja 2 inimeste fooris)

Ühendamise skeem:

https://www.tinkercad.com/things/ibPNumlB0DO?sharecode=7Trvl3LO2yJRNQxyEO5Mv-P110FclcJynX_rqlR3Twc

Tööpõhimõte:

On kaks režiimi: päev ja öö. Päevarežiimis süttivad kolm tuld järjekorras: punane-kollane-roheline ja vastupidi. Kui autodele süttib punane, süttib inimestele roheline ja vastupidi. Enne kui rohelised foorid kustuvad, vilguvad need 3 korda. Öörežiimis vilgub ainult kollane 7 korda.

Kuidas seda kasutada saab?

Seda saab kasutada teedel liikluse reguleerimiseks.

Programm:

// C++ code
//
void setup()
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(4, OUTPUT);
  
}

void loop()
{
  day();
  night();
}


void day()
{
  for (int i=0;i<4;i++){
    digitalWrite(13, HIGH);
    delay(3000);
    digitalWrite(4, HIGH);
    delay(3000);
    for (int i=0;i<3;i++){
      digitalWrite(4, LOW);
      delay(500);
      digitalWrite(4, HIGH);
      delay(500);
    }
    digitalWrite(4, LOW);
    digitalWrite(13, LOW);
    delay(10);
    digitalWrite(12, HIGH);
    delay(3000);
    digitalWrite(12, LOW);
    delay(10);
    digitalWrite(8, HIGH);
    delay(2000);
    digitalWrite(7, HIGH);
    delay(2000);
    for (int i=0;i<3;i++){
      digitalWrite(8, LOW);
      delay(500);
      digitalWrite(8, HIGH);
      delay(500);
    }
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(12, HIGH);
    delay(2000);
    digitalWrite(12, LOW);
    
  }
}

void night()
{
 for (int i=0;i<7;i++){
    digitalWrite(12, HIGH);
    delay(500);
    digitalWrite(12, LOW);
    delay(500);
 }
}