{"id":311,"date":"2012-12-05T09:02:42","date_gmt":"2012-12-05T09:02:42","guid":{"rendered":"http:\/\/www.ljudmila.org\/~savskib\/?p=311"},"modified":"2025-01-04T22:11:22","modified_gmt":"2025-01-04T20:11:22","slug":"arduino-programming","status":"publish","type":"post","link":"https:\/\/www.turborebop.net\/?p=311","title":{"rendered":"Programiranje za arduino"},"content":{"rendered":"<p>Programsko okolje in jezik <a href=\"http:\/\/www.arduino.cc\/\" target=\"_blank\" rel=\"noopener\">Arduino<\/a> je nastal na osnovi odprtokodnih razvojnih orodij \u2013 na platformi za programiranje mikrokontrolerjev <a href=\"http:\/\/wiring.org.co\/\" target=\"_blank\" rel=\"nofollow noopener\">Wiring<\/a>, osnova za razvojno okolje pa je bil <a href=\"http:\/\/www.processing.org\/\" target=\"_blank\" rel=\"nofollow noopener\">Processing<\/a>.<\/p>\n<p><a href=\"http:\/\/www.arduino.cc\/\" target=\"_blank\" rel=\"noopener\">http:\/\/www.arduino.cc\/<\/a><br \/>\n<a href=\"http:\/\/wiring.org.co\/\" target=\"_blank\" rel=\"noopener\">http:\/\/wiring.org.co\/<\/a><br \/>\n<a href=\"http:\/\/www.processing.org\/\" target=\"_blank\" rel=\"noopener\">http:\/\/www.processing.org\/<\/a><\/p>\n<p>Osnovna paradigma je odprtokodnost, kar pomeni da se vseskozi ohranja filozofija dostopnosti izvorne programske kode in tudi samega hardverja \u2013 samoizgradnje naprav. Raz\u0161irjenost platforme je pripomogla, da je nastalo veliko \u0161tevilo razvojnih centrov, ki nudijo dodatne sestavne dele in \u0161irijo filozofijo prostega dostopa do znanja. Tudi mi bomo seveda to paradigmo ohranjali.<\/p>\n<p>Za za\u010detek potrebujemo name\u0161\u010deno programsko opremo, ki jo dobimo na osnovnem naslovu:<\/p>\n<p><a href=\"http:\/\/arduino.cc\/en\/Main\/Software\" target=\"_blank\" rel=\"noopener\">http:\/\/arduino.cc\/en\/Main\/Software<\/a><\/p>\n<p>Za uporabo arduina kot MIDI sekvencer (<strong>M<\/strong>usical <strong>I<\/strong>nstrument <strong>D<\/strong>igital <strong>I<\/strong>nterface) bomo potrebovali \u0161e nekatere program\u010dke:<\/p>\n<p>&#8211; MIDI Yoke je softverski prenosnik MIDI podatkov med ra\u010dunalni\u0161kimi programi \u2013 <a href=\"http:\/\/www.midiox.com\/myoke.htm\">http:\/\/www.midiox.com\/myoke.htm<\/a><br \/>\n&#8211; Serial MIDI je program\u010dek, ki pretvori MIDI podatke iz USB serijskega priklju\u010dka iz arduina za uporabo za MIDI programe &#8211;\u00a0 <a href=\"http:\/\/spikenzielabs.com\/SpikenzieLabs\/Serial_MIDI.html\" target=\"_blank\" rel=\"noopener\">http:\/\/spikenzielabs.com\/SpikenzieLabs\/Serial_MIDI.html<\/a><br \/>\n&#8211; ali pa Hairless MIDI je softverski pretvornik MIDI podatkov iz USB priklju\u010dka \u2013 <a href=\"http:\/\/projectgus.github.com\/hairless-midiserial\/\" target=\"_blank\" rel=\"noopener\">http:\/\/projectgus.github.com\/hairless-midiserial\/<\/a><\/p>\n<p>Za druge uporabe \u2013 na primer branje podatkov iz arduina \u2013 lahko uporabimo \u017ee nekatere druge programe, ki so namenjeni interaktivni multimediji:<\/p>\n<p>&#8211; Pure Data (in 3D grafi\u010dno okolje GEM)<br \/>\n&#8211; Max\/ MSP<br \/>\n&#8211; itd.<\/p>\n<p>Bistven del platforme arduino je bolj \u010dlove\u0161ki pristop k programiranju mikrokontrolerja. Programiranje je namre\u010d prene\u0161eno na \u010dloveku bli\u017ejo &#8211; vi\u0161jo programsko raven, kot je bilo to pred tem. V\u010dasih se je sicer potrebno spustiti ni\u017eje, vendar ne prav pogosto. Ob ukazu za zapis programa v mikrokontrolerjev pomnilnik se vi\u0161jejezi\u010dni program pretvori\/ kompilira v strojni jezik.<\/p>\n<p>Programiranje na platformi arduino poteka zelo podobno kot pri ve\u010dini sodobnih programskih jezikov (c++, php, java,&#8230;). Osnovne funkcionalnosti so zajete (osnovne knji\u017enice) in se z njimi ni potrebno ukvarjati. V\u010dasih potrebujemo kak\u0161ne dodatne funkcionalnosti, ki so pogosto zajete v dodatnih knji\u017enicah. Te potem vklju\u010dimo s funkcijo &#8220;include()&#8221;.<\/p>\n<p>Osnovni elementi programa za arduino so:<br \/>\n&#8211; komentar<br \/>\n&#8211; vklju\u010ditev morebitnih dodatnih knji\u017enic<br \/>\n&#8211; definicije globalnih konstant in spremenljivk<br \/>\n&#8211; osnovna setup() funkcija, v kateri dolo\u010dimo osnovne in za\u010detne pogoje<br \/>\n&#8211; osnovna loop() funkcija, v kateri se cikli\u010dno izvaja program<\/p>\n<pre lang=\"arduino\">\/\/ komentar v tej obliki mora biti v eni sami liniji, vrstici\r\n\r\n\/*\r\n - Cirkulino = Arduino Sequencer - rotary LED chaser with some randomization\r\n - tale komentar je lahko v ve\u010d vrsticah\r\n*\/\r\n\r\n\/\/ vklju\u010ditev dodatne knji\u017enice\r\n\/\/ add interrupt interval library\r\n#include \r\n\r\n\/\/ definiraj globalno konstanto - je ne moremo spreminjati ali ponovno definirati\r\n\/\/ a global constant - cannot be changed or redefined\r\n#define CHANNEL 6\r\n\r\n\/\/ define the number of LEDs\r\n#define NUM_PINS 8\r\n\r\n\/\/ define arduino pin to read the potentiometer for setting the speed\r\n#define SPEED 14 \/\/ speed adjustment - analog pin A0\r\n\r\n\/\/ definiraj globalno spremenljivko dostopno vsem funkcijam\r\n\/\/ define a global variable to be accessible by all functions\r\nbool midi = false; \/\/ initial logical, boolean value - true or false\r\n\r\nint pulse = 20; \/\/ in ms - integer type variable, celo\u0161tevil\u010dni tip spremenljivke \r\n\r\n\/\/ prva funkcija, ki se izvede - nastavitve; void pomeni da funkcija ne vrne nobene vrednosti\r\n\/\/ first function performed on arduino power-up; void meand that the function returns nothing\r\n\r\nvoid setup() {\r\n  \/\/ pinMode(arduino_pin, INPUT) je ena od funkcij definiranih s programsko platformo arduino\r\n  \/\/ define DIO pin number CHANNEL as input (for reading the position\/ value of a switch)\r\n  pinMode(CHANNEL, INPUT); \/\/ INPUT or OUTPUT\r\n\r\n  \/\/ now we switch on the pull up resistor in atmel microcontroller (20Kohms) - so we just need the switch to be connected to ground\r\n  \/\/ digitalWrite(arduino_pin HIGH) je ena od funkcij definiranih s programsko platformo arduino\r\n  digitalWrite(CHANNEL, HIGH); \/\/ HIGH: switch on the pull up resistor, LOW: switch off the pullup resistor\r\n\r\n  \/\/ start serial communication on dedicated default arduino pins (pin 0 and pin1)\r\n  if(midi)   Serial.begin(31250);  \/\/  Set MIDI baud rate\r\n  else       Serial.begin(57600);  \/\/ set faster baud rate for Serial to MIDI software\r\n\r\n}\r\n\r\n\/\/ osnovna funkcija neprestanega izvajanja programskih opravil; vedno \"void\" - ker je najbolj osnovna funkcija\r\n\/\/ basic function which is used to constantly perform whatever is defined; always \"void\" - the most basic function\r\n\r\nvoid loop() {\r\n    \/\/ define a local variable to be changed in this function and at each loop only\r\n    int ledpin=0; \/\/ initial value\r\n\r\n    \/\/ go through each LED - 0 to 7 = 8 LEDs\r\n    while (ledpin &lt; NUM_PINS){\r\n\r\n      \/\/ read settings of potentiometers at each step\r\n      \/\/ read potentiometer at pin defined as SPEED\r\n      \/\/ analogRead(arduino_pin) je ena od funkcij definiranih s programsko platformo arduino\r\n      seq_speed = analogRead(SPEED); \/\/ 10 bit value\r\n\r\n      \/\/ do something else on each sequence step\r\n\r\n   }\r\n\r\n   \/\/ do something else on each sequence completed\r\n\r\n}<\/pre>\n<p>Ob\u0161irnej\u0161i pregled programiranja v okolju arduino:<br \/>\n<a href=\"http:\/\/playground.arduino.cc\/uploads\/Main\/arduino_notebook_v1-1.pdf\" target=\"_blank\" rel=\"noopener\">arduino_notebook_v1-1<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Programsko okolje in jezik Arduino je nastal na osnovi odprtokodnih razvojnih orodij \u2013 na platformi za programiranje mikrokontrolerjev Wiring, osnova za razvojno okolje pa je bil Processing.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39,9,1,3],"tags":[16],"class_list":["post-311","post","type-post","status-publish","format-standard","hentry","category-devices","category-turboblog","category-archive","category-tech","tag-arduino"],"_links":{"self":[{"href":"https:\/\/www.turborebop.net\/index.php?rest_route=\/wp\/v2\/posts\/311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.turborebop.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.turborebop.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.turborebop.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.turborebop.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=311"}],"version-history":[{"count":2,"href":"https:\/\/www.turborebop.net\/index.php?rest_route=\/wp\/v2\/posts\/311\/revisions"}],"predecessor-version":[{"id":2363,"href":"https:\/\/www.turborebop.net\/index.php?rest_route=\/wp\/v2\/posts\/311\/revisions\/2363"}],"wp:attachment":[{"href":"https:\/\/www.turborebop.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.turborebop.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.turborebop.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}