Töö kirjeldus:

Valguskett töö kolme režiimiga.

Kasutatud komponenid:

Arduino UNO plaat (1tk)
Arendusplaat (1tk)
Juhtmed (11tk)
Takisti(6tk)
LED (6tk: 2 punane, 2 roheline, 2 sinine)

Töö protsess:

Ühendage dioodid, takisti ja juhtmed plaadile. Valgusahel töötab järgmiselt.
Valguslint ruumi või objekti kaunistamiseks, millel on 4 režiimi erinevate tulede koosmõjuga. Iga režiim sisaldab erinevat LED-värinat.

Valguskett-ide rakendamine:

Valgusketi kohaldamine. Ruumide valgustamiseks ja esemete kaunistamiseks. kasutatakse välistingimustes, äriettevõtetes, kodus.

Skeem:

Programm:

int sensorPin = 0;
  
int one_redLED = 13;
int one_greenLED = 12;
int one_blueLED = 11;
  
int two_redLED = 10;
int two_greenLED = 9;
int two_blueLED = 5;
  
int thirdredLED = 5;
  
int oneLEDsArray[] = { one_redLED, one_greenLED, one_blueLED };
int twoLEDsArray[] = { two_redLED, two_greenLED, two_blueLED };
int allLEDsArray[] = {one_redLED, one_greenLED, one_blueLED, two_redLED, two_greenLED, two_blueLED, two_blueLED, thirdredLED};
  
int sensorValue = 0;
  
void blinkLED(int LED, int custDelay){
  digitalWrite(LED, HIGH);
  delay(custDelay);
  digitalWrite(LED, LOW);
}
  
void turnFourColorsLEDs(int oneLED, int twoLED, int thirdLED, int fourthLED, bool Mode){
  digitalWrite(oneLED, Mode);
  digitalWrite(twoLED, Mode);
  digitalWrite(thirdLED, Mode);
  digitalWrite(fourthLED, Mode);
}
  
void turnTwoColorsLEDs(int oneLED, int twoLED, bool Mode){
  digitalWrite(oneLED, Mode);
  digitalWrite(twoLED, Mode);
}
  
void turnAllLEDs(bool Mode){
  for (int i = 0; i < sizeof(oneLEDsArray) / sizeof(oneLEDsArray[0]);i++){
    digitalWrite(oneLEDsArray[i], Mode);
    digitalWrite(twoLEDsArray[i], Mode);
  }
  digitalWrite(thirdredLED, Mode);
}
  
void oneMode(){
  int customDelay = 500;
    
  turnAllLEDs(HIGH);
  delay(customDelay);
    
  turnAllLEDs(LOW);
  delay(customDelay);
}
  
void twoMode(){
  int customDelay = 500;
    
  turnTwoColorsLEDs(one_redLED, two_redLED, HIGH);
  digitalWrite(thirdredLED, HIGH);
  digitalWrite(thirdredLED, HIGH);
  delay(customDelay);
    
  turnAllLEDs(LOW);
  turnTwoColorsLEDs(one_greenLED, two_greenLED, HIGH);
  turnTwoColorsLEDs(one_blueLED, two_blueLED, HIGH);
  delay(customDelay);
    
  turnAllLEDs(LOW);
}
  
void thirdMode(){
  int customDelay = 1000;
    
  turnTwoColorsLEDs(one_redLED, two_redLED, HIGH);
  digitalWrite(thirdredLED, HIGH);
  delay(customDelay);
    
  turnTwoColorsLEDs(one_redLED, two_redLED, LOW);
  digitalWrite(thirdredLED, LOW);
  turnTwoColorsLEDs(one_greenLED, two_greenLED, HIGH);
  delay(customDelay);
    
  turnTwoColorsLEDs(one_greenLED, two_greenLED, LOW);
  delay(customDelay);
    
  turnTwoColorsLEDs(one_blueLED, two_blueLED, HIGH);
  delay(customDelay);
    
  turnAllLEDs(LOW);
}
  
void fourthMode(){
  int customDelay = 400;
  for (int i = 0; i < 9; i++){
    blinkLED(allLEDsArray[i], customDelay);
  }
  for (int i = 9; i > 1; i--){
    blinkLED(allLEDsArray[i], customDelay);
  }
}
  
void fifthMode(){
  int customDelay = 400;
    
  for (int i = 0; i < 9; i++){
    int randomLED = random(1, 9);
    digitalWrite(allLEDsArray[randomLED], HIGH);
    delay(customDelay);
  }
  turnAllLEDs(HIGH);
  delay(customDelay);
    
  turnAllLEDs(LOW);
}
  
void (*funcModes[])() = { oneMode, twoMode, thirdMode, fourthMode, fifthMode};
  
  
void setup()
{
  Serial.begin(9600);
    
  pinMode(one_redLED, OUTPUT);
  pinMode(one_greenLED, OUTPUT);
  pinMode(one_blueLED, OUTPUT);
    
  pinMode(two_redLED, OUTPUT);
  pinMode(two_greenLED, OUTPUT);
  pinMode(two_blueLED, OUTPUT);
    
  pinMode(thirdredLED, OUTPUT);
}
void loop()
{
  sensorValue = analogRead(sensorPin);
  sensorValue = map(sensorValue, 0,1023,1,6);
  // float voltage = sensorValue * (5.0 / 1023.0);
  for (int i = 0; i < sizeof(funcModes) / sizeof(funcModes[0]); i++){
    if (sensorValue == i + 1){
      funcModes[i]();
    }
  }
  
}

Video:

Uued funktsioonid:

void blinkLED(int LED, int custDelay): See funktsioon vilgutab LED-i antud viivitusega (custDelay) LED-i sisse- ja väljalülitamise vahel.

void turnFourColorsLEDs(int oneLED, int twoLED, int thirdLED, int fourthLED, bool Mode): See funktsioon juhib nelja LED-i, seades nende oleku (Mode) HIGH või LOW.

void turnTwoColorsLEDs(int oneLED, int twoLED, bool Mode): See funktsioon juhib kahte LED-i, seades nende oleku (Mode) HIGH või LOW.

void turnAllLEDs(bool Mode): See funktsioon kontrollib kõiki valgusdioode, seades nende oleku (Mode) HIGH või LOW.

void oneMode(), void twoMode(), void thirdMode(), void fourthMode(), void fifthMode(): Need funktsioonid esindavad valgusdioodide erinevaid töörežiime.