Nupp ja Photoresistor

3. Nuppude ja Slideswitch’i kasutamise võimalus

Nupp

Kasutatud komponeendid

  • Adruino Uno R3 – 1
  • Breadboard Small – 1
  • Nupp – 2
  • LED – 1 (punane)
  • Takisti – 3
  • Juhe – 7

Ühendamise skeem (www.tinkercad.com)

https://www.tinkercad.com/things/hB9FqjlQMeT-nupp?sharecode=IZNLYeF1_eCGyIqkYR3r05DqsWwWj3HAuLGUWaQqfTY

Programm/kood kommentaridega

const int button1Pin = 2;  //viik kunu on ühebdatud nupp1

const int button2Pin = 3; //viik kuhu on ühendatud nupp2

const int ledPin =  13;   

void setup()

{

  pinMode(button1Pin, INPUT); //algväärtuse nupu viigu sisendiks

  pinMode(button2Pin, INPUT); //algväärtuse nupu viigu sisendiks

  pinMode(ledPin, OUTPUT);   //algväärtuse LED viigu väljundiks
 

}

void loop()

{

  int button1State, button2State;  //nupu oleku muutujad

  button1State = digitalRead(button1Pin);// salvestame muutujasse nupu hetke väärtuse(HIGH või LOW)

  button2State = digitalRead(button2Pin);

  if (((button1State == LOW) || (button2State == LOW))   // kui nupu on alla vajutatud

      && !

      ((button1State == LOW) && (button2State == LOW))) // kui nupude on alla vajutatud

  {

    digitalWrite(ledPin, HIGH);  // lülitame LED sisse

  }

  else                          

  {

    digitalWrite(ledPin, LOW);  // lülitame LED välja

  }    	

  }

3.2. Photoresistor

Kasutatud komponeendid

  • Adruino Uno R3 – 1
  • Breadboard Small – 1
  • Photoresistor – 1
  • LED – 1 (punane)
  • Takisti – 2
  • Juhe – 6

Ühendamise skeem (www.tinkercad.com)

https://www.tinkercad.com/things/cZFFkPjKiOF-32-katse?sharecode=fsJ9m9SoHcy0T_yPq8-89EQ1cGAM3P6yxIFzeQ2gqN0

Programm/kood kommentaridega

const int sensorPin = 0;

const int ledPin = 9;

int lightLevel, high = 0, low = 1023; 

void setup()

{

  pinMode(ledPin, OUTPUT);

  Serial.begin(9600); // //Serial monitori seadistamine

}

void loop()

{

  // AnalogRead() kasutab väärtused vahemikus 0 (0 вольт) и 1023 (5 вольт).

  // AnalogWrite(),  kasutatakse, et LEDi sujuvalt sisselülitada 0(ei põle) kuni 255(põleb maksimalselt).
  lightLevel = analogRead(sensorPin); //loeme mõõdetud analoogväärtuse

  // Map() teisendab sisendi väärtused ühest vahemikust teisse. Näiteks, "from" 0-1023 "to" 0-255.

  // Constrain() saed muutujale kindlad piirväärtused.

  // Näiteks:  kui constrain() kohtub arvudega 1024, 1025, 1026.., siis ta teisendab need 1023, 1023, 1023..). Kui arvud vähem kui 0, siis teisendab need 0:. 

  // lightLevel = constrain(lightLevel, 0, 255);

  manualTune();  //

  //autoTune();  //

  analogWrite(ledPin, lightLevel);

  // Выражение выше, будет изменять яркость светодиода вместе с уровнем освещенности. Чтобы сделать наоборот, заменить в analogWrite(ledPin, lightLevel) "lightLevel" на "255-lightLevel". Теперь у нас получился ночник!

  Serial.print(lightLevel);     // prindime tulemused Serial Monitori (вывод данных с фоторезистора (0-1023))

  Serial.println("");          

  delay(1000);                

}

void manualTune()

{

  lightLevel = map(lightLevel, 300, 800, 0, 255); // kaardistame selle analoogväljundi vahemikku (будет от 300 темно, до 800 (светло)). 

  lightLevel = constrain(lightLevel, 0, 255);

} 

void autoTune()

{

   if (lightLevel < low)  

  {                      

    low = lightLevel;   

  }

  if (lightLevel > high)

  {

    high = lightLevel;

  }

  lightLevel = map(lightLevel, low+10, high-30, 0, 255);

  lightLevel = constrain(lightLevel, 0, 255);

}

Valgusfoor öö ja päeva režiimides

Töö kirjeldus

Koodi kirjutamine, virtuaalse skeemi loomine koodi testimiseks ja valmis tulemus päris skeemil.

Kasutatud komponeendid

  • Adruino Uno R3 – 1
  • Breadboard Small – 1
  • Photoresistor – 1
  • Potentsiomeeter – 1
  • LED – 3 (punane, kollane, roheline)
  • Takisti – 1
  • Juhe – 12

Töö protsess

Kood laaditakse Arduino plaadile. See loeb potentsiomeetri asendit ja vastavalt selle väärtusele aktiveerib ühe neljast valgusefektist.

Potentsiomeetri pööramine muudab LED-ide töörežiimi:

  1. Käivitatakse autode režiim, kus punane, kollane ja roheline LED süttivad vaheldumisi.
  2. Käivitatakse jalakäijate režiim, kus punane ja roheline LED süttivad vaheldumisi.
  3. Aktiveeritakse fototakisti, mis lülitab kas päevarežiimi (punane, kollane ja roheline LED süttivad vaheldumisi) või öörežiimi (ainult kollane vilgub).
  4. Kõik LED-id on välja lülitatud.

Ühendamise skeem (www.tinkercad.com)

https://www.tinkercad.com/things/6nq28F2rJHh-valgusfoor-32?sharecode=-xZhE819YYowlUPiIx8VLrL34jQMwY9eGV4IctVORzc

Programm/kood kommentaridega

const int RED = 11;
const int YELLOW = 12;
const int GREEN = 13;
const int sensorPin = A0;
const int potPin = A1;

int lightLevel = 0;
int sensorValue = 0;

void setup() {
  pinMode(RED, OUTPUT);
  pinMode(YELLOW, OUTPUT);
  pinMode(GREEN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(potPin);
  int mode = map(sensorValue, 0, 1023, 0, 4);

  Serial.print("Mode: ");
  Serial.println(mode);

  switch (mode) {
    case 0:
      car();
      break;
    case 1:
      people();
      break;
    case 2:
      day_night();
      break;
    case 3:
      off();
      break;
    default:
      off();
      break;
  }
}

void car() {
  digitalWrite(RED, HIGH);
  digitalWrite(YELLOW, LOW);
  digitalWrite(GREEN, LOW);
  delay(3000);

  digitalWrite(YELLOW, HIGH);
  delay(300);

  digitalWrite(RED, LOW);
  delay(1000);

  digitalWrite(GREEN, HIGH);
  delay(300);

  digitalWrite(YELLOW, LOW);
  delay(3000);

  digitalWrite(YELLOW, HIGH);
  delay(300);

  digitalWrite(GREEN, LOW);
  delay(1000);

  digitalWrite(RED, HIGH);
  delay(300);

  digitalWrite(YELLOW, LOW);
  delay(3000);
}

void people() {
  digitalWrite(RED, HIGH);
  digitalWrite(YELLOW, LOW);
  digitalWrite(GREEN, LOW);
  delay(2500);

  digitalWrite(RED, LOW);
  digitalWrite(GREEN, HIGH);
  delay(2500);
}

void day_night() {
  lightLevel = analogRead(sensorPin);
  Serial.print("Light level: ");
  Serial.println(lightLevel);

  if (lightLevel > 500) {
    digitalWrite(RED, LOW);
    digitalWrite(YELLOW, HIGH);
    digitalWrite(GREEN, LOW);
    delay(1000);
    
    digitalWrite(YELLOW, LOW);
    delay(1000);
  } 
  else {
  digitalWrite(RED, HIGH);
  digitalWrite(YELLOW, LOW);
  digitalWrite(GREEN, LOW);
  delay(3000);

  digitalWrite(YELLOW, HIGH);
  delay(300);

  digitalWrite(RED, LOW);
  delay(1000);

  digitalWrite(GREEN, HIGH);
  delay(300);

  digitalWrite(YELLOW, LOW);
  delay(3000);

  digitalWrite(YELLOW, HIGH);
  delay(300);

  digitalWrite(GREEN, LOW);
  delay(1000);

  digitalWrite(RED, HIGH);
  delay(300);

  digitalWrite(YELLOW, LOW);
  delay(3000);
  }
}

void off() {
  digitalWrite(RED, LOW);
  digitalWrite(YELLOW, LOW);
  digitalWrite(GREEN, LOW);
  delay(500);
}

Video

https://drive.google.com/file/d/12EJd6HYKMDQxF7aZ3lmd35XQnyng-KL7/view?usp=sharing

Kasutamisvõimalused tavaelus.

Mängudes ja simulatsioonides