22.4.2014

(abs(arvo-vanhaArvo)>100)

Olemme tässä kuukauden verran tuskailleet kiihtyvyysanturin kanssa. Koodia emme tahtoneet millään saada tehtyä ja kysymyksiä itse komponentista tuli koko ajan lisää. 

Muun muassa tällaisia kysymyksiä pohdittiin: 
- miten koota koodi, kun anturilla ei ole nollakohtaa
- sytyttää valot, sammuttaa valot määritetyn ajan jälkeen -> ei jätä valoja päälle
- jos pyörä kaatuu/heiluu tuulessa -> sytyttää valot -> valot räpsyvät
- laskuri? Niin ku mikä? Miten määritellään? Mitä se tekee? Mihin sitä tarvitaan? Miten se laitetaan koodiin? Miksi?? 
- jos pyörä liikkuu tasaista tahtia, sammuvatko valot? 
- käyttöjännite 3,3V vai 5V ?  

Pääsiäisenä tapahtui ihme ja pääsiäispupu auttoi meitä tekemään koodia. 
Ihmeeseen kuului myös tuon laskurin ymmärtäminen. Saimme tehtyä kiihtyvyysanturille koodin, joka toimii. Pääsiäispupu auttoi myös ymmärtämään koodauskieltä, jolloin kiihtyvyysanturin koodi on nyt selvää karitsan lihaa. Kiitos Pääsiäispupu! :)

Pääsiäispupu neuvoi meitä myös, miten luodaan funktioita koodin sisälle. Kokosimme koodit yhteen niin, että valovastukset, kiihtyvyysanturi ja stepperit ovat omina funktioina. Tätä emme ole vielä kokeilleet käytännössä, mutta Arduino-ohjelma hyväksyi sen... 

Kiihtyvyysanturi ratkaistiin seuraavasti: 

void kiihtyvyysanturi() {
    int xRead = analogRead(xPin);
    int yRead = analogRead(yPin);
    int zRead = analogRead(zPin);
    int arvo = xRead+yRead+zRead;

    Serial.print("x: ");
    Serial.print(xRead);
    Serial.print(" | y: ");
    Serial.print(yRead);
    Serial.print(" | z: ");
    Serial.println(zRead);
    Serial.print("arvo ");
    Serial.println(arvo);
    delay(3);

    if (laskuri < 1) { 
        if(abs(arvo-vanhaArvo) > 100) { //abs on itseisarvo, joka tekee laskun miinusmerkkisestä luvusta plusmerkkisen. >100 kynnysarvo liikkelle, mikä määrää syttyykö valo vai ei.
            digitalWrite(ledPin, HIGH); // sytyttää ledin.         
            laskuri = 100; // laskuri määritetään arvoksi 100, jolloin ledit ovat päällä 100 silmukan kierrosta.  
        }
        else { 
            digitalWrite(ledPin, LOW); //sammuttaa ledit.            
            laskuri = 0; //laskuri määritetään arvoksi 0.
        }
    }
    laskuri--; //vähentää laskurin arvosta 1.
    vanhaArvo = arvo; //tallennetaan arvo seuraavan kierroksen arvoksi.
}

Liikkeen kynnysarvo täytyy vielä määritellä pyörän kanssa, samoin kuin laskurin arvot. 
Tästä on nyt hyvä jatkaa hyvällä fiiliksellä ja uudella innokkaalla motivaatiolla (joka kävi jo aika pohjalla). :)

- V & M 

Ei kommentteja:

Lähetä kommentti