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);
}
}