Posted in

Teema 3

Содержание страницы

Nupp

Skeem:

Kirjeldus:

See kood kontrollib kahe nupu (button1 ja button2) olekut ning vastavalt nende seisule juhib LEDi (ledPin) sisse või välja.

LED põleb ainult siis, kui vajutatud on täpselt üks nupp (kumb tahes)
Kui mõlemad nupud on vajutatud või mõlemad vabad, LED ei põle

Koodi kirjeldus:

Määratakse nuppude pinnid sisenditeks (INPUT)
LEDi pin määratakse väljundiks (OUTPUT)
Loetakse mõlema nupu olekud (digitalRead)
Kui kas nupp1 VÕI nupp2 on alla vajutatud (LOW), KUID MITTE mõlemad korraga, siis:
LED lülitatakse sisse (HIGH)
Kõigil muudel juhtudel:
LED lülitatakse välja (LOW)

Photoresistor

Skeem:

Kirjeldus:

See skeem kasutab valgussensorit LEDi heleduse reguleerimiseks vastavalt valgustugevusele.

Käsitsi režiim:
LEDi heledus muutub vastavalt valgustugevusele etteantud vahemikus

Automaatrežiim:
Süsteem kohandub automaatselt keskkonna valgustingimustele

Öölambi režiim:
LED põleb seda tugevamini, mida pimedam on (vaja muuta koodi)

Koodi kirjeldus:

  • LEDi pin määratakse väljundiks
  • Käivitub seriaalside monitoriga suhtlemiseks
  • Loetakse valgustugevus (analogRead)
  • Käsitsi häälestusfunktsioon (manualTune) teisendab väärtused
  • Või automaatne häälestus (autoTune)
  • LEDi heledus seatakse vastavalt teisendatud väärtusele
  • Väärtused kuvatakse seriaalmonitoris
  • 1 sekundi paus

Ülesanne

Töö kirjeldus:

Loomine liiklusfoor, mis automaatselt lülitub öö- ja päevarežiimile vastavalt valgustingimustele.

Kasutatud komponendid:

  • Arduino Uno
  • Liiklusfoori moodul
  • Fotoristor
  • Arendusplaat
  • 1 x 10kΩ takisti
  • Juhtmed

Töö protsess:

Programmi kirjutamisel on kaks peamise režiimi. Päevarežiim liiklusfoori tsükkel: põleb punane tuli 5 sekundit, seejärel lülitub lisaks kollane 1 sekundiks, misjärel põleb roheline tuli 3 sekundit. Rohelise tule lõpus vilgub see kolm korda 0,5 sekundi intervalliga, enne kui lülitub sisse kollane tuli 1 sekundiks. Öörežiim aktiveerub, kui valgustase langeb alla seatud piiri, ja kuvab ainult perioodiliselt vilkuvat kollast tuld 0,5 sekundi sisse ja 0,5 sekundi välja tsüklis.

Skeem:

Kood:

const int redPin = 4;       // Punane LED
const int yellowPin = 3;    // Kollane LED
const int greenPin = 2;     // Roheline LED
const int sensorPin = A0;   // Valgussensor

int lightThreshold = 200;   // Piir pimedus
bool isNightMode = false;

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(sensorPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  int lightLevel = analogRead(sensorPin);
  Serial.print("Valgustase: ");
  Serial.println(lightLevel);

  if (lightLevel > lightThreshold) {
    isNightMode = true;
    nightMode();
  } else {
    isNightMode = false;
    dayMode();
  }
}

void dayMode() {
  // Punane
  digitalWrite(redPin, HIGH);
  digitalWrite(yellowPin, LOW);
  digitalWrite(greenPin, LOW);
  delay(5000);
  
  // Punane + Kollane
  digitalWrite(yellowPin, HIGH);
  delay(1000);
  
  // Roheline
  digitalWrite(redPin, LOW);
  digitalWrite(yellowPin, LOW);
  digitalWrite(greenPin, HIGH);
  delay(5000);
  
  // Vilguv roheline
  for(int i = 0; i < 3; i++) {
    digitalWrite(greenPin, LOW);
    delay(500);
    digitalWrite(greenPin, HIGH);
    delay(500);
  }
  
  // Kollane
  digitalWrite(greenPin, LOW);
  digitalWrite(yellowPin, HIGH);
  delay(1000);
}

void nightMode() {
  digitalWrite(redPin, LOW);
  digitalWrite(greenPin, LOW);
  
  // Vilguv kollane
  digitalWrite(yellowPin, HIGH);
  delay(500);
  digitalWrite(yellowPin, LOW);
  delay(500);
}

Video:

Uued funktsioonid:

if (lightLevel > lightThreshold) – Kui valgustase on suurem kui läviväärtus, siis täidetakse esimene koodiblokk.

see on kõik, eelmised funktsioonid olnud Teemal 2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *