{"id":94,"date":"2016-11-29T11:22:06","date_gmt":"2016-11-29T13:22:06","guid":{"rendered":"http:\/\/vejas.defas.lt\/?p=94"},"modified":"2016-11-29T14:21:30","modified_gmt":"2016-11-29T16:21:30","slug":"vejo-daviklio-emuliatorius","status":"publish","type":"post","link":"http:\/\/vejas.defas.lt\/?p=94","title":{"rendered":"V\u0117jo daviklio emuliatorius"},"content":{"rendered":"<p>Kad nereik\u0117t\u0173 laikyti prijungto v\u0117jo grei\u010dio daviklio, sukursime jo emuliatori\u0173. Id\u0117ja atrodo sekan\u010diai: Raspberry (toliau Rpi) para\u0161ysime program\u0105, kuri generuos meandro formos impuls\u0105 ir j\u012f paduosime \u012f Arduino vien\u0105 i\u0161 skaitmenini\u0173 \u012f\u0117jim\u0173.<\/p>\n<p>Dar kart\u0105 per\u017ei\u016br\u0117kime Rpi GPIO i\u0161vadus ir j\u0173 paskirt\u012f. \u017demiau informacija i\u0161:\u00a0<a href=\"http:\/\/raspi.tv\/2013\/rpi-gpio-basics-4-setting-up-rpi-gpio-numbering-systems-and-inputs\">http:\/\/raspi.tv\/2013\/rpi-gpio-basics-4-setting-up-rpi-gpio-numbering-systems-and-inputs<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-96 aligncenter\" src=\"http:\/\/vejas.defas.lt\/wp-content\/uploads\/2016\/11\/Rev2-GPIO-bold-173x300-173x300.jpg\" alt=\"rev2-gpio-bold-173x300\" width=\"173\" height=\"300\" \/><\/p>\n<ul>\n<li>raudonai pa\u017eym\u0117ti yra +3V3 bei +5V maitinimo kontaktai<\/li>\n<li>juodai pa\u017eym\u0117ti yra &#8222;\u017dem\u0117s&#8221; kontaktai<\/li>\n<li>geltonai pa\u017eym\u0117ti yra bendro naudojimo\u00a0 I\/O portai (beje, 18 yra PWM-inis).<\/li>\n<\/ul>\n<p>Likusieji taip pat gali b\u016bti naudojami kaip\u00a0 GPIO portai, ta\u010diau jie yra priskirti funkcijoms. Jei u\u017etenka 8 port\u0173 rekomenduotina naudoti pa\u017eym\u0117tus geltonai i\u0161vengiant galim\u0173 konfliktavim\u0173 su kitomis s\u0105sajomis. Trumpai kit\u0173 s\u0105saj\u0173 i\u0161vadai\u2026<\/p>\n<ul>\n<li>\u017ealiai\/pilkas \u2013 i<sup>2<\/sup>c s\u0105saja<\/li>\n<li>\u0161viesiai pilki \u2013 UART (nuosekli s\u0105saja)<\/li>\n<li>oran\u017einiai\u2013 SPI (Serial Peripheral Interface) s\u0105saja.<\/li>\n<\/ul>\n<p>Tarkime, pasirinkome GPIO4 7 i\u0161vad\u0105 kaip impuls\u0173 generatoriaus i\u0161\u0117jim\u0105. J\u012f reikia sujungti su Arduino skaitmeniniu \u012f\u0117jimu, kuris, tarkim bus ~3 (\u010dia tild\u0117 nurodo, kad tai bus PVM &#8216;inis i\u0161vadas, matuosime impulso ilg\u012f da\u017enio nustatymui: Hz=1\/sek). \u010cia tinkama bendra Rpi-Arduino sujungim\u0173 nuotrauka.<\/p>\n<p>Meandro generavimo programos pagrindu naudosime (TY <a href=\"http:\/\/raspberrypi.stackexchange.com\/users\/13650\/joan\">joan<\/a>) <a href=\"http:\/\/raspberrypi.stackexchange.com\/questions\/19765\/rpi-gpio-as-a-high-speed-square-wave-generator\">http:\/\/raspberrypi.stackexchange.com\/questions\/19765\/rpi-gpio-as-a-high-speed-square-wave-generator<\/a> para\u0161yt\u0105 C kalba. Pavadinsime meandras.c:<\/p>\n<pre class=\"lang-c prettyprint prettyprinted\"><code><span class=\"com\">#include<\/span> <span class=\"str\">&lt;stdio.h&gt;<\/span>\r\n<span class=\"com\">#include<\/span> <span class=\"str\">&lt;stdlib.h&gt;<\/span>\r\n<span class=\"com\">#include<\/span> <span class=\"str\">&lt;stdarg.h&gt;<\/span>\r\n<span class=\"com\">#include<\/span> <span class=\"str\">&lt;unistd.h&gt;<\/span>\r\n<span class=\"com\">#include<\/span> <span class=\"str\">&lt;string.h&gt;<\/span>\r\n<span class=\"com\">#include<\/span> <span class=\"str\">&lt;pigpio.h&gt;<\/span>\r\n<span class=\"com\">#define<\/span><span class=\"pln\"> GPIO <\/span><span class=\"lit\">4<\/span>\r\n<span class=\"com\">#define<\/span><span class=\"pln\"> ON   <\/span><span class=\"lit\">10<\/span>\r\n<span class=\"com\">#define<\/span><span class=\"pln\"> OFF  <\/span><span class=\"lit\">10<\/span>\r\n<span class=\"kwd\">static<\/span> <span class=\"typ\">int<\/span><span class=\"pln\"> gpio <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> GPIO<\/span><span class=\"pun\">;<\/span>\r\n<span class=\"kwd\">static<\/span> <span class=\"typ\">int<\/span><span class=\"pln\"> on   <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> ON<\/span><span class=\"pun\">;<\/span>\r\n<span class=\"kwd\">static<\/span> <span class=\"typ\">int<\/span><span class=\"pln\"> off  <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> OFF<\/span><span class=\"pun\">;<\/span>\r\n<span class=\"typ\">gpioPulse_t<\/span><span class=\"pln\"> pulse<\/span><span class=\"pun\">[<\/span><span class=\"lit\">2<\/span><span class=\"pun\">];<\/span>\r\n<span class=\"kwd\">void<\/span><span class=\"pln\"> fatal<\/span><span class=\"pun\">(<\/span><span class=\"kwd\">char<\/span> <span class=\"pun\">*<\/span><span class=\"pln\">fmt<\/span><span class=\"pun\">,<\/span> <span class=\"pun\">...)<\/span><span class=\"pun\">{<\/span>\r\n   <span class=\"kwd\">char<\/span><span class=\"pln\"> buf<\/span><span class=\"pun\">[<\/span><span class=\"lit\">256<\/span><span class=\"pun\">];<\/span><span class=\"pln\">\r\n   va_list ap<\/span><span class=\"pun\">;<\/span><span class=\"pln\">\r\n   va_start<\/span><span class=\"pun\">(<\/span><span class=\"pln\">ap<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> fmt<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   vsnprintf<\/span><span class=\"pun\">(<\/span><span class=\"pln\">buf<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">sizeof<\/span><span class=\"pun\">(<\/span><span class=\"pln\">buf<\/span><span class=\"pun\">),<\/span><span class=\"pln\"> fmt<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> ap<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   va_end<\/span><span class=\"pun\">(<\/span><span class=\"pln\">ap<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   fprintf<\/span><span class=\"pun\">(<\/span><span class=\"pln\">stderr<\/span><span class=\"pun\">,<\/span> <span class=\"str\">\"%s\\n\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> buf<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   exit<\/span><span class=\"pun\">(<\/span><span class=\"pln\">EXIT_FAILURE<\/span><span class=\"pun\">);<\/span>\r\n<span class=\"pun\">}<\/span>\r\n<span class=\"kwd\">void<\/span><span class=\"pln\"> usage<\/span><span class=\"pun\">()<\/span><span class=\"pun\">{<\/span><span class=\"pln\">\r\n   fprintf<\/span><span class=\"pun\">(<\/span><span class=\"pln\">stderr<\/span><span class=\"pun\">,<\/span> <span class=\"str\">\"\\n\"<\/span><span class=\"pln\"> \\\r\n      <\/span><span class=\"str\">\"Usage: sudo .\/square [OPTION] ...\\n\"<\/span><span class=\"pln\"> \\\r\n      <\/span><span class=\"str\">\"   -f value, off micros, 1- (%d)\\n\"<\/span><span class=\"pln\"> \\\r\n      <\/span><span class=\"str\">\"   -g value, gpio, 0-31     (%d)\\n\"<\/span><span class=\"pln\"> \\\r\n      <\/span><span class=\"str\">\"   -n value, on micros, 1-  (%d)\\n\"<\/span><span class=\"pln\"> \\\r\n      <\/span><span class=\"str\">\"EXAMPLE\\n\"<\/span><span class=\"pln\"> \\\r\n      <\/span><span class=\"str\">\"sudo .\/square -g 23\\n\"<\/span><span class=\"pln\"> \\\r\n      <\/span><span class=\"str\">\"  Generate square wave on gpio 23.\\n\"<\/span><span class=\"pln\"> \\\r\n   <\/span><span class=\"str\">\"\\n\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> OFF<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> GPIO<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> ON<\/span><span class=\"pun\">);<\/span>\r\n<span class=\"pun\">}<\/span>\r\n<span class=\"kwd\">static<\/span> <span class=\"kwd\">void<\/span><span class=\"pln\"> initOpts<\/span><span class=\"pun\">(<\/span><span class=\"typ\">int<\/span><span class=\"pln\"> argc<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">char<\/span> <span class=\"pun\">*<\/span><span class=\"pln\">argv<\/span><span class=\"pun\">[]) <\/span><span class=\"pun\">{<\/span>\r\n   <span class=\"typ\">int<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> opt<\/span><span class=\"pun\">;<\/span>\r\n   <span class=\"kwd\">while<\/span> <span class=\"pun\">((<\/span><span class=\"pln\">opt <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> getopt<\/span><span class=\"pun\">(<\/span><span class=\"pln\">argc<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> argv<\/span><span class=\"pun\">,<\/span> <span class=\"str\">\"f:g:n:\"<\/span><span class=\"pun\">))<\/span> <span class=\"pun\">!=<\/span> <span class=\"pun\">-<\/span><span class=\"lit\">1<\/span><span class=\"pun\">) <\/span><span class=\"pun\">{<\/span><span class=\"pln\">\r\n      i <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">-<\/span><span class=\"lit\">1<\/span><span class=\"pun\">;<\/span>\r\n      <span class=\"kwd\">switch<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">opt<\/span><span class=\"pun\">) <\/span><span class=\"pun\">{<\/span>\r\n         <span class=\"kwd\">case<\/span> <span class=\"str\">'f'<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n            i <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> atoi<\/span><span class=\"pun\">(<\/span><span class=\"pln\">optarg<\/span><span class=\"pun\">);<\/span>\r\n            <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">i <\/span><span class=\"pun\">&gt;=<\/span> <span class=\"lit\">1<\/span><span class=\"pun\">)<\/span><span class=\"pln\"> off <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">;<\/span>\r\n            <span class=\"kwd\">else<\/span><span class=\"pln\"> fatal<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"invalid -f option (%d)\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">);<\/span>\r\n            <span class=\"kwd\">break<\/span><span class=\"pun\">;<\/span>\r\n         <span class=\"kwd\">case<\/span> <span class=\"str\">'g'<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n            i <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> atoi<\/span><span class=\"pun\">(<\/span><span class=\"pln\">optarg<\/span><span class=\"pun\">);<\/span>\r\n            <span class=\"kwd\">if<\/span> <span class=\"pun\">((<\/span><span class=\"pln\">i <\/span><span class=\"pun\">&gt;=<\/span> <span class=\"lit\">1<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">&amp;&amp;<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">i <\/span><span class=\"pun\">&lt;=<\/span> <span class=\"lit\">31<\/span><span class=\"pun\">))<\/span><span class=\"pln\"> gpio <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">;<\/span>\r\n            <span class=\"kwd\">else<\/span><span class=\"pln\"> fatal<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"invalid -g option (%d)\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">);<\/span>\r\n            <span class=\"kwd\">break<\/span><span class=\"pun\">;<\/span>\r\n         <span class=\"kwd\">case<\/span> <span class=\"str\">'n'<\/span><span class=\"pun\">:<\/span><span class=\"pln\">\r\n            i <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> atoi<\/span><span class=\"pun\">(<\/span><span class=\"pln\">optarg<\/span><span class=\"pun\">);<\/span>\r\n            <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">i <\/span><span class=\"pun\">&gt;=<\/span> <span class=\"lit\">1<\/span><span class=\"pun\">)<\/span><span class=\"pln\"> on <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">;<\/span>\r\n            <span class=\"kwd\">else<\/span><span class=\"pln\"> fatal<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"invalid -n option (%d)\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">);<\/span>\r\n            <span class=\"kwd\">break<\/span><span class=\"pun\">;<\/span>\r\n         <span class=\"kwd\">default<\/span><span class=\"pun\">:<\/span> <span class=\"com\">\/* '?' *\/<\/span><span class=\"pln\">\r\n            usage<\/span><span class=\"pun\">();<\/span><span class=\"pln\">\r\n            exit<\/span><span class=\"pun\">(<\/span><span class=\"pln\">EXIT_FAILURE<\/span><span class=\"pun\">);<\/span>\r\n        <span class=\"pun\">}<\/span>\r\n    <span class=\"pun\">}<\/span>\r\n<span class=\"pun\">}<\/span>\r\n<span class=\"typ\">int<\/span><span class=\"pln\"> main<\/span><span class=\"pun\">(<\/span><span class=\"typ\">int<\/span><span class=\"pln\"> argc<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">char<\/span> <span class=\"pun\">*<\/span><span class=\"pln\">argv<\/span><span class=\"pun\">[]) <\/span><span class=\"pun\">{<\/span>\r\n   <span class=\"typ\">int<\/span><span class=\"pln\"> wid<\/span><span class=\"pun\">;<\/span><span class=\"pln\">\r\n   initOpts<\/span><span class=\"pun\">(<\/span><span class=\"pln\">argc<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> argv<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   printf<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"gpio #%d, on %dus, off %dus\\n\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> gpio<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> on<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> off<\/span><span class=\"pun\">);<\/span>\r\n   <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">gpioInitialise<\/span><span class=\"pun\">()&lt;<\/span><span class=\"lit\">0<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">return<\/span> <span class=\"pun\">-<\/span><span class=\"lit\">1<\/span><span class=\"pun\">;<\/span><span class=\"pln\">\r\n   gpioSetMode<\/span><span class=\"pun\">(<\/span><span class=\"pln\">gpio<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> PI_OUTPUT<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   pulse<\/span><span class=\"pun\">[<\/span><span class=\"lit\">0<\/span><span class=\"pun\">].<\/span><span class=\"pln\">gpioOn <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">&lt;&lt;<\/span><span class=\"pln\">gpio<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   pulse<\/span><span class=\"pun\">[<\/span><span class=\"lit\">0<\/span><span class=\"pun\">].<\/span><span class=\"pln\">gpioOff <\/span><span class=\"pun\">=<\/span> <span class=\"lit\">0<\/span><span class=\"pun\">;<\/span><span class=\"pln\">\r\n   pulse<\/span><span class=\"pun\">[<\/span><span class=\"lit\">0<\/span><span class=\"pun\">].<\/span><span class=\"pln\">usDelay <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> on<\/span><span class=\"pun\">;<\/span><span class=\"pln\">\r\n   pulse<\/span><span class=\"pun\">[<\/span><span class=\"lit\">1<\/span><span class=\"pun\">].<\/span><span class=\"pln\">gpioOn <\/span><span class=\"pun\">=<\/span> <span class=\"lit\">0<\/span><span class=\"pun\">;<\/span><span class=\"pln\">\r\n   pulse<\/span><span class=\"pun\">[<\/span><span class=\"lit\">1<\/span><span class=\"pun\">].<\/span><span class=\"pln\">gpioOff <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">&lt;&lt;<\/span><span class=\"pln\">gpio<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   pulse<\/span><span class=\"pun\">[<\/span><span class=\"lit\">1<\/span><span class=\"pun\">].<\/span><span class=\"pln\">usDelay <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> off<\/span><span class=\"pun\">;<\/span><span class=\"pln\">\r\n   gpioWaveClear<\/span><span class=\"pun\">();<\/span><span class=\"pln\">\r\n   gpioWaveAddGeneric<\/span><span class=\"pun\">(<\/span><span class=\"lit\">2<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> pulse<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n   wid <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> gpioWaveCreate<\/span><span class=\"pun\">();<\/span>\r\n   <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">wid <\/span><span class=\"pun\">&gt;=<\/span> <span class=\"lit\">0<\/span><span class=\"pun\">) <\/span><span class=\"pun\">{<\/span><span class=\"pln\">\r\n      gpioWaveTxSend<\/span><span class=\"pun\">(<\/span><span class=\"pln\">wid<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> PI_WAVE_MODE_REPEAT<\/span><span class=\"pun\">);<\/span>\r\n      <span class=\"kwd\">while<\/span> <span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">)<\/span><span class=\"pln\"> sleep<\/span><span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">);<\/span>\r\n   <span class=\"pun\">}<\/span><span class=\"pln\">\r\n   gpioTerminate<\/span><span class=\"pun\">();<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<p>Kompiliavimui papildomai naudojame pigpio bibliotek\u0105, taigi kompiliavimo eilut\u0117 pailg\u0117ja:<\/p>\n<p>gcc -o meandras.o -L\/usr\/lib -lmysqlclient -lpigpio -I\/usr\/local\/include -L\/usr\/local\/lib -lwiringPi meandras.c<\/p>\n<p>Paduodame i\u0161 Rpi 7 kontakto GPIO4 signal\u0105 \u012f Arduino plok\u0161t\u0117s D3 kontakt\u0105. Signalo apdorojimui pasirinkime i\u0161 <a href=\"http:\/\/www.benripley.com\/diy\/arduino\/three-ways-to-read-a-pwm-signal-with-arduino\/\">http:\/\/www.benripley.com\/diy\/arduino\/three-ways-to-read-a-pwm-signal-with-arduino\/<\/a><\/p>\n<p>straipsnyje apra\u0161yt\u0173 trij\u0173 b\u016bd\u0173 antr\u0105, \u0161iek tiek pakei\u010diame programos tekst\u0105. Rezultat\u0105 saugome [17] ir [18] dat masyvo elementuose.<\/p>\n<p>const int VejoPin=3;<\/p>\n<p>volatile int pwm_value = 0;<br \/>\nvolatile int prev_time = 0;<\/p>\n<p>Setup{<\/p>\n<p>attachInterrupt(digitalPinToInterrupt(VejoPin), rising, RISING);<\/p>\n<p>}<\/p>\n<p>void rising() {<br \/>\nattachInterrupt(digitalPinToInterrupt(VejoPin), falling, FALLING);<br \/>\nVejoGreitisx10=micros()-prev_time;<br \/>\nVejoGreitisx10=10000000\/VejoGreitisx10;<br \/>\ndat[17]=lowByte(VejoGreitisx10); dat[18]=highByte(VejoGreitisx10);<br \/>\nprev_time = micros();<br \/>\n}<br \/>\nvoid falling() {<br \/>\nattachInterrupt(digitalPinToInterrupt(VejoPin), rising, RISING);<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p>Liko da\u017enio keitimas nuo potenciometro, kuris bus pajungtas \u012f Arduino A0 \u012f\u0117jim\u0105, pad\u0117ties. A0 reik\u0161m\u0117s bus perduodamos per SPI s\u0105saj\u0105. meandras program\u0105 integruosiu \u012f pagrindin\u0119 program\u0105. Bet tai jau rytoj.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kad nereik\u0117t\u0173 laikyti prijungto v\u0117jo grei\u010dio daviklio, sukursime jo emuliatori\u0173. Id\u0117ja atrodo sekan\u010diai: Raspberry (toliau Rpi) para\u0161ysime program\u0105, kuri generuos meandro formos impuls\u0105 ir j\u012f paduosime \u012f Arduino vien\u0105 i\u0161 skaitmenini\u0173 \u012f\u0117jim\u0173. Dar kart\u0105 per\u017ei\u016br\u0117kime Rpi GPIO i\u0161vadus ir j\u0173 paskirt\u012f. \u017demiau informacija i\u0161:\u00a0http:\/\/raspi.tv\/2013\/rpi-gpio-basics-4-setting-up-rpi-gpio-numbering-systems-and-inputs raudonai pa\u017eym\u0117ti yra +3V3 bei +5V maitinimo kontaktai juodai pa\u017eym\u0117ti yra &hellip; <a href=\"http:\/\/vejas.defas.lt\/?p=94\" class=\"more-link\">Skaityti toliau: <span class=\"screen-reader-text\">V\u0117jo daviklio emuliatorius<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-94","post","type-post","status-publish","format-standard","hentry","category-be-kategorijos"],"acf":[],"_links":{"self":[{"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/posts\/94","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=94"}],"version-history":[{"count":6,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/posts\/94\/revisions"}],"predecessor-version":[{"id":99,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/posts\/94\/revisions\/99"}],"wp:attachment":[{"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=94"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=94"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=94"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}