Kun näiden mikrokontrollerilevyjen
parissa puuhailee ja kokeilee, niin silloin tällöin sattuu
vahinkoja (puhun omasta kokemuksestani). Tämän jakson ideana on
muutama pieni ja yksinkertainen ohjelma, joilla voi testata, onko
Arduino kunnossa, ja miltä osin. Jos piirilevy ei vastaa
työkaluohjelman lataustoimintaan, tulee ko. piiristä harmi. Toki
siitä on hyvä käyttää joitakin toimivia osia, kuten liittimiä,
LEDejä, 5 V-regulaattoria ja mahdollisesti joitain muitakin
komponentteja.
On toki mahdollista, että on
onnistunut tuhoamaan ainoastaan jonkun I/O:n. Tämänkertainen jakso
tähtää nimenomaan liityntöjen testaukseen. Enin osa testeistä on
tehty Arduino UNO:lla. Joitakin myös Arduino LEONARDOLLA, mutta muut
kuvassa näkyvät piirit eivät osallistuneet näiden ohjelmien
kehitykseen.
HUOM! Noissa kaikissa kolmessa ohjelman
määrittelyosiossa on mukana myös sarjaliikenne
ohjelmointityökalulle (Serial.begin(9600);). Se ei ole
tarpeen näiden testiohjelmien kannalta, mutta hyvähän sen on
siellä olla, jos tekee muutoksia ohjelmaan ja haluaa ajankohtaista
dataa näytölle.
DIGITAALILÄHDÖT
Ensimmäisenä on lähtöpinnien
testaus. Niitähän on 12 kpl (D/I 2 .. 13). Mutta sen lisäksi
analogiatulot (A0 .. A5) voidaan määritellä (14 .. 19) ja käyttää
myös digitaalisena (paitsi LEONARDO, jossa täten toimivat vain A0
ja A1). Kokemukseni mukaan aiemmin myös D/I-pinnit D0 ja D1 olivat
määriteltävissä tuloiksi ja lähdöiksi, mutta näissä
testeissäni se ei onnistunut. Ne on nähtävästi täysin
”pyhitetty” sarjaliikenteelle. DIO0 on RX (sarjadatan tulo) ja
DIO1 on TX (sarjadatan lähtö).
Indikaationa (ei kaivanne
kytkentäkaaviota) voi olla esim. 1 kohm (sopiva valinta, sillä se
etuvastuksena ei kuormita lähtöpinniä liikaa) vastus sarjassa
LEDin kanssa. Eli: lähtöpinni, vastus, LED ja maa. (LEDin pitää
olla oikein päin kytkettynä). Kun vastus vaihdetaan eri pinneihin,
vilkahtaa myös levyllä oleva (OUT13 LED) säännöllisin välein
. Aika koostuu LOOPista 50 + 50 ms,
sekä siitä, että luuppi käy läpi kaikki 17 lähtöä. Kun
ulkoinen LED välähtää, toimii kyseinen lähtö oikein.
/***************************************
* OUT_Test_1
* 26.09.2019
* I/O-pinnien
OUTput - testaus
**************************************/
// ASETUKSET:
void setup(){
Serial.begin(9600);
// Asetetaan DIGI
ja ANA I/O-pinnit lähdöiksi
for(int i = 2;i <=
19; i ++){
pinMode(i,
OUTPUT);}
}// Asetuksen loppu
// PÄÄLOOPPI
void loop(){
for(int j = 2; j <=
19; j++){
digitalWrite(j,
HIGH);
delay(50);
digitalWrite(j,
LOW);
delay(50);
}
delay(1);
} // Pääohjelma
LOPPU
DIGITAALITULOT
Tässä toisessa ohjelmassa käydään
läpi kaikki digitaalitulot paitsi DIO-13, minkä LEDiä käytetään
indikaattorina. Sen vuoksi se määritellään erikseen OUT-bitiksi.
Muut määritellään kahdella eri luupilla tuloiksi, joissa on
sisäinen ylös veto vastus (INPUT_PULLUP).
Myös pääohjelma jakaantuu tämän vuoksi kahdeksi FOR-luupiksi.
Kun jonkin tuloista kytkee maahan, suorittaa ohjelma
aliohjelmakutsun. Tällöin piirilevyllä oleva LED (DIO-13) vilkkuu.
Kyseinen tulopinni toimii siis oikein.
/***************************************
* IN_Test_1
* 26.09.2019
* I/O-pinnien
INput - testaus
**************************************/
// Määrittlyt
int LEDout = 13;
boolean tila =
false;
// LEDin aliohjelma
void Fun_LED(){
digitalWrite(LEDout, HIGH);
delay(150);
digitalWrite(LEDout, LOW);
delay(150);
}
// ASETUKSET:
void setup(){
Serial.begin(9600);
// Asetetaan pinnin
13 LED lähdöksi
pinMode(LEDout,
OUTPUT);
// Asetetaan
varsinaiset I/O-pinnit tuloiksi
for(int i = 2;i <=
12; i ++){
pinMode(i,
INPUT_PULLUP);}
// Asetetaan
ANAlogia pinnit tuloiksi
for(int i = 14;i <=
19; i ++){
pinMode(i,
INPUT_PULLUP);}
}// Asetuksen loppu
// PÄÄLOOPPI
void loop(){
for(int j = 2; j <=
12; j++){
tila =
!digitalRead(j);
if(tila ==
true){Fun_LED();}
} // for loppu
for(int j = 14; j
<= 19; j++){
tila =
!digitalRead(j);
if(tila ==
true){Fun_LED();}
} // for loppu
delay(1);
} // Pääohjelma
LOPPU
ANALOGIATULOT
Tässä kolmannessa testiohjelmassa
tutkitaan analogiatulojen toiminta. UNOssa ja LEONARDOssa niitä on
kuusi (A0 .. A5) kappaletta. Niiden tulojännitealue on 0 .. 5 V.
Tämä voidaan syöttää ulkopuolelta tai tehdä niin, että
potentiometrin äärinavat kytketään Arduinon maan (GND) ja 5 V:n
lähdön väliin ja potentiometrin liu'ulta viedään jännite
mitattavaan analogiatuloon. Indikaattoriksi tähän testiin voidaan
käyttää ensimmäisen testin LED / vastusyhdistelmää, kytkettynä
johonkin analogialähtöön (PWM, pulssinleveysmodulaatio). Tässä
ohjelmassa on käytetty lähtöä DO3. Lähdön jännite vaihtelee
noin 1 kHz taajuudella nollan (0 V) ja viiden (5 V) voltin välillä,
mutta näiden jännitteiden aikasuhde muuttuu ohjauksen mukaan.
Analogiatulon muunnos on 10 bittinen, eli lukualue on 0 .. 1023 ja
lähdön lukualue kahdeksan (8) bittinen, eli 0 .. 255, joten
tuloarvo pitää jakaa neljällä. Kun potentiometria, säätää,
vaihtuu tulojännite, minkä muutos ilmenee LEDin kirkkauden
vaihteluna. Vaihtamalla potikan johtoa eri tuloihin voi tarkastaa
jokaisen tulon toimivuus.
/***************************************
* ANA_Test_3
* 27.09.2019
* Muutetaan
analogia-arvojen tuloarvo
* LEDin
kirkkaudeksi
**************************************/
// MÄÄRITTELYT:
int Ana_Raaka = 0;
int Ana_Out = 0;
int PWM_LED = 3;
// ASETUKSET:
void setup(){
Serial.begin(9600);
}// Asetuksen loppu
// PÄÄLOOPPI
void loop(){
for(int i = 0; i
<= 5; i++){
Ana_Raaka =
analogRead(i);
Ana_Out =
Ana_Raaka / 4;
Ana_Out =
constrain(Ana_Out, 0, 255);
}
analogWrite(PWM_LED,
Ana_Out);
delay(1);
} // Pääohjelma
LOPPU
Ei kommentteja:
Lähetä kommentti