Arduino UNOssa on kuusi
analogiatuloa: A0 .. A5. Analogia lähtöjä on myös kuusi: DO3, DO5, DO6, DO9,
DO10 ja DO11. Noihin kuuteen voidaan ohjata analogiakirjoitus. (analogWrite(pin, value); Analogialähtö
on pulssinleveysmoduloitu (PWM) signaali. Toisin sanoen lähtöjännite vaihtelee
nollan (0) ja viiden (5) voltin välillä hyvin nopeasti (noin 1kHz:in taajuudella).
Analogisuus tulee siitä suhteesta, miten kauan lähtöjännite on viisi volttia ja
miten kauan nolla volttia. Nolla prosenttia tarkoittaa jatkuvaa nollajännitettä
ja 100% jatkuvaa viittä volttia. Muut arvot ovat kestosuhteeltaan siltä
väliltä. Analogia lähdössä on 8 bitin muunnos, eli lukualue on 0 .. 255.
Analogiatulo toimii myös
välillä 0 .. 5VDC (= tasavirtaa). Näissä tuloissa on 10 bitin muunnos, ts.
lukualue on 0 .. 1023. Erottelutarkkuus on siis 5mV ( 5V = 5000mV / 1024 =
4,88mV).
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ9gU2826IHj_W0lWrynM3t9mOrDDB8TkRPPF2EuNwoRxLrtdv9Gf8Oo8WGoUE4C6J0UnywHUWH7EYb02JHPwV0Z34sv1vB6o3NdLgVmjRs6SOvDO_4c-QZEPFr9mlROuszWrANvDKSH7Y/s320/AnaIO_v1.png)
Tässä ohjelmassa muuttuva
jännite saadaan potentiometrin liu’ulta ja lukualuesovituksen kautta arvo
kirjoitetaan lähtöön, missä on LED, jonka kirkkautta voidaan täten säätää.
Ensin komponenttien kytkentä:
Tältä näyttää fyysinen kytkentä:
Tältä näyttää fyysinen kytkentä:
Ohjelma 7
/***************************************
*
Ohjelma 7
*
10.04.2016
*
LEDin kirkkaussäätö
**************************************/
// 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
const int Con_AnaTulo = 0;
int Int_Ana_Arvo = 0;
const int Con_LED = 3;
int Int_LED_Arvo = 0;
// ASETUKSET:
void setup(){
Serial.begin(9600);
// Analogiatuloa ei tarvitse määritellä tuloksi (INPUT)
// eikä analogia lähtöä lähdöksi (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();}
}
// Analogiakäsittely
Int_Ana_Arvo = analogRead(Con_AnaTulo); // Luetaan tulo
Int_LED_Arvo = map(Int_Ana_Arvo, 0, 1023, 0, 255); // muunnos
analogWrite(Con_LED, Int_LED_Arvo); // Kirjoitus lähtöön
delay(1);
} // Pääohjelma LOPPU
// FUNKTIOT
void Fun_Tulostus(){
//Serial.print("Teksti :");
Serial.println(Muuttuja);
Serial.print("Analogiatulo :");
Serial.println(Int_Ana_Arvo);
Serial.print("Lahtoarvo :");
Serial.println(Int_LED_Arvo);
}
Ei kommentteja:
Lähetä kommentti