Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:projects:3pi:programming [2015/11/04 11:53] kaupo.raidet:projects:3pi:programming [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== 3pi roboti programmeerimine ====== 
- 
-**Vajalik tarkvara** 
- 
-  * Atmel Studio 6 
-  * Pololu AVR Development Bundle 
- 
-{{:et:projects:3pi:keskkond.png?600|Atmel Studio 6.2}} 
- 
-~~PB~~ 
-===== Tarkvara paigaldamine ja seadistamine ===== 
- 
-/*{{ :et:projects:3pi:teegi_headerid.png?340|}}  */ 
-Enne programmeerimist tuleb laadida alla vajalik tarkvara. Atmel Studio on saadaval [[http://www.atmel.com/tools/atmelstudio.aspx|Atmel kodulehel]] või [[https://www.pololu.com/docs/0J51/3.1|Pololu kodulehel]]. Pololu lingi alt leiab ka Pololu AVR Development Bundle lisapaki, mis sisaldab programmatori draivereid ja teeke 3pi roboti programmeerimiseks. Esimesena tuleb paigaldada Atmel Studio 6 ja seejärel Pololu AVR Development Bundle. Vales järjekorras tarkvara paigaldamisel ei hakka 3pi teegid toimima. Lisainfo tarkvara paigaldamise osas erinevatele operatsioonisüsteemidele [[https://www.pololu.com/docs/0J51|Pololu kodulehel]].  
-Enne kasutamist tuleb tarkvara seadistada. Esmalt tuleb avada Atmel Studio 6 ja teha uus 3pi projekt (ATmega328p mikrokontroller). Seejärel ülevalt menüüribast valida //Build->Build Solution//. Kui kõik oli korrektselt seadistaud, siis peaks paremal //Solution Explorer// aknas //Dependencies// kausta alla tekkima teekide loetelu. Edasi tuleb seadistada programmaator, et see töötaks Atmel Studio-ga. Selleks eelnevalt programmaator ühendada arvutiga ja avada ülevalt menüüribast //Tools->Add Target//. Avanevas aknas tuleb valida: 
-  * Select Tool->STK500 
-  * Select Serial Port->COMX (X asemel on number, mis on igal arvutil erinev) 
-Kui saadaval on mitu COM port-i, siis tuleb Windows //Device Manager->Ports(COM & LPT)// alt uurida, milline on //"Pololu USB AVR Programmer Programming"// port. 
-Programmaator on pärast //Apply// nupu vajutamist seadistatud. 
- 
 ===== Roboti programmeerimine ===== ===== Roboti programmeerimine =====
  
Line 37: Line 17:
  
 ===== Programmi koostamine ===== ===== Programmi koostamine =====
 +
 +Kõik programmid peale esimese on koostatud Pololu teeki kasutades. Täpsema info saamiseks on soovituslik põhjalikumalt teeki uurida, et paremini 3pi roboti funktsionaalsust ära kasutada. Teegi kirjeldus on saadaval [[et:projects:3pi:library|siit]]. Harjutuste puhul tuleb lisaks näiteprogrammidele rakendada loogilist mõtlemist, et lahenduseni jõuda. näiteprogrammid ei sisalda kõiki harjutustes vajaminevaid teegi funktsioone.
 +
 +==== Test ====
 +Proovida antud programmi, et veenduda roboti töökorras.
 +<code c>
 +#include <pololu/3pi.h>
 +
 +int main()
 +{
 +
 + play_from_program_space(PSTR(">g32>>c32"));  // Play welcoming notes.
 +
 + while(1)
 + {
 + // Print battery voltage (in mV) on the LCD.
 + clear();
 + print_long(read_battery_millivolts_3pi());
 +
 + red_led(1);     // Turn on the red LED.
 + delay_ms(200);  // Wait for 200 ms.
 + red_led(0);     // Turn off the red LED.
 + delay_ms(200);  // Wait for 200 ms.
 + }
 +}
 +</code>
  
 ==== Näide 1 ==== ==== Näide 1 ====
Line 101: Line 107:
 Koosta programm, mis paneb roboti tsükliliselt kaheksakujulist trajektoori sõitma.\\ Koosta programm, mis paneb roboti tsükliliselt kaheksakujulist trajektoori sõitma.\\
 Ülesande lahendamisel saab osaliselt kasutada eelmise harjutuse koodi. Ülesande kontrollimiseks võib roboti külge kinnitada markeri, mis paberil sõites joonestab liikumistrajektoori.  Ülesande lahendamisel saab osaliselt kasutada eelmise harjutuse koodi. Ülesande kontrollimiseks võib roboti külge kinnitada markeri, mis paberil sõites joonestab liikumistrajektoori. 
 +
 ==== Näide 3 ==== ==== Näide 3 ====
  
Line 112: Line 119:
   while(1)   while(1)
   {   {
- //Analoog-digitaal muunduri seadistamine 10bit resolutsioonile ehk tagastab väärtusi 0-1023+ //Analoog-digitaal muunduri (ADC) seadistamine 10bit resolutsioonile ehk tagastab väärtusi 0-1023
         set_analog_mode(MODE_10_BIT);         set_analog_mode(MODE_10_BIT);
         // Potentsiomeetri (TRIMPOT) väärtuse lugemine ja kirjutamine muutujasse         // Potentsiomeetri (TRIMPOT) väärtuse lugemine ja kirjutamine muutujasse
Line 128: Line 135:
  
 ==Harjutus 3.1== ==Harjutus 3.1==
-Kirjutada programm, mis kuvab LCD-le post ("|") sümboleid proportsionaalselt analoog sisendile ehk 0 korral mitte ühtegi ja +Koostadaa programm, mis kuvab LCD-le post ("|") sümboleid proportsionaalselt analoog sisendile ehk 0 korral mitte ühtegi ja vääärtuse kasvades kuni LCD ühe rea lõpuni.\\ 
 +Lahendamisel alustada ühe post sümboli kuvamise harjutamisest. Seejärel leida maksimaalne postide arv ühele real ning konverteerida ADC väärtus vastavalt saadud arvule.Proportsionaalseks kuvamiseks on soovitav koostada "for" lause.
 ==Harjutus 3.2== ==Harjutus 3.2==
 +Koostada programm, mis kuvab LCD-l vasakult paremale lõpmatult liikuvat teksti. Paremal ära kadunud sümbolid tekivad uuesti vasakule algusesse.\\
 +Lahendamisel kombineerida erinevaid tsüklilisi lauseid.
  
  
-~~PB~~+<pagebreak>
 ==== Näide 4 ==== ==== Näide 4 ====
  
-Nuppude ja valjuhääldi kasutamine+Nuppude ja piezo heligeneraatori kasutamine
 <code c> <code c>
 // Pololu teekide lisamine // Pololu teekide lisamine
Line 170: Line 180:
  
 ==Harjutus 4.1== ==Harjutus 4.1==
 +Koostada programm, mis loendab kõigi kolme nupu vajutusi ja kuvab need LCD peale. Proovida erinevaid nupu lugemise funktsioone. Mis eripära on debounce-iga nupu lugemise funktsioonil ja miks see hea/halb on?\\ 
 +Nuppudel on kaks olekut: alla vajutatud (pressed) ja lahti lastud (released). Teegi funktsioonidel on kasutatud mõlemaid olekuid. Seega funktsiooni kasutamisel tuleb põhjalikult enne loogika läbi mõelda.
 ==Harjutus 4.2== ==Harjutus 4.2==
 +Koostada programm, mis mängib robotil oleva piezo heligeneraatoriga meloodiat. Meloodia hakkab mängima pärast nupu A vajutamist ja nupu C vajutamisel lõpetab mängimise\\
 +Lahendamisel on soovitav kasutada "play(const char* sequence)" teegi funktsiooni.
 +
 +==== Näide 5 ====
 +
 +Jooneandurite kalibreerimine ja lugemine
 +<code c>
 +
 +//Teegi lisamine
 +#include <pololu/3pi.h>
 +
 +int main()
 +{
 + //Andurite väärtuste salvestamiseks täisarvude massiv
 + unsigned int sensors[5];
 +
 + // 3pi roboti andurite lugemise seadistamine
 + // Kasutab väärtust 2000, mis määrab aja, mille jooksul võetakse üks lugem
 + // Vastavalt 2000*0.4 us = 0.8 ms, 20 MHz juures töötaval mikrokontrolleril
 + pololu_3pi_init(2000); 
 +
 +     // Ootab nupu vajutamist
 +     wait_for_button_press(BUTTON_A);
 +     delay_ms(1000); //viide 1 sekund
 + print("Calibrat"); //Kirjuta LCD peale, et käimas on kalibreerimine
 + //Võtab kalibratsioonimõõtmise iga 100 millisekundi tagant
 + while(!button_is_pressed(BUTTON_C)){
 + calibrate_line_sensors(IR_EMITTERS_ON);
 + delay_ms(100);
 + }
 +
 +    while(1)
 + {
 + // Loeb andurite väärtused massiivi ja arvutab välja positsiooni
 + unsigned int position = read_line(sensors,IR_EMITTERS_ON);
 +
 + // Kuvab arvutatud positsiooni väärtuse, mis jääb vahemikku 0 - 4000
 + // Väärtus on 0 kui ainult kõige vasakpoolsem andur näeb joont
 + // Väärtus on 4000 kui ainult kõige parempoolsem andur näeb joont
 + clear();
 + print_long(position);
 + delay_ms(100);
 + }
 +}
 +
 +</code>
 +
 +==Harjutus 5.1==
 +Koostada programm, mis kalibreerib roboti iseseisvalt. Iseseisev kalibreerimine annab stabiilsema tulemuse.
 +==Harjutus 5.2==
 +Koostada programm, milles kontrollitakse piezo heligeneraatori sagedust jooneanduriga.
 +
  
  
et/projects/3pi/programming.1446637989.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0