Teema 3: NUPP ja PHOTORESISTOR

Nupp

Nupp on elektrooniline komponent, mis võimaldab kasutajal seadet aktiveerida või deaktiveerida. See on tavaliselt väikese suurusega ja koosneb mehhaanilisest või elektroonilisest nupust, mis reageerib kasutaja vajutusele. Nuppe kasutatakse laialdaselt erinevates elektroonikaseadmetes, sealhulgas arvutites, mängukonsoolides, kaugjuhtimisseadmetes ja koduautomaatikas.

Nuppude tööpõhimõte põhineb tavaliselt kontaktide ühendamisel või katkemisel. Kui nuppu vajutada, luuakse elektriline ühendus, mis võimaldab voolu voolata ja seade aktiveerub. Nuppude kasutamine võimaldab lihtsat ja intuitiivset juhtimist, pakkudes kasutajatele võimalust kiiresti ja lihtsalt seadmeid kontrollida.

Fotoresistor

Fotoresistor (või fototakistus) on elektrooniline komponent, mille takistus muutub valguse intensiivsuse muutumisel. See on valmistatud pooljuhtmaterjalidest, mis reageerivad valgusele, muutes oma elektrilisi omadusi. Fotoresistore kasutatakse laialdaselt erinevates rakendustes, sealhulgas valgustuse juhtimises, päikesepaneelides, valgusandurites ja muudes elektroonikaseadmetes.

Fotoresistori põhimõte põhineb valguse fotonite imendumisel, mis kutsub esile elektronide vabastamise ja seeläbi takistuse vähenemise. Mida rohkem valgust fotoresistor saab, seda madalamaks muutub selle takistus. Seda omadust saab kasutada automaatsete valgustuslahenduste loomisel, kus seadmed reageerivad valgusmuutustele, näiteks lampide süttimise või kustumise korral sõltuvalt keskkonna valgustusest.

1. Näidis Nupp

Komponendid:

Skeem:

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

Komponendid:

Skeem:

Kood:

// C++ code
//
int swPin=4;
int ledPin=10;
int switchstate=0;
void setup()
{
pinMode (swPin, INPUT);
pinMode (ledPin, OUTPUT);
}

void loop()
{
switchstate=digitalRead(swPin);
if(switchstate==HIGH)
{
  digitalWrite(ledPin, HIGH);
}
else
{
  digitalWrite(ledPin, LOW)
}
}

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

Komponendid:

Skeem:

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

}

Ülesanne 3 Öölamp

Komponendid:

9 juhet, 5 ledit, 1 fotorsistor, 1 lületi, 6 resistor

Skeem:

Kood:

const int swPin = 4;
const int sensorPin = 0;
const int ledPin1 = 8;
const int ledPin2 = 9;
const int ledPin3 = 10;
const int ledPin4 = 11;
const int ledPin5 = 12;

int switchstate = LOW;

int lightLevel, high = 0;

void setup()

{

  pinMode(swPin, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);

  Serial.begin(9600); 

}

void loop(){

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



  lightLevel = analogRead(sensorPin); 

  lightLevel = map(lightLevel, 100, 1000, 0, 255);
  lightLevel = constrain(lightLevel, 0, 255); 

  analogWrite(ledPin1, lightLevel);
  analogWrite(ledPin2, lightLevel);
  analogWrite(ledPin3, lightLevel);
  analogWrite(ledPin4, lightLevel);
  analogWrite(ledPin5, lightLevel);

  Serial.print(lightLevel);

  Serial.println("");

  delay(100);

}
 else {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
    digitalWrite(ledPin5, LOW);

  }}

Uued teadmised pärast tööd

Konstandid:

  • swPin – Pin, millele on ühendatud lüliti (lüliti). Väärtus 4.
  • sensorPin – Pin, millele on ühendatud andur. Väärtus 0.
  • ledPin1 – Pin, millele on ühendatud esimene LED. Väärtus 8.
  • ledPin2 – Pin, millele on ühendatud teine LED. Väärtus 9.
  • ledPin3 – Pin, millele on ühendatud kolmas LED. Väärtus 10.
  • ledPin4 – Pin, millele on ühendatud neljas LED. Väärtus 11.
  • ledPin5 – Pin, millele on ühendatud viies LED. Väärtus 12.

Muudatused:

  • switchstate – Muutujad, kus hoitakse lüliti praegust olekut (LOW – madal tase, HIGH – kõrge tase).
  • lightLevel – Muutujad, kus hoitakse praegune valgustuse tase, loetud andurist.
  • high – Muutujad, mida koodis ei kasutata.

Funktsioonid:

  • setup() – Funktsioon, mida kutsutakse välja üks kord, kui Arduino programm käivitub. Selles funktsioonis initsialiseeritakse sisendi/väljundi pinnid ja seadistatakse port järjekorras (Serial).
  • loop() – Funktsioon, mis töötab tsükliliselt pärast setup() funktsiooni täitmist. Selles funktsioonis loetakse lüliti olek ja sõltuvalt sellest toimub kas LEDide heledus reguleerimine vastavalt valgustuse tasemele või nende väljalülitamine.

Fotorresistor on valgusele tundlik elektrooniline komponent. See muudab oma takistuse sõltuvalt valgustuse tasemest. Fotorresistore kasutatakse automaatseks valgustuse reguleerimiseks, valguse kontrollimiseks kaamerates, turvasüsteemides, valgustuse taseme mõõtmiseks ja energiasäästlikes süsteemides.

const int sensorPin = A0; // Подключение фоторезистора к аналоговому входу A0

void setup() {
  Serial.begin(9600); // Настройка порта последовательной связи для вывода данных
}

void loop() {
  int lightLevel = analogRead(sensorPin); // Считывание уровня освещенности с фоторезистор
  Serial.println(lightLevel); // Вывод уровня освещенности в монитор последовательного порта
  delay(1000); // Задержка в 1 секунду между измерениями
}

Lülitit kasutatakse elektriahela avamiseks või sulgemiseks, võimaldades kasutajal kontrollida elektrienergia voolu seadmetes või skeemides.

const int switchPin = 2; // Пин, к которому подключен переключатель
const int ledPin = 9; // Пин, к которому подключен светодиод

void setup() {
  pinMode(switchPin, INPUT); // Установить пин переключателя как вход
  pinMode(ledPin, OUTPUT); // Установить пин светодиода как выход
}

void loop() {
  digitalWrite(ledPin, digitalRead(switchPin) == HIGH ? HIGH : LOW);
}

Valgusdiood (Light Emitting Diode, LED) on pooljuhtseade, mis kiirgab valgust, kui selle kaudu voolab elektrivool ühes suunas. Seda kasutatakse erinevates seadmetes indikaatorina, valgustamiseks, andmete edastamiseks ja muudel eesmärkidel tänu oma efektiivsusele, vastupidavusele ja madalale energiatarbimisele.

const int switchPin = 2; // Пин, к которому подключен переключатель
const int ledPin = 9; // Пин, к которому подключен светодиод

void setup() {
  pinMode(switchPin, INPUT); // Установить пин переключателя как вход
  pinMode(ledPin, OUTPUT); // Установить пин светодиода как выход
}

void loop() {
  int switchState = digitalRead(switchPin); // Считать состояние переключателя
  digitalWrite(ledPin, switchState == HIGH ? HIGH : LOW);
}

Nupp – seade, mis avab või sulgeb elektriahela nupule vajutamisel.

const int buttonPin = 2; // Пин, к которому подключена кнопка
const int ledPin = 9; // Пин, к которому подключен светодиод

void setup() {
  pinMode(buttonPin, INPUT); // Установить пин кнопки как вход
  pinMode(ledPin, OUTPUT); // Установить пин светодиода как выход
}

void loop() {
  int buttonState = digitalRead(buttonPin); // Считать состояние кнопки

  // Если кнопка нажата (замкнута), включить светодиод
  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}