{"id":431,"date":"2017-07-07T23:36:23","date_gmt":"2017-07-07T21:36:23","guid":{"rendered":"https:\/\/arduinoforlammers.wordpress.com\/?p=431"},"modified":"2018-01-10T23:34:57","modified_gmt":"2018-01-10T22:34:57","slug":"midi-in-czyli-transoptor-w-akcji","status":"publish","type":"post","link":"https:\/\/arduino.net.pl\/index.php\/midi-in-czyli-transoptor-w-akcji\/","title":{"rendered":"MIDI IN &#8211; czyli transoptor w akcji"},"content":{"rendered":"<p>Oto podstawowy schemat interfejsu MIDI wsp\u00f3\u0142pracuj\u0105cego z Arduino. G\u0142\u00f3wnym elementem w uk\u0142adzie jest transoptor <a href=\"http:\/\/html.alldatasheet.com\/html-pdf\/30863\/TOSHIBA\/6N138\/244\/1\/6N138.html\">6N138<\/a>, zwany te\u017c optoizolatorem. Pozwala on przesy\u0142a\u0107 sygna\u0142y elektryczne z wej\u015bcia na wyj\u015bcie bez po\u0142\u0105cze\u0144 galwanicznych obwod\u00f3w wej\u015bciowego i wyj\u015bciowego. Separacja, w tym wypadku, jest wa\u017cna, bo mamy do czynienia z dwoma r\u00f3\u017cnymi obwodami elektrycznymi po\u0142\u0105czonymi kablem MIDI. Oto schemat uk\u0142adu:<\/p>\n<p><a href=\"https:\/\/flic.kr\/p\/Wuoktw\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/farm5.staticflickr.com\/4212\/35764485336_e4284208df_b.jpg\" alt=\"MIDI_IN_yar\" width=\"708\" height=\"413\" \/><\/a><\/p>\n<p><!--more-->Oszcz\u0119dzi nerw\u00f3w i sporo czasu w\u0142a\u015bciwe po\u0142\u0105czenie n\u00f3\u017cek transoptora i gniazda (albo wtyczki) MIDI. (Na schemacie zaznaczy\u0142em numery n\u00f3\u017cek uk\u0142adu i gniazda.) A tak wygl\u0105da prawid\u0142owo z\u0142o\u017cony uk\u0142ad na p\u0142ytce prototypowej:<\/p>\n<p><a href=\"https:\/\/flic.kr\/p\/Wx2BY8\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/farm5.staticflickr.com\/4239\/35794392955_281f73a751_z.jpg\" alt=\"MIDI_IN_yar_pic\" width=\"640\" height=\"425\" \/><\/a><\/p>\n<p><em>UWAGA! Na zdj\u0119ciu 7-ma n\u00f3\u017cka transoptora jest po\u0142\u0105czona z mas\u0105 rezystorem 2k2 zamiast 4k7. Akurat nie mia\u0142em pod r\u0119k\u0105 w\u0142a\u015bciwego opornika, ale chyba warto\u015b\u0107 nie jest tak istotna, bo na r\u00f3\u017cnych schematach ten rezystor ma warto\u015b\u0107 od 470R do 10k. A czasem 7-ma n\u00f3\u017cka wcale nie jest pod\u0142\u0105czona.<\/em><\/p>\n<h3>Kod1:<\/h3>\n<pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\r\n#include   \/\/ Add Midi Library\r\n\r\n#define LED 13    \/\/ Arduino Board LED is on Pin 13\r\n\r\n\/\/Create an instance of the library with default name, serial port and settings\r\nMIDI_CREATE_DEFAULT_INSTANCE();\r\n\r\nvoid setup() {\r\n  pinMode (LED, OUTPUT); \/\/ Set Arduino board pin 13 to output\r\n  MIDI.begin(MIDI_CHANNEL_OMNI); \/\/ Initialize the Midi Library.\r\n  \/\/ OMNI sets it to listen to all channels.. MIDI.begin(2) would set it\r\n  \/\/ to respond to notes on channel 2 only.\r\n  MIDI.setHandleNoteOn(MyHandleNoteOn); \/\/ This is important!! This command\r\n  \/\/ tells the Midi Library which function you want to call when a NOTE ON command\r\n  \/\/ is received. In this case it's &amp;quot;MyHandleNoteOn&amp;quot;.\r\n  MIDI.setHandleNoteOff(MyHandleNoteOff); \/\/ This command tells the Midi Library\r\n  \/\/ to call &quot;MyHandleNoteOff&quot; when a NOTE OFF command is received.\r\n}\r\n\r\nvoid loop() { \/\/ Main loop\r\n  MIDI.read(); \/\/ Continuously check if Midi data has been received.\r\n}\r\n\r\n\/\/ MyHandleNoteON is the function that will be called by the Midi Library\r\n\/\/ when a MIDI NOTE ON message is received.\r\n\/\/ It will be passed bytes for Channel, Pitch, and Velocity\r\nvoid MyHandleNoteOn(byte channel, byte pitch, byte velocity) {\r\n  digitalWrite(LED,HIGH);  \/\/Turn LED on\r\n}\r\n\r\n\/\/ MyHandleNoteOFF is the function that will be called by the Midi Library\r\n\/\/ when a MIDI NOTE OFF message is received.\r\n\/\/ * A NOTE ON message with Velocity = 0 will be treated as a NOTE OFF message *\r\n\/\/ It will be passed bytes for Channel, Pitch, and Velocity\r\nvoid MyHandleNoteOff(byte channel, byte pitch, byte velocity) {\r\n  digitalWrite(LED,LOW);  \/\/Turn LED off\r\n}\r\n\r\n<\/pre>\n<h3>Kod2<\/h3>\n<p><em>SysEx<\/em><\/p>\n<pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\r\n#include &lt;MIDI.h&gt;;\r\n\r\n#define LED 13    \/\/ Definicja pinu LED\r\nint i;\r\n\r\n\/\/Instancja biblioteki z domy\u015bln\u0105 nazw\u0105, portem szeregowym i ustawieniami\r\nMIDI_CREATE_DEFAULT_INSTANCE();\r\n\r\nvoid setup() {\r\n\r\n  pinMode (LED, OUTPUT); \/\/ ustawienie pinu 13-tego jako wyj\u015bcie\r\n  MIDI.begin(MIDI_CHANNEL_OMNI); \/\/ Inicjijemy kana\u0142 MIDI\r\n  \/\/ OMNI ustawia nas\u0142uch na wszystkie kana\u0142y MIDI\r\n  MIDI.setHandleSystemExclusive(MyHandleSystemExclusive); \/\/\r\n \/\/ Gdy na wej\u015bciu pojawi si\u0119 komunikat SysEx zostanie wykonana funkcja\r\n \/\/ MyHandleSystemExclusive\r\n}\r\n\r\nvoid loop() { \/\/ Main loop\r\n  MIDI.read(); \/\/ Nas\u0142uch komunikat\u00f3w MIDI\r\n}\r\n\r\nvoid MyHandleSystemExclusive(byte *array, byte size) { \r\n\r\n  \/\/ deklarujemy funkcj\u0119, kt\u00f3ra za\u015bwieci LED  tyle razy\r\n  \/\/ co wielko\u015b\u0107 otrzymanego komunikat SysEx (size)\r\n\r\n  for( i=0; i&lt;size; i++){\r\n  digitalWrite(LED,HIGH);  \/\/Turn LED on\r\n  delay(50);\r\n  digitalWrite(LED,LOW);  \/\/Turn LED off\r\n  delay(50);\r\n  }\r\n}\r\n<\/pre>\n<p>Schemat MIDI-IN w <a href=\"https:\/\/easyeda.com\/yarogniew\/MIDI_IN_interface_copy_copy-79d24b5157024b7a85a7546b2574ce80\" target=\"_blank\" rel=\"noopener\">EasyEDA<\/a>:<\/p>\n<figure id=\"attachment_857\" aria-describedby=\"caption-attachment-857\" style=\"width: 1050px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2017\/07\/midi-in_easyeda5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-857 size-full\" src=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2017\/07\/midi-in_easyeda5.png\" alt=\"rys. MIDI-IN EASYEDA\" width=\"1050\" height=\"670\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi-in_easyeda5.png 1050w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi-in_easyeda5-300x191.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi-in_easyeda5-768x490.png 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi-in_easyeda5-1024x653.png 1024w\" sizes=\"auto, (max-width: 1050px) 100vw, 1050px\" \/><\/a><figcaption id=\"caption-attachment-857\" class=\"wp-caption-text\">Schemat MIDI-IN for arduino<\/figcaption><\/figure>\n<p>P\u0142ytka PCB:<br \/>\n<a href=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2017\/07\/midi_in_pcb-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-882 size-full\" src=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2017\/07\/midi_in_pcb-2.png\" alt=\"\" width=\"1256\" height=\"716\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_pcb-2.png 1256w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_pcb-2-300x171.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_pcb-2-768x438.png 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_pcb-2-1024x584.png 1024w\" sizes=\"auto, (max-width: 1256px) 100vw, 1256px\" \/><\/a><\/p>\n<p>I zlutowany interfejs:<br \/>\n<a href=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2017\/07\/midi_in_z_opisem-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-878 size-full\" src=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2017\/07\/midi_in_z_opisem-1.jpg\" alt=\"\" width=\"1158\" height=\"679\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_z_opisem-1.jpg 1158w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_z_opisem-1-300x176.jpg 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_z_opisem-1-768x450.jpg 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_z_opisem-1-1024x600.jpg 1024w\" sizes=\"auto, (max-width: 1158px) 100vw, 1158px\" \/><\/a><br \/>\n<a href=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2017\/07\/midi_in_lutowanie_obraz.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-885\" src=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2017\/07\/midi_in_lutowanie_obraz.jpg\" alt=\"\" width=\"1600\" height=\"1037\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_lutowanie_obraz.jpg 1600w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_lutowanie_obraz-300x194.jpg 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_lutowanie_obraz-768x498.jpg 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/07\/midi_in_lutowanie_obraz-1024x664.jpg 1024w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oto podstawowy schemat interfejsu MIDI wsp\u00f3\u0142pracuj\u0105cego z Arduino. G\u0142\u00f3wnym elementem w uk\u0142adzie jest transoptor 6N138, zwany te\u017c optoizolatorem. Pozwala on przesy\u0142a\u0107 sygna\u0142y elektryczne z wej\u015bcia na wyj\u015bcie bez po\u0142\u0105cze\u0144 galwanicznych&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2,6],"tags":[8],"class_list":["post-431","post","type-post","status-publish","format-standard","hentry","category-arduino","category-midi","tag-6n138"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/comments?post=431"}],"version-history":[{"count":11,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/431\/revisions"}],"predecessor-version":[{"id":887,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/431\/revisions\/887"}],"wp:attachment":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/media?parent=431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/categories?post=431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/tags?post=431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}