Ülesanne 1

Valgusfoor

Töökirjeldus

Tava valgudfoor autodele ning jalakäijale. Töötab kahes režiimis päev -day() ja öö-night()

Päeval autodele töötab tavarežiimis (Punane; punane + kollane; roheline (vilkub 6 korda)

Öösel autodele töötab tavarežiimis (Kollane vilkub)

Päeval jalakäijale töötab tavarežiimis (Punane kui autodele on roheline ning vastupidi)

Öösel jalakäijale ei tööta/põle

Kasutatud komponenid
Arduino UNO plaat (1tk)
Arendusplaat (1tk)
Juhtmed (6tk)
Takisti (6tk, 220kOm)
LED (5tk: 2 punane, 2 roheline, 1 kollane)

Kasutamine

Kasutatakse valgusfoorina (sama pritsiipi järgi töötavad reaalsed valgusfoorid tänavatel.

Kood

int red = 6;
int yellow = 5;
int green = 4;

int ped_red = 3;
int ped_green = 2;

boolean led_on = HIGH;
  
void setup()
{
  pinMode(red, OUTPUT);
  pinMode(yellow, OUTPUT);
  pinMode(green, OUTPUT);
  
  pinMode(ped_red, OUTPUT);
  pinMode(ped_green, OUTPUT);
  
}

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

void day()
{
  digitalWrite(red, HIGH);
  digitalWrite(ped_green, HIGH);
  delay(2000);
  
  digitalWrite(yellow, HIGH);
  digitalWrite(ped_green, LOW);
  digitalWrite(ped_red, HIGH);
  delay(1000);
  
  digitalWrite(yellow, LOW);
  digitalWrite(red, LOW);
  digitalWrite(green, HIGH);
  digitalWrite(ped_green, LOW);
  delay(1000);
  
  for (int i=0; i<6; i++)
  {
    led_on = !led_on;
    digitalWrite(green, led_on);
    digitalWrite(ped_red, led_on);
    digitalWrite(yellow, led_on);
  }
  digitalWrite(green, LOW);
}

void night()
{
  for (int i=0; i<12; i++)
  {
  digitalWrite(green, LOW);
  digitalWrite(red, LOW);  
  digitalWrite(yellow, HIGH);
  digitalWrite(ped_green, LOW);
  digitalWrite(ped_red, LOW);
  led_on = !led_on;
  digitalWrite(yellow, led_on);
  delay(500);
  }
}

Selgitused koodi peale

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

int ped_red = 3;
int ped_green = 2; // muutujad nimetatud porti järgi (jalakäijatele)

boolean led_on = HIGH; // muutuja, kasutatakse koodi lühendamiseks, omab 2 positisooni kas “0” – LOW, või “1” -HIGH

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(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);

pinMode(ped_red, OUTPUT);
pinMode(ped_green, OUTPUT);

}

void loop() // lõpmatu funktsioon nii day() kui ka night() peale, töötavad järjest
{
day();
night();
}

void day() // päevane funktsioon, delay() – ootus (sekundites)
{
digitalWrite(red, HIGH);
digitalWrite(ped_green, HIGH);
delay(2000);

digitalWrite(yellow, HIGH);
digitalWrite(ped_green, LOW);
digitalWrite(ped_red, HIGH);
delay(1000);

digitalWrite(yellow, LOW);
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
digitalWrite(ped_green, LOW);
delay(1000);

for (int i=0; i<6; i++) // for tsükkel võimaldab lühendada koodi.
{
led_on = !led_on; // siin kasutatakse boolean väärtus ehk siis 1 muutub 0-ks tsükli läbimisel. 6 korda ning seejärel “for” lõppeb.
digitalWrite(green, led_on);
digitalWrite(ped_red, led_on);
digitalWrite(yellow, led_on);
}
digitalWrite(green, LOW);
}

Link

Konstruktsioon Tinkercad