Language Switcher Fallback

Harjutused if-lausega

D6 külge on ühendatud NPN transistor, läbi 1K takisti, mis juhib mootorit - ütleme, et see on ventilaator.
Kui sobivat pisikest mootorit ei ole, siis asenda LEDi ja takistiga. Skeem allpool ongi asendusega. Mootori sümbol on kõrval lahtiselt, et viidata, et koodis me mõtleme sellest lülituvast asjast kui ventilaatori mootorist.
A0 külge on ühendatud pingejagur fototakististiga.
D2 külge on ühendatud lüliti pulldown takistiga.
D3 külge on ühendatud teine lüliti pulldown takistiga.

 

Ülesande skeem
//Abiks ülesandega alustamisel, osa koodi. Aga võiksid proovida kõik algusest peale ise välja mõtelda.

//Salvestame ühendused muutujatesse
int sensor = A0;
int switchDependsOnSensor = 2;
int switchAlwaysOn = 3;
int fan = 6;

//Muud muutjad
int sensorValue; //siia salvestan iga kord sensori lugemi

//Määrame, millise sensori lugemi juures tahame ventilaatori sisselülitumist
int switchingLevel = 500;

void setup() {
  pinMode(sensor, INPUT);
  pinMode(switchDependsOnSensor, INPUT);
  pinMode(switchAlwaysOn, INPUT);
  pinMode(fan, OUTPUT);

  Serial.begin(9600); //kasutame seriali mõistliku sensoriväärtuse valimiseks
}


void loop() {
 
  sensorValue = analogRead(sensor); //salvestame sensori väärtuse võrdluste ja väljaprintimise jaoks
 
  Serial.println(sensorValue); //prindime sensori väärtuse juhuks, kui tahame seda jälgida

  // Järgnevasse osasse pead omalt poolt lisama, või seda muutma, vastavalt ülesandele.

  if(sensorValue > switchingLevel) {
    
  }
  else {
    
  }

 

}

Ülesanne 1

Lae eelpool toodud kood Arduino peale ja ava seeriamonitor. Kata ja valgusta fototakistit ning jägi, mis vahemikus arvud seeriamonitoris muutuvad.

  • Vali arv, mis jääb nähtud miinimumi ja maksimumi vahele ja kirjuta see 500 asemele switchingLevel väärtuseks.

Koodi kirjutamise ülesanne:

  • Kui valgust on rohkem kui sinu valitud number switchingLevel muutujas - ütleme, et see tähendab peale lõõskavat päikest - siis pane ventilaator tööle.

If ... else lause tähendab seda, et algul kontrollitakse sulgudes olevat tingimust (siin: kas loetud sensorValue on suurem kui switchingLevel). Kui on nii, siis täidetakse kohe "if"-i ja tingimuse järel loogelistes sulgudes olev kood. Kui ei ole nii, siis esimest osa ei täideta, vaid täidetakse "else" järel loogelistes sulgudes olev kood.
 

Ülesanne 2

Ütleme, et D2 lüliti on selline, millega kasutaja annab märku, kas ta soovib lõõskava päikesega ventileerimist või mitte.

  • Kui lüliti (nimegaswitchDependsOnSensor) on sees ja valgust on rohkem kui switchingLevel number, siis lülita ventilaator sisse. 
  • Kui lüliti ei ole sees, siis ei lähe tööle.

Selle lahendamiseks pead ühe if või else bloki sisse panema teise if-bloki.

if ([mingi tingimus, näiteks matemaatiline võrdlus]) {

  [mingid käsud]

}

If blokk võib olla üksi, ilma else-ta. Sel juhul tingimuse täidetuse korral tehakse järgnev loogelistes sulgudes olev käskluste kogum. Tingimuse mitte-täidetuse korral ei tehta midagi, liigutakse edasi. If-else puhul tehakse tingimuse täidetuse korral esimene loogeliste sulgude sisu läbi ja else järel olev teine loogeliste sulgude sisu jäetakse vahele, aga tingimuse mitte-täidetuse korral jäetakse vahele esimene if-i oma ja täidetakse teine - else - loogeliste sulgude sisu.

Võrdlus võib olla kas suurem kui (>), väiksem kui (<), suurem-võrdne (>=), väiksem-võrdne (<=) või täpselt võrdne (==).

Tingimus saab olla ka mitte-matemaatiline, aga sellest kunagi edapidi.

Ülesanne 3

Ütleme, et lisaks eelmises punktis kirjeldatule, D3 lüliti on selline, millega kasutaja annab märku, kas ta soovib kogu aeg  ventileerimist.

  • Kui D3 on lülitatud, siis ventilaator alati töötab.
  • Kui D3 ei ole lülitatud, ja D2 on lülitatud, ja valgust on rohkem kui [sinu valitud number], siis ventilator lülitatakse sisse.
  • Vähema valguse korral lülitatakse välja.
  • Kui D3 ei ole lülitatud ja D2 ei ole lülitatud, siis ventilaatorit  kunagi sisse ei lülitata.

Siin tuleb veel if või if-else lauseid üksteise sisse paigutada.