Каталог 3

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

Komponendid:
2 Nuppu
1 LED
2 10k OOM takisti
1 330 oom takisti
7 traati

Skeem:

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

  }    	

  }

Näidis- Slideswitch’i kasutamine

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.2. Katse Photoresistor

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:

Milleks meie kasutame igapäevaelus nuppe, patareid ja fotoresistoreid?

Nuppe, patareisid ja fotoresistoreid kasutatakse mitmesugustes rakendustes, sealhulgas elektroonikas, kodumasinates, autotööstuses, tööstuslikes protsessides, meditsiinitehnoloogias ja mujal. Nuppe kasutatakse juhtimiseks, patareisid toite andmiseks ja fotoresistoreid valgustugevuse tuvastamiseks või mõõtmiseks.

Skeem:

Kood:

int RED_PIN = 13;
int BLUE_PIN = 8;
int GREEN_PIN = 12;

int photo = 0;  
int lightLevel = 0;

int sensorPin = 1;
int sensorValue = 0;

void setup()
{
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(photo, OUTPUT);
pinMode(sensorPin, OUTPUT);

Serial.begin(9600);
}

void loop()
{
lightLevel = analogRead(photo);
lightLevel = map(lightLevel, 300, 900, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
  
Serial.print(lightLevel);
Serial.println("");

sensorValue=analogRead(sensorPin);
sensorValue=map(sensorValue, 0, 1023, 0, 3);
sensorValue=constrain(sensorValue, 0, 3);
Serial.println(sensorValue);
if (sensorValue == 1 && lightLevel > 80)
{
	digitalWrite(RED_PIN, HIGH);
	digitalWrite(GREEN_PIN, LOW);
	digitalWrite(BLUE_PIN, LOW);
	delay(1000);
}

else if(sensorValue == 1 && lightLevel < 255 )
{
	digitalWrite(RED_PIN, LOW);
	digitalWrite(GREEN_PIN, LOW);
	digitalWrite(BLUE_PIN, LOW);
	delay(1000);
}
else if (sensorValue == 2 && lightLevel > 80)
{
	digitalWrite(RED_PIN, LOW);
	digitalWrite(GREEN_PIN, LOW);
	digitalWrite(BLUE_PIN, HIGH);
	delay(1000);
}
  
else if(sensorValue == 2 && lightLevel < 255 )
{
	digitalWrite(RED_PIN, LOW);
	digitalWrite(GREEN_PIN, LOW);
	digitalWrite(BLUE_PIN, LOW);
	delay(1000);
}
else if (sensorValue == 3 && lightLevel > 80)
{
	digitalWrite(GREEN_PIN, HIGH);
	digitalWrite(RED_PIN, LOW);
	digitalWrite(BLUE_PIN, LOW);
	delay(1000);
}
  
else if(sensorValue == 3 && lightLevel < 255 )
{
	digitalWrite(RED_PIN, LOW);
	digitalWrite(GREEN_PIN, LOW);
	digitalWrite(BLUE_PIN, LOW);
	delay(1000);
}

}

Toimingu kirjeldus:
Valgusbarjääri töötamine kolmes režiimis patentsiomeetri abil.
Komponendid:
Arduino Uno R3
Väike arendusplaad
Fotoresistor
Potentsiomeeter
3 takistit (220 Om) ja 1 takisti (10 kOm)
RGB LED

Töö kirjeldus:
Öövalgustus kasutab RGB LED-i, mis muudab värvi vastavalt potentsiomeetri asendile. Esimeses asendis on punane valgus, teises asendis roheline ning kolmandas asendis sinine. LED lülitub sisse, kui fotoresistor tuvastab pimeduse.

Uued funktsioonid:

Serial.begin() — funktsioon algatab mikrokontrolleri järjestikuse side kindla andmeedastuskiirusega. Seda kasutatakse ühenduse loomiseks mikrokontrolleri ja arvuti või teiste seadmete vahel järjestikuse pordi kaudu (tavaliselt kasutatakse silumiseks ja andmevahetuseks). Enne väljundi funktsioonide kasutamist (nt Serial.print()), tuleb Serial.begin() kutsuda andmeedastuskiiruse seadistamiseks.

analogRead() — funktsioon loeb mikrokontrolleri konkreetse analoogpinni analoogsignaali väärtust. Tavaliselt on mikrokontrolleritel piiratud arv analoogsisendeid ja analogRead() võimaldab mõõta nende pinkide analoogväärtusi. Selle funktsiooni tagastatav väärtus on vahemikus 0 kuni 1023, kus 0 vastab pinna pingele 0 V ja 1023 pingele, mis on võrdne viitpingega (tavaliselt 5 V).

constrain() — funktsioon piirab väärtust määratud vahemikus. Sellel on kolm argumendit: väärtus, miinimum- ja maksimumväärtused. Kui antud väärtus on väiksem kui miinimum, muutub see miinimumiks. Kui see on suurem kui maksimum, muutub see maksimumiks. Vastasel juhul jääb väärtus muutumatuks.