![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW5XXJTkCLZVixSuOkyjV7TdlDltM3lIycLU7V6jgAeFv_GDQ_LD_haxvs9Y8WQMBPrEXZj-toiLDq76Qb-d6LqK8byAMU0glH28g8LWayC1CDmiLv7dsvho6-o-KBW8-P6JeyuK5asyig/s200/Mittaus_1.png)
Arvo % 0 10 20 30 40 50 60 70 80 90 100
Ohjaus 0 25 50 75 100 125 150 175 200 225 250
AnaTulo 55 435 548 612 625 655 670 690 715 733 750
Oheisesta
pylväsdiagrammista voi havaita, että 30% yläpuolella ohjaus- ja mittausarvot
kasvavat melko lineaarisesti.
Kytkennässä on paljon
samaa edellisen kanssa, mutta jotakin on jäänyt pois ja jotakin on tullut
lisää. Yksi ero on se, että lamppu (LED) tähtää nyt suoraan valovastukseen
(LDR) ja analogiatulo ei mittaa suoraan valovastuksen muodostamaa jännitettä,
vaan välillä on RC-suodin. Koska valovastuksen kuormasta lähtee melko suuri
(100 kohm) vastus elektrolyyttikondensaattoriin, ovat muutokset analogiatulossa
hitaampia kuin LDR:n navassa.
Ohjelma 13
/***************************************
*
Ohjelma 13
* 19.04.2016
*
Mittaus ja muunnos
**************************************/
// MÄÄRITTELYT:
// Kellon määrittely
unsigned long Ulo_MilliSek = 0;
unsigned long Ulo_UusiMilliSek = 0;
const long CoL_EroSekunti = 999;
int Int_Sekunti = 0;
boolean Bol_Tulosta = true; // Tulostusta ohjataan kellolla
// Muutamia perusmäärityksiä
const int Con_LDRTulo = 0;
int Int_LDRTulo = 0;
const int Con_Painike = 2;
boolean Bol_PainikeTila = false;
const int Con_PainikeViive = 3;
int Int_PainikeViive = 0;
int Seq_Painike = 1;
const int Con_Valo = 3;
int Int_Ohjaus = 0;
// ASETUKSET:
void setup(){
Serial.begin(9600);
//while (!Serial) { ; } // Odottaa
sarjaportin kytkeytymistä
pinMode(Con_Painike, INPUT);
pinMode(Con_Valo, OUTPUT);
}// Asetuksen loppu
// PÄÄLOOPPI Varsinainen suoritusosa. Jatkuva suoritus
void loop(){
// Sisäisen kellon käyttö
Ulo_MilliSek = millis();
if(Ulo_MilliSek - Ulo_UusiMilliSek
> CoL_EroSekunti){
Ulo_UusiMilliSek = Ulo_MilliSek;
Int_Sekunti++;
if (Bol_Tulosta ==
true){Fun_Tulostus();}
}
// Päivitetään tulot ja lähdöt
Int_LDRTulo = analogRead(Con_LDRTulo);
Bol_PainikeTila = digitalRead(Con_Painike);
Int_Ohjaus = constrain(Int_Ohjaus, 0, 255);
analogWrite(Con_Valo, Int_Ohjaus);
// KOSKETTIMEN-tilan käsittely, nouseva reuna
switch (Seq_Painike) {
case 1:
if
(Bol_PainikeTila == true){
Int_PainikeViive ++;
if (Int_PainikeViive > Con_PainikeViive){
Int_Ohjaus = Int_Ohjaus + 25;
Int_PainikeViive = 0;
Seq_Painike = 2;
}
}
break;
case 2:
if
(Bol_PainikeTila == false){
Seq_Painike = 1;
}
break;
}
} // Pääohjelma LOPPU
// FUNKTIOT
void Fun_Tulostus(){
//Serial.print("Teksti :");
Serial.println(Muuttuja);
Serial.print("Ohjausarvo :");
Serial.println(Int_Ohjaus);
Serial.print("LDR lukema :");
Serial.println(Int_LDRTulo);
Ei kommentteja:
Lähetä kommentti