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:42] 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 96: Line 102:
  
 ==Harjutus 2.1== ==Harjutus 2.1==
-Koosta programm, mis paneb roboti tsükliliselt ruudukujulist trajektoori sõitma. Lahendamisel esmal panna robot otse sõitma ja seejärel leida 90 kraadise pöörde tegemiseks kuluv viide (delay_ms väärtus)+Koosta programm, mis paneb roboti tsükliliselt ruudukujulist trajektoori sõitma. \\ 
 +Lahendamisel tuleb esmalt panna robot sõitma otse ja seejärel leida 90 kraadise pöörde tegemiseks kuluv viide (delay_ms väärtus). Ülesande lahendus tuleneb mõlema liikumisviisi kombineerimisest.
 ==Harjutus 2.2== ==Harjutus 2.2==
-Koosta programm, mis paneb roboti tsüklilisel 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
  
 ==== Näide 3 ==== ==== Näide 3 ====
Line 111: 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 127: 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 169: 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.1446637370.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