maanantai 19. helmikuuta 2018

Ohjelmoinnin valinnaiskurssi: Arduino-ohjelmointia (osa 2)

Toiseksi projektiksi valikoitui Project 9: Auto light, koska siinä otetaan käyttöön ensimmäinen sensori ja sen avulla päästään harjoittelemaan ehtolauseen käyttämistä. Tässä projektissa hyödynnetään aikaisempia tietoja ledeistä ja lisäksi tutustutaan arvon lukemiseen analogisesta pinnistä sekä muutosten seuraamiseen sarjamonitorin avulla.

Kytkentä tehtiin kytkentäkortin Project 9: Auto light avulla (Light sensitive LED):

Project 9: Auto light
image source: http://image.dfrobot.com/image//Blog/
Ensimmäiseksi lähdimme tutkimaan valovastuksen toimintaa sarjamonitorin avulla. Jotta ehtolauseita voitaisiin muodostaa, olisi tiedettävä millaisia arvoja vastus tuottaa. Tämän koodin avulla pystyy monitoroimaan valovastusta:

int LED = 13;   
int SENSORI = 0;                  
int arvo = 0;                      

void setup() {
    pinMode(LED,OUTPUT);          
    Serial.begin(9600);          
}

void loop() {
   arvo = analogRead(SENSORI);       
   Serial.println(arvo);
   delay(10);
}      

Sarjamonitorissa on kaksi toimintoa, lukuarvojen monitorointi sekä serial plotter. Tässä tapauksessa visuaalisempi plotter toimii hyvin, kun valovastusta valaisee kännykän lampulla arvot muuttuvat selvästi. Plotter käynnistetään valikosta: Työkalut : Serial Plotter.

Serial Plotter, käynnistys
Valovastuksen antamia jännitearvoja, alimmat arvot kirkkaalla valolla
Nyt kun valovastuksen toiminnasta on jonkinlainen käsitys, pääsimme tekemään ehtolauseita ledin vilkuttelua varten. Ensimmäinen tehtävä oli tehdä yksi ehtolause, joka sammutaa ledin kun valaistusolosuteet ovat riittävän kirkkaat.

int LED = 13;   
int SENSORI = 0;                  
int arvo = 0;                      

void setup() {
    pinMode(LED,OUTPUT);          
    Serial.begin(9600);          
}

void loop() {
   arvo = analogRead(SENSORI);       
   Serial.println(arvo);
   
   if(arvo < 1000){
    digitalWrite(LED, LOW);
   } else{
    digitalWrite(LED, HIGH);
   }
   
   delay(10);
}      

Lisätehtävänä oli tehtä sisäkkäiset ehtolauseet niin, että ledi vilkkuu kolmella eri tavalla riippuen valaistuksesta. Tässä yksi malliratkaisu:

int LED = 13;   
int SENSORI = 0;                  
int arvo = 0;                      

void setup() {
    pinMode(LED,OUTPUT);          
    Serial.begin(9600);          
}

void loop() {
   arvo = analogRead(SENSORI);       
   Serial.println(arvo);
   
   if(arvo < 1000){
    digitalWrite(LED, LOW);
    } else{
      if(arvo > 1010){
        digitalWrite(LED, HIGH);
        delay(200);
        digitalWrite(LED, LOW);
        delay(200);
      }else{ 
        digitalWrite(LED, HIGH);
      }
    }
   
   delay(10);
}      


Auto Light - kytkentä näyttää tältä

Ei kommentteja:

Lähetä kommentti