30.12.12

Näide Daniili programmist

Õpetaja töö kõrvale võrdludeks veel üks vilgutaja programm Daniil Lepkinilt.


// int b1_6=8;
// int b2_5=9;
// int b3_4=10;
// int y1_6=7;
// int y2_5=6;                               //* - to change
// int y3_4=5;
// int r1_6=2;
// int r2_5=3;
// int r3_4=4;
// int g1_6=11;
// int g2_5=12;
// int g3_4=13;

#define LED_AMOUNT  12                                                      //*PWM ports amount
int r;
int pause = 0;

int state[LED_AMOUNT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int counter[LED_AMOUNT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int pwm_state[LED_AMOUNT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int time_pwm_up[LED_AMOUNT] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
int time_pwm_down[LED_AMOUNT] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
int time_on[LED_AMOUNT] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
int time_off[LED_AMOUNT] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
int led_ports[LED_AMOUNT] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};        //*Ports you used for leds

void setup()
{
  for(int i = 2; i <= (LED_AMOUNT + 1); i++)
  {
    pinMode(i, OUTPUT);  
    digitalWrite(i,LOW);
  }
}

void loop()
{
  if (pause == 0)
  {
    for(int u = 0; u <= 2; u++)
    {
      r = int(random(0,LED_AMOUNT));                                        // For chosing a random LED group
      if(state[r] == 0)                                                     // and it's time parameters
      {
        state[r] = 1;
        time_pwm_up[r] = int((random(2, 5))*5);
        counter[r] = time_pwm_up[r];
        pwm_state[r] = 0;
        time_pwm_down[r] = int((random(2, 5))*5);
        time_on[r] = int((random(20, 40))*5);
        time_off[r] = int((random(20, 50))*10);
        u = 3;
        pause = int((random(50, 100))*10);
      }
    }
  }
  else pause--;
 
  for(int i = 0; i <= (LED_AMOUNT - 1); i++)                              //LED group listing
  {
    switch(state[i])
    {
      case 0:                                                             //LED group waiting for beginning it's work
        break;
       
      case 1:                                                             //LED group starting it's PWM growth
        if(counter[i]==0)
        {
          counter[i] = time_pwm_up[i];
          (pwm_state[i])++;
          if(pwm_state[i] == 255)
          {
            state[i] = 2;
            counter[i] = time_on[i];
          }
        }
        else (counter[i])--;
        break;
     
      case 2:                                                             //Keeping LED group on
        if(counter[i] == 0)
        {
          counter[i] = time_pwm_down[i];
          state[i] = 3;
        }
        else
        {
          (counter[i])--;
        }
        break;
     
      case 3:                                                             //LED group starting it's PWM fade
        if(counter[i] == 0)
        {
          counter[i] = time_pwm_down[i];
          (pwm_state[i])--;
          if(pwm_state[i] == 0)
          {
            state[i] = 4;
            counter[i] = time_off[i];
          }
        }
        else (counter[i])--;
        break;
     
      case 4:                                                             //Keeping LED group off                                                            
        if(counter[i] == 0)
          state[i] = 0;
        else
          (counter[i])--;    
        break;
       
      default:
        state[i] = 0;
    }
    analogWrite(led_ports[i], pwm_state[i]);                             //writing group's PWM state
  }
  delay(1);
}

Kuuse kontrollimise programm

Kuna puudujatel on mõningaid raskusi kuuse töö kontrollimisega siis panen siia jupi programmi mis vilgutab lede pin-idel 3,5,6,9,10 ja 11. Tähtis on Ledid õigesti ühendada.

void setup(){
  pinMode(3,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
}
void loop(){
digitalWrite(3, HIGH);
  delay(6000);
  digitalWrite(3, LOW);
digitalWrite(5, HIGH);
  delay(5000);
  digitalWrite(5, LOW);
digitalWrite(6, HIGH);
  delay(4000);
  digitalWrite(6, LOW);
digitalWrite(9, HIGH);
  delay(3000);
  digitalWrite(9, LOW);
digitalWrite(10, HIGH);
  delay(2000);
  digitalWrite(10, LOW);
digitalWrite(11, HIGH);
  delay(1000);
  digitalWrite(11, LOW);
}

27.12.12

Tunnid aastavahetusel

Ilusat pühadeaega ja aastavahetust Teile! Olen Kullos neljapäeval 27.detsembril kella 18.00-st. Järgmine tund aga oleks juba uuel aastal 3.jaanuaril ja ikka algusega 18.00.
Parimate soovidega õpetaja Mait!

2.12.12

Esmaspäevane tund

Esmaspäeval kell 18.00 saab nokitseda oma projekte ja lõpetada pooleli olevaid töid.

29.11.12

Projekt - Jõulukuusk, lõplik skeem

Siin nüüd ka skeem, kus on lisatud meie suurepärase kuuse valgussüsteemi juhtimine.
Olemas on lüliti (programmi valikuks), valguse mõõtur (heleduse reguleerimiseks) ja potensiomeeter (vilkumise kiiruse valikuks).




Projekt - Jõulukuusk, sissejuhatus

Üritame nüüd siis siiamaani õpitu ka millekski käegakatsutavaks kokku panna - teeme plastikust väikese jõulukuuse ja kaunistame selle led'idega. Ja led'e muidugi juhime ja vilgutame Arduino kaudu.
Valmis peaks saama midagi, mida saaks jõuluvanale ja vanaisale-vanaemale uhkusega näidata.

Etapp 1 - teeme kuuse kuju valmis. Materjalid ja töövahendid on Kullos olemas, kodus saab veel anda lõppviimistlust.
Etapp 2 - Paigaldame kuusele tuled. Käiku läheb suurem kogus juhtmeid ja led'e. Kõvasti saab jootmist harjutada.
Etapp 3 - Ühendame tuled arduino külge ja hakkame vilgutama.
Etapp 4 - Ühendame veel arduino juurde valgussensori - tuled peavad ju olema päeval heledamad ja pimedas tumedamad.
Etapp 5 - Ühendame veel juurde ühe (või ka mitu)  nupu - peaks ju saama nupule vajutades muuta seda, millise mustriga tuled vilguvad.
Etapp 6 - Lisame veel juurde "pöördtakisti" - potentsiomeetri. Et saaks näiteks tulede vilkumise kiirust sujuvalt muuta.
Etapp 7 - Paneme kuuse tipu RGB led'i (led, mis oskab näidata kogu värvispektrit).

Etapp 2 skeem:


ja protoplaadil





28.11.12

Arduino ja nupp - sissejuhatus

Kõigepealt räägime väljundidest....
Väljund peaks juba kõigil selge olema.
Kõigepealt setup osas pinMode(7, OUTPUT) ja seejärel saab programmis kasutada käsku digitalWrite(7,HIGH) või digitalWrite(7,LOW).
HIGH puhul tekib vastava väljundi peale siis +5V. LOW puhul aga GND. Ja saab näiteks led'i põlema panna (ja väga palju muudki teha).

Nüüd aga tahaks hoopis saada sisendit - mõõta näiteks kas lüliti on vajutatud või mitte parasjagu.
Kõikidel digitaalsetel pin'idel on olemas ka sisendi funktsionaalsus.

Kõigepealt setup osas:
pinMode(3,INPUT);

ja seejärel saab programmis kasutada käsku
int nupuasend;
nupuAsend = digitalRead(3);

Muutuja nupuAsend saab siis endale väärtuseks selle, mida protsessor vastava pin'i peal näeb - kui +5V - siis HIGH, kui GND (0V) - siis LOW (HIGH ja LOW on lihtsalt abinimed väärtustele 0 ja 1).


Elektroonika poole pealt tundub kõik lihtne - võtame 5V, ühendame selle lüliti ühele poole ja lüliti teise poole meile meeldiva Arduino digitaalsisendisse. Sulgeme lüliti ja 5V ühendus tekib sisendile. Siin tekib aga üks väike probleem - kui sisend pole kuhugi ühendatud (nuppu ei vajutata), siis on ta nn. ujuv (floating). Ehk vastav elektriline ühendus lõppeb kuskil õhus. Ja õhk juhib alati natukene elektrit. Tulemuseks on, et protsessor hakkab näitama sisendil juhuslike väärtusi - kord LOW, kord HIGH. Nii aga ei saa ju mõõta, kas nupp on suletud või mitte.
Sellise asja vältimiseks kasutatakse sisendi sidumist 0V läbi suure takisti (10kohm või rohkem). Nüüd sisend enam ei uju - LOW on kogu aeg olemas. Kuid see LOW on tagatud väga väikese koguse GROUND ühendusega - nagu vajutatakse sisse lüliti, siis otseühendus +5V pealt varjutab selle GROUND'i täielikult ja sisendi väärtuseks saab HIGH. Vaatame näiteks kraanist vee laskmist - keerates lati ainult külmavee kraani hästi natuke ja seal all oma kätt hoides võib tõesti tõdeda, et vesi on külm. Kui nüüd keerata juurde lõpuni lahti kuumavekraan, siis natuke avatud külmavee kraan midagi ei muuda ja kraanist tulev vesi on kuum.

Skemaatiliselt ja protoplaadil näeb see välja niimodi:




Paneme siia skeemi veel juurde ka ühe led'i, mida saaks vastavalt nupu asendile põlema panna ja ära kustutada:




Ja hästi lihtne testprogramm:

void setup(){
  pinMode(3,INPUT); // pin3 on sisend
  pinMode(7,OUTPUT); // pin7 on väljund
}


void loop(){
  //loe pin3'e väärtus ja muuda pin7 väljund samaks
  digitalWrite(7,digitalRead(3)); 
}


22.11.12

analogWrite'st lähemalt

Mis ja kuidas ja milleks....

analogWrite aktiviseerib siis seda võimaldavatel digitaalväljunditel "pulsi laiuse modulatsiooni" - ehk teeseldakse mingit vahepealset volti - mitte ainult 0 ja 5v mis muidu võimalikud on.

Kuidas seda siis tehakse?
Arduino PWM võbistamise sagedus on ca 500 hz - ehk siis ühes sekundis lülitatakse väljundit sisse ja välja 500 korda. Seega ühe tsükli pikkus on 1000/500=2 millisekundit (üks sekund on teatavasti 1000 millisekundit).

Selle 2 millisekundi jooksul lülitatakse siis väljund sisse ja välja. Nüüd on ainult küsimus, kui suur osa sellest 2ms on veedetud sisselülitatud asendis, kui kaua aega väljalülitatud asendis.

Graafiliselt siis nii:



Siin joonisel on iga rohelise kriipsu vahe 2 millisekundit. Must joon näitab väljundi lülitumist 0 ja 5v vahel.

Tulemuseks on aga see, et väljundisse ühendatud seade (led lamp näiteks) lülitub siis kiirelt sisse-välja. Kui aga see seade on aeglane - näiteks inimsilm seda ledi vaatamas, voltmeeter vmt. - siis saadaksegi tulemuseks väiksem kogust valgust (tumedam led) või voltmeetri puhul näit mis sama suur kui väljundi proportsionaalselt sisselülitatud aeg. Kui kirjutada selline jupp koodi: analogWrite(3, 255/2) - siis voltmeeter näitaks ilusat 2.5V.

20.11.12

analogWrite ja for tsükkel

Tänases Kullo kohtumises õppisime juurde kaks asja: analogWrite ja for tsükkli.

analogWrite(pordi_number, pwm_väärtus);

analogWrite käivitab siis digitaalpordil PWM funktsionaalsuse - ehk väristab väljundit väga kiiresti 0 ja +5 voldi vahel. pwm_väärtus - vahemikus 0 kuni 255 - määrab ära selle, mitu osa iga võnke ajast on sees 0v ja mitu osa 5v. 0 - kogu aeg on sees 0v. 255 - kogu aeg on sees 5v. Ehk iga samm on 1/255%.

Näiteks selline programmijupp:

void setup(){
  pinMode(3,OUTPUT);
  analogWrite(3,20);
}

void loop(){}

paneb siis pin 3 ühendatud ledi põlema 20/255% ajast - ja inimsilmale paistab see üsna tuhmi led lambina.



for tsükkel on siis ette nähtud kontrollitud kordamiseks.

for(mida_ teha_esiteks; mida_kontrollida_iga_samm; mida_teha_enne_järgmist sammu){
  tegevused_mida_korduvalt_teha;
}

Näiteks niimodi:

for(int i=0; i<=255; i=i+1){
  analogWrite(3,i);
  delay(10);
}

Ehk mis siis nüüd tehti:
1) loodi muutuja i ja anti talle väärtus 0
2) viiakse läbi kontroll i<=255 - kui vastab tõele, jätkatakse täitmist. kui ei - siis minnakse edasi peale for() {}'i.
3) täidetakse järjest kõik read for'i {} vahel
4) täidetakse for'i korduse lõpu käsk i=i+1
5) pöördutakse tagasi punkti 2

Reaalselt täitis siis program sellised käsud:
analogWrite(3,0);
analogWrite(3,1);
....
analogWrite(3,255);

Ehk ledi heledus muutus täiesti väljas asendist kuni maksimaalse heleduseni.

Päris programmina midagi sellist:


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

void loop(){

  for(int i=0; i<=255; i=i+1){
    analogWrite(3,i);
    delay(10);
  }


  for(int i=255; i>=0; i=i-1){
    analogWrite(3,i);
    delay(10);
  }


}

Siin siis pannakse pin 3 ühendatud led aegamööda täisheledaks ja jälle aegamööda tagasi väljalülitatuks.

17.11.12

Kodutöö/projekt #05 - K.I.T.T. tuled

Kunagi jooksis teles selline tore sari nagu Knightrider. Seal oli selline äge, isemõtlev auto nimega K.I.T.T. Ja kit'i kõige meelejäävam osa oli kapoti kaane all edasi-tagasi jooksev ledide rivi.
Selline:


Esimene tõsisem projekt olekski siis järgi ehitada selline lahendus. 7 ledi ühendatuna arduino külge ja nende peal selline jooksueffekt.

Kodutöö #04 - Sissehitatud ledide vilgutamine

Meil käigusolevatel kontrolleritel on kaks sisseehitatud ledi - ühendatud pinnidele D7 ja D9. Koduseks mõtlemiseks olekski siis kirjutada ja saada tööle programm, mis neid lede vaheldumisi vilgutaks.
Näiteks nii - 1 sek põleb esimene led, nagu kustub hakkab põlema teine led, mis põleb 0.5 sekundit. Ja nii koguaeg ringiratast.

16.11.12

Arduino esmased päris sammud

Proovin siin nüüd lahti kirjutada ja seletada, mida ja kuidas tehtud sai.
Tagasiside oleks eriti teretulnud...


Kogu robotiehituse aluseks on kaks poolt - mehhaanika ja elektroonika. Valitud sai alustamiseks roboti juhtimiseks Arduino platvorm - õppimiseks/lastele kõige sobivam.
Oma kõige lihtsamas seletuses on tegemist väga väikese ja lihtsa arvutiga, millel ei ole ekraani, klaviatuuri jmt. Olemas on ainult protsessor (aju) ise ja kogus väga lihtsaid lüliti moodi sisendeid-väljundeid.

Robotiringis kasutame sellist kontrollerit nagu Olimexino-32U4. Tegemist on siis spetsiaalselt robotiehituse jaoks kohandatud Arduino Leonardo klooniga.

Välja näeb tema selline:



Ühenduste seletused:
Toide
Reset - kui siit ühendada lühiajaliselt kokku GROUND'iga (ehk massiga, mättaga, miinusega), teeb kontroller endale reseti (algkäivituse).
3v3 - siit saab vajadusel plaadil oleva väikese regulaatori kaudu võtta tarbimiseks +3.3 volti. Praktiliselt ei kasutata.
Ground - mass, miinus, mätas. Kõik ground ühendused on omavahel võrdsed ja kokku ühendatud.
VIN - välise toite pluss poole ühendus - 7-12v.

Analoogsisendid
A0 kuni A5. Need ühendused mõõdavad sissetuleva voolu + volte vahemikus 0 kuni 5v. Kui rohkem volte sisse lasta, võib kontroller rikki minna. Vahemik 0-5v on jagatud 1024 väärtuseks (10biti) - ehk siis 0v puhul on programmis numbriliseks väärtuseks 0. 5v puhul aga 1024.

Digitaal sisendid - väljundid.
Digitaal tähendab seda, et kas vool on 0V (ground) või +5V. Kui pesale programmis öelda, et tegemist on väljundiga, siis saab siit voolu võtta. Kui öelda, et tegemist on sisendiga, siis voolu mõõta. Kuid sisse ja välja käib siis ainult kaks võimaliku taset - kas 0V või 5V. Programmi koodis nimetatakse neid tavaliselt niimodi: 0v - LOW, 5v - HIGH.
Digitaalsisendeid ja väljundeid on kokku 14 (tegelikult küll on plaadil neid natukene veel peidus).

Väga paljudel digitaal sisenditel-väljunditel on kanda mitu funktsiooni.

PWM asub väljunditel 3,5,6,9,10,11,13 (ja tegelikult ka 12 vajadusel). PWM - pulse width modulation. Tegemist siis sellise väljundreziimiga, kus toimub hästi kiire lülitamine 0v ja 5v vahel. Programselt saab määrata, kui mitu % ajast on sees 5v ja kui mitu % ajast on 0v. Kuna värin on väga kiire, siis välja paistab see justkui tuleks väljundist näiteks 2.5V (kui 50% ajast on 0V ja 50% ajast on 5V). Kasutatakse led tulede heleduse reguleerimiseks, mootorite juhtimiseks jmt.
Analoogsisend digitaal ühendustel - 32u4 protsessor toetab ka analoogsisendeid D4, D6, D8, D9, D10 ja D12 pesades (A6 kuni A11).

Digitaalväljundite juures on olemas ka veel lisa GROUND ühendus ja kommunikatsiooniks kasutatavad SDA ja SCL pesad (füüsiliselt on tegu samade ühendustega mis D2 ja D3).

LED1 ja LED2
Plaadi servas on kaks ledi esmaseks testimiseks - led1 on roheline ja ühendatud porti D7. Led2 on kollane ja ühendatud porti D9.

Arduino seadistamine
Esimese asjana tuleks kodus tööle saada kõik hädavajalik. Arduino Leonardo vajab windows'i keskonnas esmalt draiveri installeerimist - ennem temaga suhelda ei saa.
Kõigepealt laadige alla Arduino 1.0.2 tarkvara (kellel see veel tegemata). Asub siin: http://arduino.googlecode.com/files/arduino-1.0.2-windows.zip
Saadud arhiivis on kataloog arduino-1.0.2 - tõstke see c: ketta ruutkataloogi (mitte program files või my documents või veel kuhugi muusse kohta). Kui arduino tarkvara on olemas ja töötab, siis ühendage usb juhtmega kontroller oma arvuti külge. Kui nüüd hüppab lahti teade, et vaja on draiverit. siis tuleb Windowsile ette näidata kust draiver võtta - kohaks on siis arduino kataloogi sees olev drivers kataloog.
Kui kõik läks õnnelikult peab Arduino tööristaad menüüs Jadaport osas tekkima juurde uus com port - märkige see aktiivseks.
Seejärel valige Tööristad->Plaat ja siit Arduino Leonardo.
Nüüd võiks minna Fail->Näited->01.Basics ja siit valida Blink.
Muutke selline rida:
int led = 13;
ümber reaks
int led = 7;
ja prooviga kood kompileerida ja protsessorile laadida (töörista ribal nupp ->). Esimesel katsel võib see takerduda ja windows hakkab midagi draiveritega uuesti tegema. Teisel katsel peak juba kõik toimima. Kui kõik läks hästi, siis hakkab "Väline toide" pesa juures väike led vilkuma.
Kogu arduino keskkonna paigaldamise põhjaliku juttu loe siit:  http://arduino.cc/en/Guide/Windows

Arduino programmeerimine - algus
Kõige lihtsam, mitte midagi tegev Arduino programm näeb välja selline

void setup(){
}
void loop(){
}


Mis siis on mis?
Luuakse kaks kohustusliku funktsiooni, nimedega setup ja loop. Mis on funktsioon - jupp programmi, mida saab mingi nime alusel korduvalt välja kutsuda.

Funktsioonil on olemas väljund ja sisendid:

väljundtüüp funktsiooninimi (sisendid_kui_on){
  mingid_tegevused_kui_on;
}

void (inglise keeles tühjus) on selline tagastustüüp, et mitte midagi ei tagastata.
funktsiooni nime taga tühjad sulud - ka mingeid sisendeid ei oodata.
{} - siia vahele kirjutatakse funktsioonis toimuvad tegevused (kui on). Iga tegevusrida lõppeb tavaliselt semikooloniga.


Mida need kaks kohustusliku funktsiooni siis teevad:
setup - kutsutakse välja mikrokontrolleri käivitumisel ühe korra. Siia käivad siis kõik baas seadistused - kuidas peaks kontroller käituma.
loop - see funkstioooni kutsutakse välja pidevalt ja lõpmatuseni (nn. igavene ring). Kohe kui jõutakse lõpuni, alustatakse jälle otsast.

Esimene programm


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


pinMode - määrab selle, millist tööd digitaalpesa (pin) teeb - kas väljund (OUTPUT) või sisend (INPUT). Esimene parameeter (7) näitab seda, millisest ühendusest käib jutt - siin siis füüsiline ühenduspesa D7. Ehk siis programmi setup osas öeldakse, et D7 peab olema väljund.


void loop() {
  digitalWrite(7, HIGH);
  delay(1000);               
  digitalWrite(7, LOW);    
  delay(1000);
}


digitalWrite - muudame digitaalväljundi kas HIGH või LOW'ks. Vastavalt siis kas digitaalpesasse on ühendatud +5V või GROUND(0V).
delay - peata programmi töö nii mitmeks millisekundiks. (1000 millisekundit on 1 sekund).
loop osas siis lülitatakse 7 port sisse, oodatakse sekund, lülitatakse välja, oodatakse sekund - ja tagasi algusesse. Selline programm vilgutab plaadi peal kaasasolevat port 7'sse ühendatud ledi - 1 sekund põleb, 1 sekund on väljas.





14.11.12

Arduino'd (kloonid) on kohal

Mikrokontrollerid (Arduino Leonado kloonid) saabusid värskelt UPS kulleriga. Seega järgmisel korral saab juba hakata vähe kavalamat elektroonikat kokku panema. Kontrollerid said valitud spetsiaalselt robotiehituse tarbeks, tööstuslikul tasemel komponentidega - väiksem müra, sisse ehitatud akude laadimine, suurem veataluvus, sisemiste ledide lahtiühendamise võimalus, lisa pinheaderid standardvahedega jmt.

Robotex 2012

Tuletan meelde,et Instruteci näituselt võiks läbi käia ja planeerida aja vast suurima eesti robotiürituse külastamiseks ROBOTEX 2012.
Robotivõistlus toimub 23-25. nov. 2012.a. Tallinna Tehnikaülikooli spordihoones. Sissepääs on tasuta. Ajakava ja info töötubade kohta leiab lehelt www.robotex.ee Võistlused toimuvad mitmetes klassides ja aladel. On Lego robotid ja joonejälgimise robotid ja jalgpall. Valige mis meeldib, sest kolm päeva võib olla liiga kurnav. Kullo sel aastal ei osale aga otsime väiksemaid võistlusi.

Kodutöö #03 - Kaks lülitit ja led'i

Sedakorda sai Kullos lisatud lihtsale põlevale ledile juurde ka lüliti. Asi suht lihtne ja kõik said hakkama. Suuri probleeme aga tekkis siis, kui ülessane sai tehtud natuke keerulisemaks. Lõplik ülesanne sai selline: kaks lülitit ja kaks led'i. Ühest lülitist süttib ainult üks led, teisest lülitist süttivad mõlemad ledid korraga.
Koduseks mõtisklemiseks ja järgijoonistamiseks (Fritzing) siis Kullos tehtud lahendus. Tõstke Fritzingus komponente protoplaadile ja vaadake skeemiaknas mis ja kuidas juurde tekib ja millega ühendatud on. Katsuge lõpuks valmis saada sama skeem ja protoplaadi paigutus nagu ise Kullos tegite.

Skeem:



Protoplaat:



12.11.12

Arduinod ja raha

Eelmisel tunnil said kõik kohalolijad juba kätte protoplaadid ja valikus lede/takisteid ning terve hulk komponente jäi veel kasti oma järge ootama. Nüüdseks on tellitud ja makstud ka robotite ajude eest. Kui kõik läheb hästi, siis on nad teisipäevaks kohal, kui nii hästi ei lähe siis ilmselt neljapäevaks (UPS transport kuskilt kesk-euroopast).  Kellel on juba endal Arduino olemas (ükskõik milline mudel), see otse loomulikult endale veel ühte juurde ostma ei pea.

Seega esimese hooga korjame raha niimodi
Arduino ja komponendid - 40 EUR
Ainult komponendid - 20 EUR

Palun olge nii tublid ja tooge raha esimesel võimalusel Maidu kätte.

8.11.12

Kodutöö #02 - Fritzingus väike skeem

Tere,

Siit tuleb kodune ülesanne nädalavahetusel nokitsemiseks....

Teha Fritzingu programmis järgi see elektroonikaskeem mis Kullos kõigil tehtud ja tööle sai.
Valmis asi peaks nägema välja umbes selline:

Breadboard vaates:


Schematic vaates:


Katsuge aru saada, kuidas tõsta komponente protoplaadile, kuidas neid keerata ja nihutada. Kuidas muuta LED'idel värvi. Ja kuidas tõmmata juhtmeid ning muuta juhtmete värvi.

Abiks on tutvumine Fritzingu veebilehe õppeosaga: http://fritzing.org/learning/
Ma proovin ka nädalavahetusel ühe õppevideo toota, kuidas seda kõike teha.

akaver

7.11.12

Kodutöö #01 - Arduino/Fritzing tarkvara paigaldamine

Tere,

esimene Arduino õppetund (sissejuhatus) sai Kullo arvutiklassis läbi viidud. Tutvutud sai vajalike tarkvaravahendite paigaldamisega ja ka esimese koodijupiga katsusime tutvust teha.

KODUNE ÜLESANNE
Koduses arvutis (või kellel on lapsele anda mõni vana laptop kaasa, siis selles)  paigaldada Arduino ja Fritzing programmid.


Mis on mis?
Arduino tarkvara on selleks, et programme kirjutada oma robotile. Fritzing on selleks, et oma robotile vajalik elektroonika kokku joonistada arvutis ja tehtud lahendused ka tuleviku tarbeks salvestada.


Arduino
Eeldatavalt on enamikel tegemist Windows arvutitega, seega vajaminev asi on:
http://arduino.googlecode.com/files/arduino-1.0.2-windows.zip
Kui miski muu platvorm kui windows, siis vaata siia: http://arduino.cc/en/Main/Software
Arduino tarkvara ei oma paigaldusprogrammi - kuna tegemist on javas kirjutatud lahendusega, siis tuleb  allatõmmatud zip arhiivist lihtsalt kataloog arduino-1.0.2 tõsta ümber c: ketta ruutkataloogi.
Võiks veel luua shortcut'i (lühitee) seal kataloogis olevale arduino.exe'le ja selle näiteks taskbarile (tegumirida) lisada - nii on mugavam käivitada.

Esimene Arduino programm
Kõige lihtsam, mitte midagi tegev arduino programm on selline

void setup(){
}

void loop(){
}

Kui need read on Arduino keskkonnas kirja saanud, siis peaks vajutama esimest väikest linnukesega ikoonikest - see kontrollib, kas kirjutatud programmikood on korrektne. Kui keskkonna alla serva ei ilmu punaseid veateateid vaid kirjad
Compiling sketch, Done Compiling, Binary sketch size:...
siis on läinud kõik õieti.


Fritzing
Windowsi versiooni saab siit:
http://fritzing.org/download/0.7.10b/windows/fritzing.2012.10.16.pc_v2.zip
Mingi muu platvorm kui windows: http://fritzing.org/download/ 
Jutt kõik sama mis Arduino puhulgi - lihtsalt tõsta zip faili sees olev kataloog c: ketta juurkataloogi.
Ja proovida Fritzing.exe tööle panna - kui pilt tuleb ette, on kõik hästi.


Nii Arduino kui ka Fritzing on kirjutatud Java nimelises keeles-keskonnas. Enamikel on see kindlasti arvutis olemas, kellel mitte, siis java saab endale siit: http://www.java.com/en/download/index.jsp


30.10.12

Arduino koolitus

Novembrist on plaanis alustada Arduino koolitusega. Tegu on ülikoolides kasutatava universaalse robotiaju platvormiga. Õpetajaks oleks külalisena Andres Käver ja mina oleksin abiõpetaja.
Kuna õpilased sooviksid roboteid omale siis programmeeritav aju ja paar lisavidinat jääksid õpilastele ning neid saaks kodus edasi kasutada. Eeldatav hind tuleks mitte üle 45 EUR-i. Andres Käver lisab siia kommentaaridesse mis selle raha eest saab. Hetkel on Kullol 1 sellele sarnanev komplekt. Ootan lastevanemate ja õpilaste kommentaare kas asi huvitab.
Lisan siia Andrese teksti ja selgituse. Lisaks katsusime asja organiseerida nii, et Ta saab otse siia kirjutada selgitusi ja juhendeid.

Kullo robotiringi robotiaju õpetus
Robotid koosnevad üldjoones kahest poolest - mehaaniline pool ja elektrooniline osa. Ehk siis keha ja aju. Mehaanilise osa ehitus robootikas on suhteliselt arusaadav kõigile - inimkond on sellega tegelenud juba pikemat aega - aastatuhandeid. Ja samuti on järjest rohkem näha ka seda, et robotiehituses võetakse aluseks juba mõni olemasolev lahendus - piisab ainult vastavatest arvutijoonistest ja kohalik CNC firma toodab õiged tükid. Oluliselt probleemsem on aga olukord elektroonika/tarkvara poolel - siin on praktika palju lühem ja iseeneslik süsteemne mõistmine palju raskem.
Üritakski selles elektroonika ja tarkvara osas siis robotiringi lapsi nn ”otsa” peale aidata ja mõne lihtsama “robotiga” valmis saada.
Enimkasutatav platvorm robootika õppes on ARDUINO. Esimeses väga lihtsas seletuses on tegemist väga väikese arvutiga (7*5cm), millel puudub ekraan ja klaviatuur. Olemas on aga hulk väljund lüliteid ja sisendeid. Ehk siis - ühest otsast saab mõõta voolu (volte) ja teisest otsast kõikvõimalike asju sisse-välja lülitada. Kes tahab täpsemalt lugeda ja aru saada, võiks tutvuda Arduino kodulehega: http://arduino.cc
Seda sama ARDUINO’t (täpsemalt küll siis tema protsessori osa) kasutatakse laialdaselt igapäevases olmeelektroonikas - igaühel teist on kindlasti kodus mõni seade sama seeria protsessoriga ja igaühe autos on neid kohe kindlasti hulgim. Ühes keskmises autos oli neid 5-6 aastat tagasi ca 150 tk, praeguseks ilmselt veelgi rohkem.
Me sooviksime, et igal lapsel oleks oma vastav tehnika endal olemas - ja koos sellega ka kodused ülesanded ja vanematega üheskoos mõtisklemine ja tegemine.
Mida vaja on omandada:
Arduino baasplaat
Usb juhe Arduino programmeerimiseks
Prototüüpimisplaat (plaat, kus saab kergelt ja uuesti lahtivõetavalt teha elektroonikakomponentide ühendusi ja testimisi)
Ühendusjuhtmed (kahe otsaga juhtmejupid, millega protoplaadil voolu ühest kohast teise viia)
(https://www.adafruit.com/products/153)
Elektroonikakomponentide valik (takistid, lülitid, led’id, potentsiomeetrid, transistorid, valgussensor, jmt)
Esimeses lähenduses on eelarve sellele projektile ca 45-50 eurot lapse kohta. Kullol endal (Tallinna linnal) selleks kahjuks vahendid puuduvad. Arduino õpe ise on tasuta.
Mida veel vaja on:
Kodune arvuti ja internet. (Võimalusel sülearvuti, millega saaks tulla-minna Kullosse. Piisab ülivanast netbookist, aku toimivus pole oluline. Sobivad kõik suuremad platvormid kus on java tugi - Windows, OSX, Linux)
Vanemate poolne tugi - aidata lapsel nokitseda ja vajadusel tõlkida inglise keelt. Osta vajadusel lapsele juurde mõni väike elektroonikakomponent - enamus baaskomponente maksab mõni sent. Kallimad integreeritud komponendid mõne euro.
KOKKUVÕTTEKS
1) ca 50 eurot per laps
2) Raha korjaks siis, kui enamik on nõus ja vajalikud osad kõik kohal.
Projektid, mida plaaniks teha
Jõulud - teeme elektroonilise miniatuurse kuuse, vilkuvate led tuledega. Saab jõulude ajal ette näidata.
Mõtetu karp - karp mille servas lüliti. Kui lülitad lüliti sisse, avaneb karbikaan, välja tuleb kang ja lükkab lüliti välja tagasi ning kang poeb karpi tagasi peitu.
Robotautomudel - programmeeritav, etteantud rada läbiv iseliikur.
Joonejälgimisrobot - liikuv robot, mis valgel pinnal sõidab mööda etteantud musta joont.
Tunnid toimuks nii robotiringi klassis kui ka Kullo arvutiklassis.

29.10.12

Uus grupp E ja K

Kuna õpilasi on ühe grupi jaks liiga palju on võimalus valida teine grupp tundide ajaga E ja K 18.00-19.30. Hetkel on seal vähem õpilasi ja nendega jõuab individuaalselt tegeleda. Ülemineku soovist palun teatada mait@kullo.ee või otse õppeosakonnale oppeinfo@kullo.ee . Uus grupp alustab 5. novembrist.

Kahjuks uus grupp ei komplekteerunud!

23.10.12

Instrutec näitus


14. - 16. novembril 2012.a toimuvad Eesti Näituste messikeskuses 18. Tallinna rahvusvaheline tootearendus-, tootmistehnika-, tööriista-, allhanke- ja tehnohooldusmess ”Instrutec 2012” ning 10. puidu- ja saetööstuse tehnoloogia, masinate, seadmete, tööriistade ja puittoodete mess ”Puidutehnoloogia 2012”.
Infot peaks saama lehelt http://www.fair.ee/instrutec/ aga hetkel on seal segu eelmise aasta andmetest.
Robotiringi õpilastel kindlasti mõtet läbi astuda. Eelmiste aastate külastustega õpilased suhteliselt rahul. Nägid tööstusroboteid ja CNC tööpinke.