Kuukausi: huhtikuu 2013

Sarjaportilta viestejä tietokoneelle

Minulla oli käytössä pelkkä arduino uno, joten tein vain osan tehtävästä.

Kokeilin ensin, että serial monitor toimii. Laitoin serialmonitorin alkamaan 115200 bt/s, koska se on yleisin nopeus joka toimii useimmilla arduinoilla.
Koodi:

void setup(){

Serial.begin(115200);

}

void loop(){
Serial.print(”Hello! ”);
delay(100);
}

Monitorissa tulostui Hello! jatkuvasti.

Tietokoneelle viestejä serialmonitorilta

Linuxista löytyi python valmiina, joten tein uuden kansion mkdir puuton ja sinne nano tespuuton.py
Kirjoitin tiedostoon:

print(’Hello World!’)

Sitten komentokehotteessa vielä python tespuuton.py ja komentokehotteeseen tuli iloisesti Hello World!

muutin tespuuton tiedoston koodin seuraavaksi:

import serial

ser = serial.Serial(’/dev/ttyACM0’, 115200)

while 1:
try:
print ser.readline()
delay(100)

Koitin ajaa tiedostoni python tespuuton.py, mutta komentokehotteeseen tuli errorviesti:

serial.serialutil.SerialException: could not open port /dev/ttyACM0: [Errno 13] Permission denied: ’/dev/ttyACM0’

Koitin muuttaa oikeuksiani

sudo usermod -a -G dialout xubuntu

http://arduino-er.blogspot.fi/2013/03/serialserialutilserialexception-could.html

Tämäkään ei auttanut..
Vaivuin epätoivoon usean yrityksen jälkeen.
Koitin päivittää pythonin, ei auttanut sillä oli jo päivitetty.

Arduino: Sensorilla toimintoja

Tein tehtävän yhdessä Aicha Haidaran kanssa. Käytimme:
Arduino Diecimilea
2 led lamppua
Leipäpöytää
Nappia

Ensimmäinen vaihe on testata, että Hello World toimii. Kytkimme Arduinon leipäpöytään, johon oli kytketty yksi led lamppu. Arduinossa paloi kaikki oikeat merkkivalot ja led syttyi komentamallamme tavalla (pinmode output, high).

WP_000003

Siirryimme itse projetkiin.

Napin käyttö:

Default toimintona napin painallus katkaisee virran.

Testasimme sen toiminnon: kun nappia painaa ledistä ei tule valoa, kun taas ei paina, ledissä palaa valo normaalisti. Kytkimme kaksi uutta lediä leipäpöytään ja toiminto toimi edelleen hyvin. Ongelmana oli napin pysyvyys leipäpöydässä, joten jouduimme painamaan toisella sormella nappia leipäpöytään kiinni.

Kokeilimme aivan normaalia valojen vilkkumista koodilla:

int pinMaster = 12;

void setup() {
pinMode(pinMaster, OUTPUT);
}

void loop() {
digitalWrite(pinMaster, HIGH);
delay(500);
digitalWrite(pinMaster, LOW);
delay(500);
}

Digital read
Kokeilin vielä omaksi projektiksi saada serial monitorille numeroita. Tällä koodilla serialmonitoriin laiton puolen sekunnin välein mittaamaan buttonin tilaa:

int button = 2; // set variable button as 2 for the pin 2

void setup() {
Serial.begin(9600);
pinMode(button, INPUT);
}
void loop() {

int buttonState = digitalRead(button); //read pin input
Serial.println(buttonState); // print to serial monitor buttons state
delay(500); // delay half second
}

Arduino: Servolla kokeilua

Tehtävään käytetyn tietokoneen tiedot löytyvät täältä.

Tehtävänä oli kokeilla servolla eri tavoilla, käyttäen esimerkiksi DigitalWrite -komentoa.

Aloitetaan päivittämällä paketit: $ sudo apt-get update
Asennetaan arduino: $ sudo apt-get install arduino
Lisätään käyttäjä ryhmään dialout: $ sudo adduser iiro dialout
Kirjaudutaan dialout ryhmään: $ newgrp dialout
Aloitetaan arduinon käyttö: $ arduino
Valitaan oikea arduino (arduino diecimila) ja oikea usb portti.

Servon käyttö
Servossa on kolme johtoa, väriltään ruskea punainen ja oranssi/keltainen (ainakin omassa mallissani). Ruskea johto yhdistetään groundiin, punainen sähkövirtaan (5volttia) ja oranssi on omavalintaiseen data-pinniin.
arduinoservo

Kun yhdistät arduinon tietokoneeseesi, kokeile ensin hello world!

Servon toimintaa voit kokeilla esimerkkikoodeista löytyvillä sweep ja knob koodeilla.
Servo.h
Servo.h on arduinon valmis kirjasto servon ohjailuun. Se lisätään komennolla #include
Kokeilin:
Ongelmaksi koitui että servo pyöri hallitsemattomasti, varmaankin sen takia,ettei tiennyt omaa ”sijaintiaan”.

#include

int myPin = 9;
Servo servoA;

void setup()
{
servoA.attach(myPin); //attach servo to pin 9 (myPin)
}
void loop (){ //this loops makes the servo to circle between 0 and 90 degrees
servoA.write(0);
delay(1000);
servoA.write(90);
delay(1000);
}

Etsi omaperäinen Arduino-projekti ja kuvaile se lyhyesti

Löysin nopealla selaillulla Arduino-projektin, jossa projektin tekijät olivat tehneet ledeillä kuution. Kun kuution laittaa päälle, se tekee erilaisia valo-efektejä, kuten valopallon joka liikkuu kuutiossa. Led-kuutio on tehty kolvaamalla sinisiä ledejä toisiinsa kiinni ja ne ovat yhdistetty yhteiseen jalustaan. Jalusta on puuta johon on tehty reiät, jonka kautta johdot kytketään kehikkoon. Koodi on ledien päälle laittamista ja sulkemista tietyssä järjestyksessä. Tähän tarvitsee jo hiukan taitoja. Nettisivuilla on todella syvällinen kokonaisuus projektin vaiheista, projektiin tarvittavista osista ja tietysti koodit.
Led Cube

Lähteet:

http://terokarvinen.com/2012/aikataulu-prototyypin-rakentaminen-bus4tn007-4-loppukevat-2013

http://www.instructables.com/id/Led-Cube-8x8x8/#intro