A22. Boolean muuttujan käyttäminen - matpi/EmbeddedSystemsUTU GitHub Wiki

Esimerkkikoodi 1

*/ Tässä luetaan kytkintä ja sytytetään ja sammutetaan lediä. Koodi toimii yhtä hyvin
millä tahansa sensorilla ja aktuaattorilla.
/*


const int nappiPin = 2;       // liitetään painonappi digitaaliseen piinniin 2
const int lediPin =  13;      // määritellään, että liitetään ledi pinniin 13
int nappiTila = 0;            // määritellään muuttuja nappiTila
boolean lediTila = false;     // määritellään boolean tyyppinen muuttuja nimeltä lediTila
                              // (voi olla ainoastaan true tai false       

void setup() {

pinMode(lediPin, OUTPUT);
pinMode(nappiPin, INPUT);
}

void loop() {

nappiTila = digitalRead(nappiPin);
delay(50); // napin värähtelyt pois

// if lauseeseen mennään vain jos nappi on päällä ja ledi on sammuksissa
if (nappiTila == HIGH && lediTila == false)
{

digitalWrite(lediPin, HIGH);    // sytytetään ledi 
lediTila = true;    //  lopuksi määritellään boolean muuttuja lediTila arvoon true
}

// if lauseeseen mennään vain jos kytkin on pois ja ledi on päällä (lediTila on true)
if ( nappiTila == LOW && lediTila == true)
{

digitalWrite(lediPin, LOW);   // sammutetaan ledi 
lediTila = false;  //  lopuksi määritellään boolean muuttuja lediTila takaisin
                   //  alkuperäiseen arvoon false
}
}

Esimerkkikoodi 2

*/ Tässä on hieman edelleen kehitelty edellistä esimerkkikoodia. Koodissa luetaan
analogiseen inputpinniin A2 kytketyn LDR vastuksen antamaa arvoa, ja liikutetaan
ympäri pyörivää servoa (kytketty pinniin 9) /* 

#include <Servo.h>
int analoginput = A2;     // määritellään analoginen pinni A2 input pinniksi
int lediPin =  13;        // määritellään pinni, johon ledi kytketään
int LDRarvo = 0; 
boolean lediTila = false;  
boolean servoTila = false;  

Servo ekaServo;          // luodaan servo-objekti nimeltä ekaServo

void setup()
{ 
ekaServo.attach(9); // käynnistää ekaServo nimisen servo-objektin pinnissä 9
ekaServo.write(90); // asettaa servon pysymään paikallaan
delay(1000); // servo tarvitsee aikaa liikkua

pinMode(lediPin, OUTPUT);
Serial.begin(9600);  // Komento avaa sarjaliikenteen tietokoneelle nopeudella 9600 bps
} 
void loop()
{

LDRarvo = analogRead(analoginput); // Luetaan jännite analogisesta inputista:
delay(50); // pieni tauko

Serial.print("LDRarvo = " ); // Tulostetaan saalis sarjaporttiin
Serial.println(LDRarvo); // "Serial.println" komento vaihtaa riviä tulostuksen jälkeen
delay(100); // pieni tauko

if(LDRarvo <= 500 && lediTila == false &&  servoTila == false)   // if lauseeseen
// mennään vain jos LDRarvo <= 500 ja ledi on sammuksissa
{
digitalWrite(lediPin, HIGH); // sytytetään led
ekaServo.write(70); // käskee servon kääntyä
delay(1000); // sekunnin tauko
ekaServo.write(90); // käskee servon pysähtyä ja jäädä paikoilleen
delay(1000);  // sekunnin tauko
lediTila = true; // määritellään boolean muuttuja lediTila arvoon true
servoTila = true; // määritellään boolean muuttuja servoTila arvoon true

} 
if (LDRarvo > 500 && lediTila == true && servoTila == true)  // if lauseeseen
// mennään vain jos kytkin on pois ja ledi on päällä
{
digitalWrite(lediPin, LOW);  // sammutetaan led
ekaServo.write(110); // käskee servon kääntyä
delay(1000);
ekaServo.write(90); // käskee servon pysähtyä ja jäädä paikoilleen
delay(1000);

lediTila = false;  // määritellään boolean muuttuja takaisin arvoon false
servoTila = false; // määritellään boolean muuttuja takaisin arvoon false
}
}
⚠️ **GitHub.com Fallback** ⚠️