Ülesanne 2

Valguskett

Töökirjeldus

Valguskett, milles on mitu erinevat värvi töötab vähemalt 6 režiimis
(vilguvad kõik korraga, vilguvad ükshaaval, vilguvad värv haaval,Randomi funktsiooni kasutadel)

Kasutatud komponenid

Potensiomeeter(1tk)
Arduino UNO plaat (1tk)
Arendusplaat (1tk)
Juhtmed (14tk)
Takisti (9tk, 220kOm)
LED (9tk: 3 punast, 3 rohelist, 3 kollast)

Kasutamine

Valguskett töötab erinevates režiimides, potensiomeetri järgi (oleneb sinu valikust). Paigaldatud 6 režiimi:

1.red();2.blue();3.green();4.blink();5.blink();6.randomBlink()

Töökäigus kasutasin allolevaid funktsioone:

map();Random();

Kood (koos selgitusega)

int sensorPin =0; // potesiomeeter

int ledred1=13;
int ledblue1=12;
int ledgreen1=11;
int ledred2=10;
int ledblue2=9;
int ledgreen2=8;
int ledred3=7;
int ledblue3=6;
int ledgreen3=5; //

int red = 6;
int yellow = 5;
int green = 4;// muutujad nimetatud porti järgi

int sensorValue = 0;
int Value_new;

void setup() // saab kaks väärtust, mille edastame talle sulgudes kohe pärast funktsiooni nime. Esimene on number-pordi number, teine on sõna INPUT(sisend) või OUTPUT (väljund).
{
pinMode(ledred1, OUTPUT);
pinMode(ledblue1, OUTPUT);
pinMode(ledgreen1, OUTPUT);
pinMode(ledred2, OUTPUT);
pinMode(ledblue2, OUTPUT);
pinMode(ledgreen2, OUTPUT);
pinMode(ledred3, OUTPUT);
pinMode(ledblue3, OUTPUT);
pinMode(ledgreen3, OUTPUT);
}

void red()
{
digitalWrite(ledred1, HIGH);
digitalWrite(ledred2, HIGH);
digitalWrite(ledred3, HIGH);
delay(100);
digitalWrite(ledred1, LOW);
digitalWrite(ledred2, LOW);
digitalWrite(ledred3, LOW);
delay(100);
}

void blue()
{
digitalWrite(ledblue1, HIGH);
digitalWrite(ledblue2, HIGH);
digitalWrite(ledblue3, HIGH);
delay(200);
digitalWrite(ledblue1, LOW);
digitalWrite(ledblue2, LOW);
digitalWrite(ledblue3, LOW);
delay(200);
}

void green()
{
digitalWrite(ledgreen1, HIGH);
digitalWrite(ledgreen2, HIGH);
digitalWrite(ledgreen3, HIGH);
delay(100);
digitalWrite(ledgreen1, LOW);
digitalWrite(ledgreen2, LOW);
digitalWrite(ledgreen3, LOW);
delay(200);
}

//
void blink()
{
digitalWrite(ledred1, HIGH);
digitalWrite(ledred2, HIGH);
digitalWrite(ledred3, HIGH);
digitalWrite(ledblue1, HIGH);
digitalWrite(ledblue2, HIGH);
digitalWrite(ledblue3, HIGH);
digitalWrite(ledgreen1, HIGH);
digitalWrite(ledgreen2, HIGH);
digitalWrite(ledgreen3, HIGH);
delay(500);
digitalWrite(ledred1, LOW);
digitalWrite(ledred2, LOW);
digitalWrite(ledred3, LOW);
digitalWrite(ledblue1, LOW);
digitalWrite(ledblue2, LOW);
digitalWrite(ledblue3, LOW);
digitalWrite(ledgreen1, LOW);
digitalWrite(ledgreen2, LOW);
digitalWrite(ledgreen3, LOW);
delay(500);
}

void blink2()
{
digitalWrite(ledred1, HIGH);
delay(200);
digitalWrite(ledred2, HIGH);
delay(200);
digitalWrite(ledred3, HIGH);
delay(200);
digitalWrite(ledred1, LOW);
digitalWrite(ledblue1, HIGH);
delay(200);
digitalWrite(ledblue2, HIGH);
digitalWrite(ledred2, LOW);
delay(200);
digitalWrite(ledblue3, HIGH);
digitalWrite(ledred3, LOW);
delay(200);
digitalWrite(ledgreen1, HIGH);
digitalWrite(ledblue1, LOW);
delay(200);
digitalWrite(ledgreen2, HIGH);
digitalWrite(ledblue2, LOW);
delay(200);
digitalWrite(ledgreen3, HIGH);
digitalWrite(ledblue3, LOW);
delay(200);
digitalWrite(ledgreen1, LOW);
delay(200);
digitalWrite(ledgreen2, LOW);
delay(200);
digitalWrite(ledgreen3, LOW);
delay(300);
}

void randomBlink()
{
int randomLED = random(1, 10); / random funktsioon valib režiimi 1 st- 10 -ni
switch (randomLED) //
{
case 1:
digitalWrite(ledred1, HIGH);
delay(random(100, 500));
digitalWrite(ledred1, LOW);
break;
case 2:
digitalWrite(ledblue1, HIGH);
delay(random(100, 500));
digitalWrite(ledblue1, LOW);
break;
case 3:
digitalWrite(ledgreen1, HIGH);
delay(random(100, 500));
digitalWrite(ledgreen1, LOW);
break;
case 4:
digitalWrite(ledred2, HIGH);
delay(random(100, 500));
digitalWrite(ledred2, LOW);
break;
case 5:
digitalWrite(ledblue2, HIGH);
delay(random(100, 500));
digitalWrite(ledblue2, LOW);
break;
case 6:
digitalWrite(ledgreen2, HIGH);
delay(random(100, 500));
digitalWrite(ledgreen2, LOW);
break;
case 7:
digitalWrite(ledred3, HIGH);
delay(random(100, 500));
digitalWrite(ledred3, LOW);
break;
case 8:
digitalWrite(ledblue3, HIGH);
delay(random(100, 500));
digitalWrite(ledblue3, LOW);
break;
case 9:
digitalWrite(ledgreen3, HIGH);
delay(random(100, 500));
digitalWrite(ledgreen3, LOW);
break;
}
}
//

void loop()
{
Value_new = analogRead(sensorPin);

Value_new = map(Value_new,0,1023,1,6); // map() meetod aitab valida 1st-6ni, mis omapoolt käivitab funktsioone
if (Value_new==2)
{
red();
}
else if(Value_new==3)
{
blue();
}
else if(Value_new==4)
{
green();
}
else if(Value_new==5)
{
blink();
}
else if(Value_new==6)
{
blink2();
}
else
{
randomBlink();
}
}

Link

Konstruktsioon Tinkercad