Katsed 3

Nupp ja Photoresistor

3.1. Katse Nuppude ja Slideswitch’i kasutamise võimalus

Ühendamise skeem:

Kui vajutate ühte nuppudest, hakkab LED-tuli põlema; kui nupp eemaldatakse, siis LED-tuli lakkab töötamast.

Komponeendid:

—————————————Kood—————————————

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

  } 

  }

—————————————————————————————

2.- Näidis- Slideswitch’i kasutamine

Ühendamise skeem:

Ahel on akutoitel ja kasutab LED-lampide sisse- ja väljalülitamiseks liuglülitit.

Komponeendid:

7 – juhtmed 1 – LED tuli 1 – liuglüliti 1 – takisti 1 – aku

—————————————————————————————

Опыт с фоторезистором/Fototakisti abil valguse mõõtmine, valgustundlik LED

Ühendamise skeem:

Led pirn reageerib valgusele; mida eredam on valgus, seda tuhmimalt pirn paistab; maksimaalse valguse korral see ei tööta; kui valgust pole, põleb pirn eredalt.

Komponeendid:

—————————————Kood—————————————

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);

}

—————————————————————————————

Öölamp

Töötab akuga, liuglüliti lülitab öövalguse sisse ja välja.Kui öövalgus on sisse lülitatud, siis see reageerib valgusele ehk siis öövalgus helendab öösel hästi ja päeval vaevu helendab või ei tööta üldse. Öötuli helendab korraga kahes värvitoonis – sinine ja punane, kuid kokkupanekul kasutati punast ja rohelist.

Komponeendid:

17 – juhtmed
4 – punased LED-tuled
4 – rohelised jäätuled
1 – aku
9 – takistid
1 – valgusandur
1 – slideswetch

Töö protsess:

Öövalgusti töötab siis, kui ruum on pime või valgust vähe, kui hommik saabub kui läheb heledaks, tuvastab andur valguse ja peatab öövalguse töö või helendab väga nõrgalt.Kui öövalgustit pole vaja, saab see lülitada liuglüliti abil täielikult välja.

Programm:

// C++ code

const int swPin = 4;
const int redled1 = 12;
const int blueled1 = 11;
const int redled2 = 10;
const int blueled2 = 9;
const int redled3 = 8;
const int blueled3 = 7;
const int redled4 = 6;
const int blueled4 = 5;

int switchstate = LOW;
int lightLevel;

void setup() {
pinMode(swPin, INPUT);
pinMode(redled1, OUTPUT);
pinMode(blueled1, OUTPUT);
pinMode(redled2, OUTPUT);
pinMode(blueled2, OUTPUT);
pinMode(redled3, OUTPUT);
pinMode(blueled3, OUTPUT);
pinMode(redled4, OUTPUT);
pinMode(blueled4, OUTPUT);
Serial.begin(9600); // Настройка сериального монитора
}

void loop() {
switchstate = digitalRead(swPin);
if (switchstate == HIGH) {

lightLevel = analogRead(A0); // читаем аналоговое значение
Serial.println(lightLevel);
lightLevel = map(lightLevel, 100, 1000, 0, 255); // маппируем его в диапазон (0-255)
lightLevel = constrain(lightLevel, 0, 255); // ограничиваем его в диапазоне (0-255)
analogWrite(redled1, lightLevel);
analogWrite(blueled1, lightLevel);
analogWrite(redled2, lightLevel);
analogWrite(blueled2, lightLevel);
analogWrite(redled3, lightLevel);
analogWrite(blueled3, lightLevel);
analogWrite(redled4, lightLevel);
analogWrite(blueled4, lightLevel);

Serial.print(lightLevel); // выводим результаты в сериальный монитор
Serial.println(“”);
delay(1000);
} else {
digitalWrite(redled1, LOW);
digitalWrite(blueled1, LOW);
digitalWrite(redled2, LOW);
digitalWrite(blueled2, LOW);
digitalWrite(redled3, LOW);
digitalWrite(blueled3, LOW);
digitalWrite(redled4, LOW);
digitalWrite(blueled4, LOW);
}}

Video:

Rakendus Valguskett:

Arvan, et meie mirshis saab sarnast tüüpi shema kasutada autode esitulede jaoks; esituled süttivad ise kohe, kui pimedaks läheb, tänu sellele ei pea juhid tulede sisselülitamisele aega raiskama.

Uued funktsioonid:

const int swPin = 4Объявляет константу swPin и присваивает ей значение 4, — (пин, к которому подключен переключатель.)
const int redled1 = 12;const int blueled1 = 11;и т.д. — Объявляют константы для пинов, к которым подключены светодиоды
int switchstate = LOW;будет хранить текущее состояние переключателя. Изначально установлено в LOW.
int lightLevel;будет хранить уровень освещенности.
digitalRead(pin)Считывает состояние пина (HIGH или LOW).
analogRead(pin)Считывает аналоговое значение с аналогового пина
Serial.begin(speed)Инициализирует последовательную связь с указанной скоростью в битах в секунду (speed).
Serial.println(data)Отправляет данные в последовательный монитор с новой строкой в конце.
map(value, fromLow, fromHigh, toLow, toHigh) Преобразует значение из одного диапазона в другой.
constrain(value, min, max)Ограничивает значение в заданном диапазоне.
analogWrite(pin, value)Устанавливает аналоговое значение на указанном пине (0-255).