30.5.2016

Valmis koodi

Koodi valmistui pääsiäisenä 2014. Projektia pääsimme jatkamaan keväällä 2016. Heh.


Tässä valmis koodimme:




//21.4.-14 Looppiin tehty erilliset funktiot


//23.5.-16 Koodi ladattu Arduinoon


 


#include <Stepper.h>


//Valovastukset


int analogInput1 = A4; // Potentiometrin keskimmäinen jalka kytketään tähän pinniin


int analogInput2 = A5; // Potentiometrin keskimmäinen jalka kytketään tähän pinniin


int arvo1 = 0; // jännitteen arvo tallennetaan tähän muuttujaan


int arvo2 = 0; // jännitteen arvo tallennetaan tähän muuttujaan


int keskiarvo = 0; // jännitteen arvo tallennetaan tähän muuttujaan




//Kiihtyvyysanturi


int xPin = 1;


int yPin = 2;


int zPin = 3;


int arvo;


int vanhaArvo;


int laskuri = 0;


 
//Ledit


const int ledPin = 9;





//Askelmoottorit


const int stepsPerRevolution = 200;


Stepper myStepper(stepsPerRevolution, 2,4,3,5);           


int digitalPin1 = 7;


int digitalPin2 = 8;


 


void setup(){


 


    pinMode(ledPin, OUTPUT);


    pinMode(7, INPUT);


    pinMode(8, INPUT); 


    // set the speed at 60 rpm:


    myStepper.setSpeed(60);


    // initialize the serial port:


    Serial.begin(9600);


}


 


void loop() {


    valovastus();


    stepperi();


}


 


void valovastus() {


    arvo1 = analogRead(analogInput1);


    arvo2 = analogRead(analogInput2);


    keskiarvo = (arvo1+arvo2)/2;


    // Tulostetaan saalis sarjaporttiin:


    Serial.print("Jännite = " );


    Serial.println(keskiarvo); // "Serial.println" komento vaihtaa riviä tulostuksen jälkeen


    if (keskiarvo<500) {


        kiihtyvyysanturi();


    }


    else if (keskiarvo>500) {


        digitalWrite(ledPin, LOW);


    }


}


 


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.


}


 


void stepperi() {


    if (digitalRead(digitalPin1)==HIGH) {


        // step one revolution  in one direction:


        Serial.println("clockwise");


        myStepper.step(50);


        delay(5);


    }


    if (digitalRead(digitalPin2)==HIGH) { 


        // step one revolution in the other direction:


        Serial.println("counterclockwise");


        myStepper.step(-50);


        delay(5);


    }


}

Ei kommentteja:

Lähetä kommentti