14. maaliskuuta 2016

Kalanruokintalaite Arduino-projekti



Projektin jäsenet: Varvara Zhilibovskaya, Susanna Hyötyläinen ja Jenna Ahokas.

Projektimme idea oli rakentaa laite, joka automatisoi kalojen ruokinnan. Laite mahdollistaa kalojen ruokinnan muutaman päivän ajaksi, omistajan ollessa poissa. Kalanruokintalaite sopii pienelle akvaariolle ja se ruokkii kalat kerran vuorokaudessa. 

Käytimme projektin toteuttamiseen seuraavanlaisia osia The Arduino Starter Kit:stä: 

Arduino UNO
USB-johto
3 Hyppylankaa
Servo motor
MacBook pro 15' OS X Yosemite, Prosessori: 2,3 GHz Intel Core 17

Lisäksi käytimme lego Dublo osia. 

video
Kytkentäkaavio


#include <Servo.h>
unsigned long fed;

Servo servo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  servo.attach(9);  // attaches the servo on pin 9 to the servo object
  Serial.begin(9600);
  fed = 0;
}
void loop() {
   for (pos = 170; pos >= 0; pos -= 1) { // goes from 170 degrees to 0 degrees
    servo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);
                        // waits 15ms for the servo to reach the position
  }
        for (pos = 0; pos <= 170; pos += 1) { // goes from 0 degrees to 170 degrees
    // in steps of 1 degree
    servo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);   
    // waits 15ms for the servo to reach the position
 
   }
  unsigned long timePassed = (millis() - fed) / 1000;
  fed = millis();
 
 //Serial.print( "Kalat ovat ruokittu ");
 //Serial.print(timePassed);
 // Serial.print(" sekunttia sitten, eli ");
// Serial.print(timePassed/60);
// Serial.println(" minuuttia sitten,eli ");
 // Serial.print(0.0166,4 *(timePassed/60));
  //Serial.println(" tuntia sitten");
  //delay(10000); // 15 sekunttia sitten
 //delay(60000-5000);


Serial.print( "Kalat ovat ruokittu ");
  Serial.print(timePassed);
  Serial.print(" sekunttia sitten, eli ");
Serial.print(timePassed/60);
 Serial.println(" minuuttia sitten,eli ");
 Serial.print((timePassed/60)/60);
 Serial.println(" tuntia sitten");
 delay((60000*60)-5000);


//Serial.print( "Kalat ovat ruokittu ");
 // Serial.print(timePassed);
  //Serial.print(" sekunttia sitten, eli ");
 //Serial.print(timePassed/60);
 //Serial.println(" minuuttia sitten,eli ");
  //Serial.print((timePassed/60)/60);
 // Serial.println(" tuntia sitten");
  //delay(60000*(60*24)-5000);

   
  //delay(1000/60); 5 sekunntia väli
  //delay(1000); // kalat ovat ruokittu 6 sekuntioa sitten
  //delay (10000); // kalat ovat ruokittu 15 sekunttia sitten
}


Käytimme projektiin +20 tuntia. Ensin käytimme DC Motoria, mutta se oli liian tehokas, joten vaihdoimme sen Servoon. Servon kanssa oli alkuun ongelmia, koska aina käynnistyessään  se nytkähti nopeasti liikkeelle. Se piti määrittää alkupisteeseen ja vasta siitä käynnistää, jolloin ongelma ratkesi. C++ ei myöskään ohjelmointikielenä ole ollut kenellekkään meistä entuudestaan tutt, joten jouduimme perehtymään myös siihen.