Experiment 2

2.1 Vilgub

Töö kirjeldus:

LED ei tööta ja nuppu vajutamisel valgus põleb (var A)
LED töötab ja nuppu vajutamisel valgus tuhmub (var B)

Komponendid:

Arduino Uno
Arendusplaat
LED valgusdiood
Potentsiomeetr 1tk 250 Om
Takisti 1 tk 330 Om
Juhtmed 7 tk

Ühendamise skeem:

int sensorPin = 0;    	  
int ledPin = 13;                           			  
int sensorValue = 0;  					  
void setup()
{       
  pinMode(ledPin, OUTPUT);  
  Serial.begin(9600);
}
void loop() {          					   
  sensorValue = analogRead(sensorPin); //   loeb analoog sisendi väärtust ja saadab tagasi täisarvu vahemikus 0 kuni 1023. See tähendab 10 bitilist täpsust (2^10 = 1024).		  
  digitalWrite(ledPin, HIGH);         
  delay(sensorValue);                 
  digitalWrite(ledPin, LOW);              
  delay(sensorValue);  
  float voltage = sensorValue * (5.0 / 1023.0); // konverteerime väärtuse (0 - 1023)  ja tagastab (0 - 5V):
  Serial.println(voltage);   // Saadud tulemused kirjutame Serial Monitori.         
}

Foto:

LED tuhmub ja põleb kiiresti või aeglasemalt vastavalt potentsioometri sageduse kiirust

Funktsioonid:

Serial.begin(9600)
sensorValue=map(sensorValue,0,1023,0,255);
analogRead(sensorPin);
int ledPins[];

2.2 Pidevalt põleb, muutub intensiivsus

Programm:

int sensorPin = 0;
int ledPin = 11;
int sensorValue = 0;
void setup()
{
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  sensorValue = analogRead(sensorPin);
  sensorValue = map(sensorValue,0,1023,0,255);
  
  analogWrite(ledPin, sensorValue);
  Serial.println(sensorValue);
}

Ülesanne Valguskett

Töö kirjeldus:

Looma valgusketti potentsiomeetri kasutamisel.

Potentsiomeetri funktsioon selles olukorras toimib järgmiselt: LED-ide jaoks on määratud muutujad, potentsiomeetri määramine. Funktsioonid: põleb kõik, põleb pool ja siis teine, üleminekud, vilgub, vilgub mitu läbi funktsiooni random valides põleb või ei põle.

default ehk algus režiim on blinkmode.

blinkmode: random valib valiku: põleb või ei põle ning see on mõeldud kõikidele värvile, et nad vahetasid (põlemisel või mitte põlemisel) ja iga valiku all on delay selleks näha selle käsu täitmisel

uleminek: 1 LED põleb siis järgmine põleb, aga sel ajal, kui põleb järgmine, eelmine tuhmub, delay 50ms selleks, et liikumine või vahetamine töötas mingi pausiga

polebtuhmub: kõik LED põlevad, iga 1s pärast LED-id tuhmuvad

poleb: kõik LED-id põlevad

pool: eespoolt 3 LED-id põlevad, tagaltpoolt 3 LED-id ei põle, 1s vahetamisele, et tagaltpoolt 3 LED-id põleksid ja eespoolt 3 LED-id ei põle

Komponendid:

Arduino Uno
Arendusplaat
LED valgusdiood 6 tk
Potentsiomeetr 1tk 250 Om
Takisti 6 tk 220 Om
Juhtmed 17 tk

Ühendamise skeem:

https://www.tinkercad.com/things/inKX30nraCY-valguskett/editel?sharecode=EiUS7fvu5Rc6zMRbrdcRxVQUSOkJWanJoLQz5emrYco

Programm:

int RED_LED_PIN = 13;
int GREEN_LED_PIN = 12;
int ORANGE_LED_PIN = 11;
int BLUE_LED_PIN = 10;
int YELLOW_LED_PIN = 9;
int WHITE_LED_PIN = 8;
int sensorPin = A0; 
int sensorValue = 0;
int ledPins[] = {RED_LED_PIN, GREEN_LED_PIN, ORANGE_LED_PIN, BLUE_LED_PIN, YELLOW_LED_PIN, WHITE_LED_PIN};
int ledCount = 6;
int mode = 1; // default blinkmode
void setup()
{
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(GREEN_LED_PIN, OUTPUT);
  pinMode(ORANGE_LED_PIN, OUTPUT);
  pinMode(BLUE_LED_PIN, OUTPUT);
  pinMode(YELLOW_LED_PIN, OUTPUT);
  pinMode(WHITE_LED_PIN, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  // loeme potentsiomeetrilt anduri väärtust
  sensorValue = analogRead(sensorPin);
  // kaardistada anduri väärtus vahemikku 0 kuni 5
  ledCount = map(sensorValue, 0, 1023, 0, 6);
  // printime anduri väärtus ja režiim jadamonitorile
  Serial.print("Sensor Value: ");
  Serial.print(sensorValue);
  Serial.print(" - Mode: ");
  Serial.println(mode);
  // delay, et serial monitor uuendaks andmed
  delay(50);
  // režiimid potentsiomeetri väärtuse põhjal
  if (sensorValue < 250) 
  {
    mode = 1; // blinkmode
  } 
  else if (sensorValue < 450)
  {
    mode = 2; // uleminek
  }
  else if (sensorValue <700)
  {
    mode = 3; // polebtuhmub
  }
  else if (sensorValue <950)
  {
    mode = 5; //pool
  }
  else
  {
    mode = 4; //poleb
  }
  // käivitame valitud režiim
  if (mode == 1) 
  {
    blinkmode();
  } 
  else if (mode == 2) 
  {
    uleminek();
  }
  else if (mode == 3)
  {
    polebtuhmub();
  }
  else if (mode == 4)
  {
    poleb();
  }
  else
  {
    pool();
  }
  
}
void blinkmode()
{
  // random võtab 1 või 2 variant ja siis täitab selle käsu
  //LED-id vilguvad juhuslikult
  //randomi if valiku all on LED-i erilised värvid ja käsk
  //täitab erilised värvide muutmine (põleb või tuhmub)
  if (random(0, 2)) {
    digitalWrite(RED_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(RED_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(GREEN_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(GREEN_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(ORANGE_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(ORANGE_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(BLUE_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(BLUE_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(YELLOW_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(YELLOW_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(WHITE_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(WHITE_LED_PIN, LOW);
    delay(random(50, 500));
  }
}
void uleminek() {
  // LEDs ON (1 LED põleb algusest)
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], HIGH);
  }
  delay(50);
  // LEDs OFF (1 LED tuhmub algusest)
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], LOW);
  }
}
void polebtuhmub()
{
  //LEDs ON (põleb)
  digitalWrite(RED_LED_PIN, HIGH);
  digitalWrite(GREEN_LED_PIN, HIGH);
  digitalWrite(ORANGE_LED_PIN, HIGH);
  digitalWrite(BLUE_LED_PIN, HIGH);
  digitalWrite(YELLOW_LED_PIN, HIGH);
  digitalWrite(WHITE_LED_PIN, HIGH);
  
  delay(1000); //ootan 1s
  
  //LEDs OFF (tuhmub)
  digitalWrite(RED_LED_PIN, LOW);
  digitalWrite(GREEN_LED_PIN, LOW);
  digitalWrite(ORANGE_LED_PIN, LOW);
  digitalWrite(BLUE_LED_PIN, LOW);
  digitalWrite(YELLOW_LED_PIN, LOW);
  digitalWrite(WHITE_LED_PIN, LOW);
  
  delay(1000); //ootan 1s
}
void poleb()
{
  //LEDs ON (põleb)
  digitalWrite(RED_LED_PIN, HIGH);
  digitalWrite(GREEN_LED_PIN, HIGH);
  digitalWrite(ORANGE_LED_PIN, HIGH);
  digitalWrite(BLUE_LED_PIN, HIGH);
  digitalWrite(YELLOW_LED_PIN, HIGH);
  digitalWrite(WHITE_LED_PIN, HIGH);
}
void pool()
{
  //LEDs ON (põleb, x3 esimesed ja x3 viimased ei põle)
  digitalWrite(RED_LED_PIN, HIGH);
  digitalWrite(GREEN_LED_PIN, HIGH);
  digitalWrite(ORANGE_LED_PIN, HIGH);
  digitalWrite(BLUE_LED_PIN, LOW);
  digitalWrite(YELLOW_LED_PIN, LOW);
  digitalWrite(WHITE_LED_PIN, LOW);
  
  delay(1000); //ootan 1s
  
  //LEDs ON (põleb, x3 viimased ja x3 esimesed ei põle)
  digitalWrite(RED_LED_PIN, LOW);
  digitalWrite(GREEN_LED_PIN, LOW);
  digitalWrite(ORANGE_LED_PIN, LOW);
  digitalWrite(BLUE_LED_PIN, HIGH);
  digitalWrite(YELLOW_LED_PIN, HIGH);
  digitalWrite(WHITE_LED_PIN, HIGH);
  
  delay(1000); //ootan 1s
}

Video:

https://drive.google.com/drive/folders/1QIIOFeZJeWjZsU1fwYtt2furDs4VmduP?usp=sharing

Kus võib seda kasutada:

Laternad – Põleb ja ei põle
Pliit – tule suurendamine või vähendamine
Elektriahi – temperatuuri vahetaime
Valgus – valguse põlemise suurendamine või vähendamine
Generaator – võimsuse suurendamine või vähendamine