<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>
<channel rdf:about="http://blog.livedoor.jp/hardyboy/">
<title>まごころせいじつ堂 - Leonardo</title>
<link>http://blog.livedoor.jp/hardyboy/</link>
<description>浜町庄金　研究開発
　マイコンで遊んでばっかりで

</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="http://blog.livedoor.com/?v=2.0" />
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/7436895.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/7267647.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/7041567.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6859545.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6822610.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6820679.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6815865.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6147545.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6054470.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/5993170.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/5988173.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/5983665.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/5961040.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/5867751.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/5809882.html" />
 </rdf:Seq>
</items>
</channel>

<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/7436895.html">
<title>Arduinoで任意のUSBコードを送る　解決編</title>
<link>http://blog.livedoor.jp/hardyboy/archives/7436895.html</link>
<description>　Arduino Leonardo/MicroはUSBキーボードとして使えるが、Usageコードが101より大きいものは無視されるという問題があった。PS/2キーボード変換器の製作(18) USBキーボードの無視されるキーについて対策箇所はわかっていたが、当時はバイナリにパッチするという手段しか思い...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2014-08-06T01:15:57+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[　Arduino Leonardo/MicroはUSBキーボードとして使えるが、Usageコードが101より大きいものは無視されるという問題があった。<br /><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/5988173.html">PS/2キーボード変換器の製作(18) USBキーボードの無視されるキーについて</a><br />対策箇所はわかっていたが、当時はバイナリにパッチするという手段しか思いつかず強引にやっていた。<br /><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/5993170.html">PS/2キーボード変換器の製作(19) HEXファイルにパッチを当てる</a><br />　この後、Arduino IDEのフォルダ内にあるソースをいじると反映されることを知った。Arduino IDEは毎回ソースから全部ビルドしてたのか！コアな部分はコンパイル済と勝手に思っていた。<br /><a  target="_blank" href="http://www.imaginaryindustries.com/blog/?p=80">Turning an Arduino Leonardo into a joystick.</a>(Imarginary Industries)<br />　この記事ではUSBAPI.h、HID.cppを修正することによりジョイスティックのUSB-HIDを追加している。ということはArduino IDEにあるHID.cppのHID Report Descripterを修正することで日本語キーボードの機種で￥マークなどを入力できるようになるはずだ。<br />MacOSXだと修正対象のソースは<span  style="font-size: 13px;">Contents/Resources/Java/hardware/arduino/cores/arduino/</span>以下にある。<br /><a  target="_blank" href="https://gist.github.com/houmei/2ad9f7a713f46149e72f">https://gist.github.com/houmei/2ad9f7a713f46149e72f</a><br /><br />HID.cppを差し替え、ライブラリを組み込む。このライブラリはHID.cpp/USBAPI.hと一体化もできると思うが以前作ったのをそのまま流用しているのでこうなっている。<br /><br /><a  target="_blank" title="2014shot1" href="http://livedoor.blogimg.jp/hardyboy/imgs/b/c/bc54db37.jpg"><img  class="pict" alt="2014shot1" src="http://livedoor.blogimg.jp/hardyboy/imgs/b/c/bc54db37-s.jpg" align="left" border="0" height="360" hspace="5" width="480"></a><br  clear="all">
　これは<a  target="_blank" href="http://strawberry-linux.com/catalog/items?code=25005">Davinci</a>にArduino Microのファームウェアを書き込んだもの。pin4にスイッチを付けてフリスクの大きめのケースに入れてみた。たったこれだけ。日本語キーボードがついてるものがWindowsXPの古いノートPCしかなかったのでそれに接続して￥マークが入力できることを確認した。

<br /><br /><a  href="https://gist.github.com/houmei/0ac6873618caa02f22b4" target="_blank">https://gist.github.com/houmei/0ac6873618caa02f22b4</a><br /><br />　USBキーボードのUsageコードについては以下からどうぞ。注意点としてUSキーボードのレイアウトが基準。<br /><a  target="_blank" href="https://www.google.co.jp/search?q=USB+HID+to+PS%2F2+Scan+Code+Translation+Table&amp;rlz=1C5CHFA_enJP503JP505&amp;oq=USB+HID+to+PS%2F2+Scan+Code+Translation+Table&amp;aqs=chrome..69i57.441j0j7&amp;sourceid=chrome&amp;es_sm=91&amp;ie=UTF-8">USB HID to PS/2 Scan Code Translation Table</a><br /><br />　ああ、これで数年悩んでた問題が解決だ。変なバイナリパッチ作った時点で誰も突っ込んでくれないのね。<br /><br /><br />　ついでにPrint ScreenのUsageコード(0x46)を設定して最近話題のエビデンス画面スクリーンショット用ボタンにしてみた。これでハードコピー取り放題よ。<br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/1/3/131340ad.jpg" title="2014shot2" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/1/3/131340ad-s.jpg" alt="2014shot2" class="pict" align="left" border="0" height="360" hspace="5" width="480"></a><br  clear="all">



<br />&nbsp; <iframe  src="//www.youtube.com/embed/ftK0IXJAi1Q?rel=0" allowfullscreen="" frameborder="0" height="480" width="640"></iframe>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/7267647.html">
<title>Adafruit 1.8&quot; TFT ShieldをLeonardoで使う(SoftSPI)</title>
<link>http://blog.livedoor.jp/hardyboy/archives/7267647.html</link>
<description>※サンプルスケッチをしばらく実行しているとハングします※→解決 microSDカードのせい http://blog.livedoor.jp/hardyboy/archives/7270159.html　TFTシールドの続き。Arduino UNOではそのまま動くがLeonardoでは動かない。シールドの端子がハードウェアSPIに決め打ちにな...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2014-05-15T00:29:48+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[※サンプルスケッチをしばらく実行しているとハングします※<br />→解決 microSDカードのせい&nbsp;<a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/7270159.html">http://blog.livedoor.jp/hardyboy/archives/7270159.html</a><br /><br />　TFTシールドの続き。Arduino UNOではそのまま動くがLeonardoでは動かない。シールドの端子がハードウェアSPIに決め打ちになっているせい。これをソフトウェアSPIでやった。<br /><br /><a  target="_blank" href="http://www.adafruit.com/products/802">Adafruit 1.8" 18-bit Color TFT Shield w/microSD and Joystick</a><br /><br /><span  style="font-size: 14px; line-height: 24.479999542236328px; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif;">シールドでの端子は以下の様になっている。</span><br  style="word-break: break-all; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif; font-size: 14px; line-height: 24.479999542236328px;"><span  style="word-break: break-all; font-size: 13px; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif;">#define sclk 13</span><br  style="word-break: break-all; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif; font-size: 14px; line-height: 24.479999542236328px;"><span  style="word-break: break-all; font-size: 13px; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif;">#define mosi 11</span><br  style="word-break: break-all; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif; font-size: 14px; line-height: 24.479999542236328px;"><span  style="word-break: break-all; font-size: 13px; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif;">#define cs&nbsp;&nbsp; 10</span><br  style="word-break: break-all; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif; font-size: 14px; line-height: 24.479999542236328px;"><span  style="word-break: break-all; font-size: 13px; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif;">#define dc&nbsp;&nbsp; 8</span><br  style="word-break: break-all; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif; font-size: 14px; line-height: 24.479999542236328px;"><span  style="word-break: break-all; font-size: 13px; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif;">#define rst&nbsp; 0</span><br  style="word-break: break-all; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif; font-size: 14px; line-height: 24.479999542236328px;"><span  style="word-break: break-all; font-size: 13px; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif;">#define sd_cs 4</span><br  style="word-break: break-all; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif; font-size: 14px; line-height: 24.479999542236328px;"><span  style="font-size: 14px; line-height: 24.479999542236328px; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif;">ジョイスティックはアナログポートA3。</span><br  style="word-break: break-all; color: rgb(51, 51, 51); font-family: 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', sans-serif; font-size: 14px; line-height: 24.479999542236328px;"><br /><br />さて、以下のように書くとエラーになってしまう。TFT.hとTFT.cppはAdafruit_ST7735.hを呼び出しているが、ソフトウェアSPIを呼び出す5引数の部分の記述がないから。<br /><blockquote>TFT screen = TFT(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);</blockquote>以下に差し替え用のTFT.hとTFT.cpp、画面に線を引くサンプルを作った。<br /><br /><a  target="_blank" href="https://gist.github.com/houmei/1ec877f60f20c9d45a6e">https://gist.github.com/houmei/1ec877f60f20c9d45a6e</a><br /><br />　ソフトによるSPIは遅そうなので描画時間を測定した。線１本を引く時間はこのような差があった。<br /><br />&nbsp;Arduino UNO / ハードウェアSPI 8.65ms<br />Arduino Leonardo / ソフトウェアSPI 39.5ms&nbsp;<br /><br /><a  target="_blank" title="2014SPIline" href="http://livedoor.blogimg.jp/hardyboy/imgs/0/3/0348101a.jpg"><img  align="left" class="pict" hspace="5" alt="2014SPIline" border="0" height="360" width="480" src="http://livedoor.blogimg.jp/hardyboy/imgs/0/3/0348101a-s.jpg"></a>&nbsp;
<br  clear="all">

<br />
追記：サンプルのスケッチ、Leonardo用はSerialコンソールを開いてないと先に進みません<br />ー以下解決ー<br />追記２：Arduino IDE1.5.6-r2にてMEGA2560互換機(Sinesmart)、Arduino DueはソフトSPIにて動作。<br />ただし両方共しばらく経つとハングする。（Leonardoも）<br /><br />　ハングするとこうなる。Arduino Leonardoで4分46秒後に発生。<br />　Arduino UNO / ハードウェアによるSPIでも約1分で発生し、再起動するような挙動。TFTライブラリ？<br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/3/d/3dd0562a.jpg" title="2014softTFThang" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/3/d/3dd0562a-s.jpg" width="480" height="360" border="0" alt="2014softTFThang" hspace="5" class="pict" align="left"></a><br />&nbsp;]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/7041567.html">
<title>Leonardo互換のSeeeduino LiteとGrove OLEDテスト</title>
<link>http://blog.livedoor.jp/hardyboy/archives/7041567.html</link>
<description>　Seeeduino Lite (スイッチサイエンス) 1995円。同社扱いのArduino Leonardo 2835円とくらべて安い。黄色いコネクタと白いGrove用コネクタは自分でハンダ付けする。特徴として、3.3V/5V切り替え、I2CとシリアルのGroveコネクタ、半ピンずらしたコネクタ取り付けのパターン...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2014-01-12T03:09:17+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[<br />　<a  target="_blank" href="http://www.switch-science.com/catalog/1561/">Seeeduino Lite</a>&nbsp;(スイッチサイエンス) 1995円。同社扱いのArduino Leonardo 2835円とくらべて安い。<br />黄色いコネクタと白いGrove用コネクタは自分でハンダ付けする。<br />特徴として、3.3V/5V切り替え、I2CとシリアルのGroveコネクタ、半ピンずらしたコネクタ取り付けのパターンあり。<br /><br />　MacOSX 10.9.1 + Arduino IDE 1.0.5で動作確認。<br /><br />&nbsp;<a  href="http://www.seeedstudio.com/wiki/Seeeduino_Lite" target="_blank">Seeeduino Lite Wiki</a><br /><a  target="_blank" title="2014leo" href="http://livedoor.blogimg.jp/hardyboy/imgs/2/d/2d940139.jpg"><img  align="left" class="pict" hspace="5" alt="2014leo" border="0" height="360" width="480" src="http://livedoor.blogimg.jp/hardyboy/imgs/2/d/2d940139-s.jpg"></a><br />
<br /><br  clear="all">
<br />　このままだとちょっとつまらないのでGroveを使ってみる。Groveは4ピンコネクタを使用するセンサ類を接続するSeeedStudio独自の規格。最初、右側のシリアル端子にシリアル用LCDを接続して試してみたが、Seeeduino Liteでは1,2番ピンに接続されている。これはATMega32U4のハードウェアシリアル端子なので、ライブラリに付属しているexamplesでは動かないようだ。<br />　そこで左側のI2C接続端子に128x64 OLEDを接続してみた。<br /><br /><a  target="_blank" href="http://www.seeedstudio.com/wiki/GROVE_System">GROVE System<br /></a><br /><a  target="_blank" href="http://www.seeedstudio.com/wiki/Grove_-_OLED_Display_128*64">Grove - OLED Display 0.96"</a><br /><br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/1/a/1a8c88ef.jpg" title="2014leo2" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/1/a/1a8c88ef-s.jpg" width="480" height="360" border="0" alt="2014leo2" hspace="5" class="pict" align="left"></a>&nbsp;
<br  clear="all"><br />　これは簡単、ライブラリをインストールしてArduino IDEを再起動、サンプルスケッチを呼び出してみただけ。<br />&nbsp;]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6859545.html">
<title>Arduino Leonardo用 USB-HIDの書き換えメモ、その他</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6859545.html</link>
<description>　この記事、Arduino Leonardoでどうやって標準ではないUSB-HIDジョイスティックを入力可能にしているのかと思っていたら：ゲームコントローラー　cubic9.comTurning an Arduino Leonardo into a joystick.USBAPI.hとHID.cppを差し替えるだけだったのか！　バイナリにパッチ...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2013-10-11T00:06:21+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[　この記事、Arduino Leonardoでどうやって標準ではないUSB-HIDジョイスティックを入力可能にしているのかと思っていたら：<a  href="http://cubic9.com/Devel/%C5%C5%BB%D2%B9%A9%BA%EE/Arduino/%A5%B2%A1%BC%A5%E0%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%E9%A1%BC/" target="_blank"><br />ゲームコントローラー　cubic9.com<br /></a><br /><a  href="http://www.imaginaryindustries.com/blog/?p=80" target="_blank">Turning an Arduino Leonardo into a joystick.</a><br /><br />USBAPI.hとHID.cppを差し替えるだけだったのか！　バイナリにパッチ当ててたよ……<br /><br /><br />以下、今月のメモ<br /><a  target="_blank" href="http://dangerousprototypes.com/2013/10/11/hid-class-usb-serial-communication-for-avrs-using-v-usb/">HID-class USB Serial communication for AVRs using V-USB</a><br /><br /><a  href="http://blog.siliconhouse.jp/archives/52010271.html" target="_blank">Arduinoで物足りなくなっちゃった方へ。Cypress CY8CKIT-042 PSoC 4 PIONEER KIT</a><br /><a  href="http://eleshop.jp/shop/g/gDA4121/" target="_blank">DA4121 PSoC 4 PIONEER KIT</a>　共立エレショップ<br /><a  href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en566210" target="_blank">Fubarino SD Development Board</a>　MICROCHIP PIC32MXのボード<br /><br /><a  href="http://kanpapa.com/today/2013/10/mbed-lpc1114fn28-7segLEDmod.html" target="_blank">mbed LPC1114FN28で8桁7セグLEDモジュールを制御してみた</a>　きょうのかんぱぱ<br /><a  href="http://blog.goo.ne.jp/jh3kxm/e/f07c58e3aafa165efdf5e6a79d161807" target="_blank">AVR用ISP変換ケーブルふたたび</a>　ikkei blog<br /><a  href="http://www.designspark.com/jpn/knowledge-item/jpn-quick-start-guide" target="_blank">Ｒａｓｐｂｅｒｒｙ Ｐｉクイックスタートアップガイド （日本語）</a>&nbsp;<br /><a  href="http://cubic9.com/Devel/%C5%C5%BB%D2%B9%A9%BA%EE/RaspberryPi/%C6%FC%CB%DC%B8%EC%B2%BB%C0%BC%C7%A7%BC%B1/" target="_blank">日本語音声認識</a>&nbsp;　cubic9.com<br /><a  href="http://make.kosakalab.com/make/electronic-work/atmega32u2-arduino/" target="_blank">ATmega32U2でArduinoモドキを作る</a>&nbsp;　kosaka lab<br /><a  href="http://www.kumikomi.net/article/news/2013/08/01_01.php" target="_blank">Freescale，ノイズ耐性などに優れた5V電源仕様のARM Cortex-M0+マイコンを発売</a>&nbsp;　5V系ARM<br /><a  href="http://www.freescale.com/ja/webapp/sps/site/prod_summary.jsp?code=FRDM-KE02Z&amp;tab=Buy_Parametric_Tab&amp;nodeId=015210045A&amp;pspll=1&amp;fromSearch=false" target="_blank">FRDM-KE02Z: Kinetis EシリーズFreedom開発プラットフォーム</a>&nbsp;<br /><a  href="http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&amp;CategoryNo=167&amp;No=830" target="_blank">Cyclone V GX Starter Kit</a>&nbsp;$179。DE0の次はこれか？<br /><a  href="http://amahime.main.jp/vfd/main.php?name=vfd" target="_blank">ＶＦＤとは<br /></a><a  href="http://dangerousprototypes.com/2013/09/09/3v-5v-switchable-i2c-real-time-clock-shield/" target="_blank">3V-5V switchable I2C Real Time Clock Shield<br /></a><a  href="http://mbed.org/users/marcelobarrosalmeida/code/ArduinoShieldSPI/" target="_blank">Marcelo Barros /  This repository is a program ArduinoShieldSPI<br /></a><a  href="http://a-desk.jp/modules/forum_hobby/index.php?cat_id=7" target="_blank">ASOOVU USB<br /></a><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6822610.html">
<title>たぶん最後のカイゼン LEDのチラつきをなくしキー入力を確実に</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6822610.html</link>
<description>　以下の続き。 カイゼンCookieClicker用自動マウスクリック(TimerOne割り込みによるキー読み取り)  Arduino Leonardoでマウスクリック/クッキーを自動的に焼く装置(マウスクリック99回/秒、設定変更可能)　残り、気になっている点は7セグメントLEDのチラつきと、クリック...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2013-09-20T03:04:36+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[　以下の続き。<br /><br />&nbsp;<a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/6820679.html">カイゼンCookieClicker用自動マウスクリック(TimerOne割り込みによるキー読み取り) &nbsp;</a><br /><br /><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/6815865.html">Arduino Leonardoでマウスクリック/クッキーを自動的に焼く装置(マウスクリック99回/秒、設定変更可能)<br /></a><br />　残り、気になっている点は7セグメントLEDのチラつきと、クリック送出開始・送出終了のキー反応が敏感すぎること。一回確実に押しっぱなしにしてON、離してから次に押しっぱなしにしてOFFのような動作にしたい。<br /><br />　LEDのチラつきは表示を消してから書いているためで、値が変わらなければ表示の更新もしないことで解決。BASICでゲーム作る時は移動先にキャラクタを描いてから元のキャラクタを消さないとちらついてましたね。<br /><br />　送出開始・終了は、割り込みルーチン内で直前は押していない、現在は押している状態を認識させればよい。押しっぱなしでも記録されるのは１回だけ。これでかなり操作性が良くなった。<br />　なおディレイ間隔の増減は押しっぱなしで連続的に変化してもらいたいためそのままとした。<br /><br />　 key=digitalRead(CBTN);<div>&nbsp; if (key==LOW &amp;&amp; Psend==HIGH) Send=1; // Press</div><div>&nbsp; Psend=key;</div>&nbsp;<br />ソースはこちら：<br /><a  target="_blank" href="https://gist.github.com/houmei/6627272">https://gist.github.com/houmei/6627272<br /></a><br />現在、4.5GcpsでUncannyClickerのarchivementを得た。<br />&nbsp;<a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/6820679.html"></a>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6820679.html">
<title>カイゼンCookieClicker用自動マウスクリック(TimerOne割り込みによるキー読み取り)</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6820679.html</link>
<description>前回作ったArduino Leonardoでマウスクリック/クッキーを自動的に焼く装置(マウスクリック99回/秒、設定変更可能)が大変雑だったので、スケッチを作りなおした。　どのへんが雑だったかというと：(1)ループ内でキーを読み込んでいるため、ループ回数などが簡単にいじれずキー...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2013-09-19T01:01:39+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[前回作った<br /><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/6815865.html">Arduino Leonardoでマウスクリック/クッキーを自動的に焼く装置(マウスクリック99回/秒、設定変更可能)<br /></a>が大変雑だったので、スケッチを作りなおした。<br /><br />　どのへんが雑だったかというと：<br />(1)ループ内でキーを読み込んでいるため、ループ回数などが簡単にいじれずキーの反応も悪い。<br />(2)1000回ループのうち指定した回数を最初の方に1ms間隔でマウスクリックを押し込めたのでどうもよろしくない(ブラウザが固まることがある)<br /><br />　特に操作感が悪かったのでキー入力を取りこぼさないようタイマ割り込みで読み取り、グローバル変数に結果を置き、メインのループでそれを参照するようにした。また、マウスクリック(1ms)＋指定したms何もしないで待つ、という動作を繰り返すようにしてなるべくマウスクリックを一定間隔にあけられるようにした。このため、7セグLEDでの表示は待ち時間のmsに変更。つまり数値が小さいほど時間あたりのクリック数は多い。<br /><br />ソースはこちら：<br /><a  target="_blank" href="https://gist.github.com/houmei/6611030">https://gist.github.com/houmei/6611030</a>&nbsp;<br /><br />　タイマ割り込みについてはTimerOneライブラリを使用する。これはArduino Leonardoにも対応している。動作は簡単に言うとBASICのON TIME GOSUB 行番号。通じた？<br /><br />　TimeOneライブラリを使用するにはsetup()内で初期化する。<br /><div><br />&nbsp; Timer1.initialize();</div><div>&nbsp; Timer1.attachInterrupt(readkey,30000); // 30ms&nbsp;</div><div><br />これで30ms間隔でreadkey()関数を呼び出す。<br /><br />　readkey()関数はプッシュボタンの状態を呼び出す。直前のボタンの状態と比較し、押されていたらグローバル変数Up,Down,Sendを1に設定する。これはボタンのチャタリングを除去するため。Up,Down,Sendはloop()内で読み出したら0にクリアする。<br /><br /><div>volatile int Send=0;</div><div>volatile int Up=0;</div><div>volatile int Down=0;</div><br /><div>volatile int Psend=0;</div><div>volatile int Pup=0;</div><div>volatile int Pdown=0;</div><br /><div>void readkey() {</div><div>&nbsp; int key;</div><div>&nbsp; key=digitalRead(ABTN);</div><div>&nbsp; if (key==LOW &amp;&amp; Pdown==LOW) Down=1;</div><div>&nbsp; Pdown=key;</div><div>&nbsp; key=digitalRead(BBTN);</div><div>&nbsp; if (key==LOW &amp;&amp; Pup==LOW) Up=1;</div><div>&nbsp; Pup=key;</div><div>&nbsp; key=digitalRead(CBTN);</div><div>&nbsp; if (key==LOW &amp;&amp; Psend==LOW) Send=1;</div><div>&nbsp; Psend=key;</div>}<br /><br />　さて、ちょっとはまったのが&nbsp;noInterrupts()と&nbsp;interrupts()。これらは割り込みを抑止/許可するのだが、Mouse.click()以前にnoIntterrupts()状態だとクリックが送出されない。つまり、USBのHIDマウス/キーボードを使うときには割り込みを許可しておかなければならない。<br />&nbsp;</div>　で、だいぶ操作感は改善されましたよ。<br /><br /><a  target="_blank" title="2013cookieclick3" href="http://livedoor.blogimg.jp/hardyboy/imgs/e/c/eceb532a.jpg"><img  align="left" class="pict" hspace="5" alt="2013cookieclick3" border="0" height="640" width="480" src="http://livedoor.blogimg.jp/hardyboy/imgs/e/c/eceb532a-s.jpg"></a><br  clear="all">
<br /><br /><br /><br />現在3.5Gcps (cookies per second)<br /><br /><a  target="_blank" href="http://orteil.dashnet.org/cookieclicker/">http://orteil.dashnet.org/cookieclicker/</a>&nbsp;<br /><br /><br /><br />
<table  cellpadding="5" border="0"><tbody><tr><td  valign="top"><a  target="_top" href="http://www.amazon.co.jp/exec/obidos/ASIN/B008A36R2Y/keisanki-22/"><img  alt="Arduino Leonardo (ソケット・ヘッダ付き)" border="0" src="http://ecx.images-amazon.com/images/I/51pufPr%2BguL._SL160_.jpg"></a></td><td  valign="top"><span  style=""><a  target="_top" href="http://www.amazon.co.jp/exec/obidos/ASIN/B008A36R2Y/keisanki-22/">Arduino Leonardo (ソケット・ヘッダ付き)</a><br /><br />Arduino  <br />売り上げランキング : 38773<br /><br /><a  target="_top" href="http://www.amazon.co.jp/exec/obidos/ASIN/B008A36R2Y/keisanki-22/">Amazonで詳しく見る</a></span><span  style=""> by <a  href="http://www.goodpic.com/mt/aws/index.html">G-Tools</a></span></td></tr></tbody></table>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6815865.html">
<title>Arduino Leonardoでマウスクリック/クッキーを自動的に焼く装置(マウスクリック99回/秒、設定変更可能)</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6815865.html</link>
<description>　なぜか今日ツイッターの自分のTLで突然流行り始めたクッキークリッカー。最初はクッキーをクリックするだけだったのが……http://orteil.dashnet.org/cookieclicker/　常にクリックするのも面倒なので、勝手に連続クリックするのを作ってみた。マウスクリックの代わりはArd...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2013-09-16T01:57:15+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[　なぜか今日ツイッターの自分のTLで突然流行り始めたクッキークリッカー。最初はクッキーをクリックするだけだったのが……<br /><a  href="http://orteil.dashnet.org/cookieclicker/" target="_blank">http://orteil.dashnet.org/cookieclicker/</a><br /><br />　常にクリックするのも面倒なので、勝手に連続クリックするのを作ってみた。マウスクリックの代わりはArduino Leonardoを使えば簡単にできそうだ、ということでその辺にある物で作ってみた。<br /><br /><a  href="https://gist.github.com/houmei/6572149" target="_blank">https://gist.github.com/houmei/6572149<br /></a><br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/c/1/c111f3b5.jpg" title="2013cookie" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/c/1/c111f3b5-s.jpg" width="480" height="360" border="0" alt="2013cookie" hspace="5" class="pict" align="left"></a><br />
<br  clear="all">
<br />　Pin8,9,10にタクトスイッチを接続。もう片方はGNDへ。<br />　表示は<a  href="http://www.switch-science.com/catalog/1128/" target="_blank">シリアル接続7セグメント4桁LED(赤)</a>を使ったけどクリック動作には直接関係ない。約１秒あたりのクリック数を表示させる。これはArduino Leonardoのハードウェアシリアル機能を使うのでPin2をモジュールのRXに接続する。以前ちょっと試した。<br /><a  href="http://blog.livedoor.jp/hardyboy/archives/6073566.html" target="_blank">シリアル接続7セグメント4桁LEDとUSB-TTLシリアルコンバータケーブル</a><br />　8,9に接続したボタンでクリックする数を増減させる。10に接続したボタンでクリックの開始と停止。これはメインのループ内でポーリングしているだけなので応答が悪い。クリックを送出している時はLeonardo上のLEDを点灯させる。ま、TXランプが点滅するのでわかるんだけど。<br />　やってみたら1秒あたり100回ぐらい、もっと増やすとブラウザ側が応答できなくなってくる。<br /><br />
　こんな感じでスクリプト言語を使ってるみたいに思いついたものを作りたいんだけど、物理的な部品と使い方のストックが必要なのよねー&nbsp;<br />&nbsp;]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6147545.html">
<title>ArduinoIDE1.0.3 USB-HID特に変わらず</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6147545.html</link>
<description>やっと今日Arduino1.0.3のソースがダウンロードできたので、USB0-HIDのキーボード部分をチェックした。//	Keyboard    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)	// 47
    0x09, 0x06,                    // USAGE (Keyboard)
    0xa1, 0x01,     ...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-12-16T04:18:36+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[やっと今日Arduino1.0.3のソースがダウンロードできたので、USB0-HIDのキーボード部分をチェックした。<br /><br /><span style="white-space: pre;">//	Keyboard</span><br /><div><span style="white-space: pre;"><code><pre>    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)	// 47
    0x09, 0x06,                    // USAGE (Keyboard)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x85, 0x02,                    //   REPORT_ID (2)
    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)
   
	0x19, 0xe0,                    //   USAGE_MINIMUM (Keyboard LeftControl)
    0x29, 0xe7,                    //   USAGE_MAXIMUM (Keyboard Right GUI)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)
    0x75, 0x01,                    //   REPORT_SIZE (1)
    
	0x95, 0x08,                    //   REPORT_COUNT (8)
    0x81, 0x02,                    //   INPUT (Data,Var,Abs)
    0x95, 0x01,                    //   REPORT_COUNT (1)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x81, 0x03,                    //   INPUT (Cnst,Var,Abs)
    
	0x95, 0x06,                    //   REPORT_COUNT (6)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0x65,                    //   LOGICAL_MAXIMUM (101)
    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)
    
	0x19, 0x00,                    //   USAGE_MINIMUM (Reserved (no event indicated))
    0x29, 0x65,                    //   USAGE_MAXIMUM (Keyboard Application)
    0x81, 0x00,                    //   INPUT (Data,Ary,Abs)
    0xc0,                          // END_COLLECTION

</pre>
</code>そんなわけで LOGICAL_MAXIMUM(101) 、USAGE_MAXIMUM(101) →0x65 で変わらず。<br />なんで毎回制限してんだろ？日本語キーボードなど国際化無視？<br />&nbsp;</span></div>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6054470.html">
<title>Arduino IDE1.0.2 1.0.1との違い調査</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6054470.html</link>
<description>Arduino IDE 1.0.2がリリースされた。Download the Arduino Software　リリースノートが和訳されている。2012/11/5 Arduino-1.0.2リリース　Arduino IDE 1.0.1でいじって気付いたLeonardo周りについて変化がないか確認した。(1)USB HIDキーボードの送出可能コード範囲ソース...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-11-07T12:40:03+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[Arduino IDE 1.0.2がリリースされた。<br /><a target="_blank" href="http://arduino.cc/en/Main/Software">Download the Arduino Software<br /></a><br />　リリースノートが和訳されている。<br /><a target="_blank" href="http://www.musashinodenpa.com/wiki/">2012/11/5 Arduino-1.0.2リリース<br /></a><br />　Arduino IDE 1.0.1でいじって気付いたLeonardo周りについて変化がないか確認した。<br /><br />(1)USB HIDキーボードの送出可能コード範囲<br />ソースのHID.cppから該当箇所を確認。送出可能なコードの指定部分は0x65(101)で以前と変わらない。<br /><br />(2)割込み<br /><a target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/5641339.html">Arduino Leonardoの外部割り込み番号とピンの割り当てが異なる<br /></a><br />これも変わらなかった。<br />PIN2かPIN3にスイッチを付けてGNDに落とし、割込みがかかるか調べる。<br /><br />Arduino UNO R3:<br />INTNUM=0,INTPIN=2でPIN2○ PIN3×<br />INTNUM=0,INTPIN=3でPIN2○ PIN3△&nbsp;(保証外動作)<br />INTNUM=1,INTPIN=2でPIN2× PIN3○ (保証外動作)<br />INTNUM=1,INTPIN=3でPIN2× PIN3○&nbsp;<br /><br />Arduino Leonardo:<br />INTNUM=0,INTPIN=2でPIN2× PIN3△<br />INTNUM=0,INTPIN=3でPIN2× PIN3○<br />INTNUM=1,INTPIN=2でPIN2○ PIN3×<br />INTNUM=1,INTPIN=3でPIN2△ PIN3△ (不安定)<br /><br />今後の実験はArduino IDE 1.0.2に移行する。<br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/5993170.html">
<title>PS/2キーボード変換器の製作(19) HEXファイルにパッチを当てる</title>
<link>http://blog.livedoor.jp/hardyboy/archives/5993170.html</link>
<description>前回、Arduino LeonardoではUSBキーボードに関するHID Report Descriptorではふつうの日本語キーボード等とは違い、キーの上限を101に制限していることがわかった。これが原因で日本語キーボードの[¥]や[ろ]に対応するコードを送っても無視されていた。　このHID Report Des...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-10-10T12:20:18+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[前回、Arduino LeonardoではUSBキーボードに関するHID Report Descriptorではふつうの日本語キーボード等とは違い、キーの上限を101に制限していることがわかった。これが原因で日本語キーボードの[¥]や[ろ]に対応するコードを送っても無視されていた。<br />　このHID Report Descriptorの記述はArduino IDE1.0.1のソースにあるHID.cppの中で定義されてある。これはコンパイル済みなのでいじれない。そこでArduino IDEが生成する、マイコンに書き込むイメージファイルである.HEXファイルにパッチを当てることにした。<br /><br />　Arduino IDE1.0.1でコンパイル時に生成される.hexファイルの所在は以下の方法で知ることが出来る。<br /><a target="_blank" href="http://ytsuboi.hatenablog.jp/entry/2011/11/26/031418">Arduino開発環境が使えなくなってハマった件<br /></a><br />例えばこのようなディレクトリの中に生成される。(MacOSX)<br />/var/folders/r5/h8nsfjps4kzdltsm9t4p0qr00000gn/T/build2978712088924621678.tmp/sketch_oct06a.cpp.hex<br /><br />.hexファイルはひとつしかないので、これをコピーして以下のパッチを当てる。<br />25行目、<br /><div>:100180008103950675081500256505071900296581</div><div>　↓</div><div>:10018000810395067508150025FE0507190029FE4F</div><br />　パッチ当て後はチェックサムも変更しなければならないのでawkで作ったツールで確認した。<br /><a target="_blank" href="http://d.hatena.ne.jp/houmei/20121009">[awk]インテルHEXフォーマットのチェッカ<br /></a><br />　こうやって作った.hexファイルを書き込む。色々試行錯誤して、結局AVRISPmkIIを使った。<br />&nbsp;<br />$ /Applications/Arduino1.0.1.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino1.0.1.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cavrispmkII -Pusb -b57600 -e -Uflash:w:ok.hex:i<br /><br />書き込み用ツールavrdudeはArduinoIDE内のものを、confファイルも同様。ここでは-eでフラッシュメモリを消去してから書き込んでいる。-Uオプションで消去をスキップしたらverifyでエラーが出たため。<br /><br />以下、ログ<br />
<tt>
<pre>avrdude: Version 5.11, compiled on Sep  2 2011 at 18:52:52
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino1.0.1.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/takesita/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : usb
         Using Programmer              : avrispmkII
         Overriding Baud Rate          : 57600
avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200081404
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10     8    0 no       1024    8      0  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel AVR ISP mkII
         Programmer Model: AVRISP mkII
         Hardware Version: 1
         Firmware Version Master : 1.10
         Vtarget         : 5.0 V
         SCK period      : 8.00 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9587
avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D8
avrdude: safemode: efuse reads as CB
avrdude: erasing chip
avrdude: reading input file "ok.hex"
avrdude: writing flash (6676 bytes):

Writing | ################################################## | 100% 2.75s

avrdude: 6676 bytes of flash written
avrdude: verifying flash memory against ok.hex:
avrdude: load data flash data from input file ok.hex:
avrdude: input file ok.hex contains 6676 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 2.01s

avrdude: verifying ...
avrdude: 6676 bytes of flash verified

avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D8
avrdude: safemode: efuse reads as CB
avrdude: safemode: Fuses OK

avrdude done.  Thank you.

</pre>
</tt>
<br />　これで書き込んだLeonardo(Davinci)をPCに接続し、前回のキー入力テストを行うと、ちゃんと￥マークが入力できた。成功！<br /><br />　なお、Arduino IDEのソース中ではLEDの状態を受信する部分は定義されていないので、USB経由の指示で、接続したPS/2キーボードのLEDを制御することができないようだ。<br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/5988173.html">
<title>PS/2キーボード変換器の製作(18) USBキーボードの無視されるキーについて</title>
<link>http://blog.livedoor.jp/hardyboy/archives/5988173.html</link>
<description>正確にはArduino Leonardoで送信するキーのコードの一部が無視される現象について。　WindowsXPで日本語キーボードが使える状態にして[¥]、[ろ]キーに対応するUsageコード0x89,0x87を送信する。普通の日本語キーボードでは期待通りの表示。だがArduino Leonardoから対応する...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-10-08T05:08:14+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[正確にはArduino Leonardoで送信するキーのコードの一部が無視される現象について。<br /><div><br />　WindowsXPで日本語キーボードが使える状態にして[¥]、[ろ]キーに対応するUsageコード0x89,0x87を送信する。普通の日本語キーボードでは期待通りの表示。だがArduino Leonardoから対応するコード0x89,0x87を送信しても無視される。この動作はUbuntu12.04をインストールした日本語キーボード接続のPCでも同様。<br />　<a target="_blank" href="http://www.usblyzer.com/">USBlyzer</a>&nbsp;というのを使ってパケットを監視してみた。これは有料だがお試し期間がある。<br />すると、日本語キーボードを接続したときは0x89を含むパケットにInternational3、0x87を含むパケットにInternational1の注釈がはいる。 しかしArduino Leonardoの場合は0x89、0x87とも注釈がApplicationとなっている。おなじキーボードデバイスなのに違う扱いを受けているようだ。どこかに違いがあるはずだが、ディスクリプタをよく理解していないので時間がかかりそう。キーボードに種別があるような記述は見つけていないし、ディスクリプタ中に現れるbCountrycodeは日本語キーボードでも0だったため、使われる地域の指定は無関係だった。他にあるのか。<br /><br />　なお、調査中にわかったのだが、日本語キーボードの全角/半角キーはUsage 0x94にコードが割り当てられているが、実際に全角/半角の動作に切り替わるのは0x35[｀]だった。<br /><br />追記：なんとなくわかってきた。<br /><br /><a target="_blank" href="https://gist.github.com/3854088">https://gist.github.com/3854088<br /></a><br />普通の日本語キーボードのHID Report Descriptorでは<br /><br />Logical Minimum 0<br />Logical Maxmum 255<br />Usage Minimum (Undefined)<br />Usage Maximum 255<br /><br />だけど、Arduino Leonardoは<br /><br />Logical Minimum 0<br />Logical Maxmum 101<br />Usage Minimum (Undefined)<br />Usage Maximum 101 (アプリケーションキーまで)<br /><br />となっている。0x89や0x87のコードを送っても無視されるのは多分このせい。<br /><br />これらの記述はHID.cppの最初の方にある。これは……パッチを当てるしかないのか？<br /><br /><br />以下、資料：&nbsp;<br /><a target="_blank" href="http://mcn.oops.jp/wiki/index.php?USB%2FDescriptor">USB Descriptor<br /></a><a target="_blank" href="http://esyokunin.dee.cc/30xSub_USB_Siyou/331_Siyou1_HidKb/331_Siyou1_HidKb.html">マウス付きUSBキーボードのディスクリプタ構成を調べる<br /></a><a target="_blank" href="http://www.wdic.org/w/TECH/HID%E3%82%AF%E3%83%A9%E3%82%B9">HIDクラス<br /></a><a target="_blank" href="http://linux.die.net/Mobile-Guide/mobile-guide-p2c1s6-keyboard.html">http://linux.die.net/Mobile-Guide/mobile-guide-p2c1s6-keyboard.html<br /></a><a target="_blank" href="http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html">USBキーボードのキーコード<br /></a><a target="_blank" href="http://msdn.microsoft.com/ja-jp/library/windows/hardware/gg487473.aspx">アーカイブ: HID デバイスのハードウェア ID<br /></a><a target="_blank" href="http://www.usb.org/developers/devclass_docs/HID1_11.pdf">Device Class Definition  for Human Interface  Devices (HID) [pdf]<br /></a><a target="_blank" href="http://www.usb.org/developers/devclass_docs/Hut1_11.pdf">HID Usage Tables[pdf]</a><a target="_blank" href="http://www.usb.org/developers/devclass_docs/Hut1_11.pdf">HID Usage Tables</a><br /><br /></div>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/5983665.html">
<title>PS/2キーボード変換器の製作(17) USBキーボードの任意コードの送出</title>
<link>http://blog.livedoor.jp/hardyboy/archives/5983665.html</link>
<description>Arduino Leonardo＋IDE1.0.1ではKeyboard.press() / release()でUSB HIDキーボードのキーを押したような動作ができるが、引数としてアルファベットはASCIIコードを受け付け、HID Usage IDに変換してから送出しているので送れないキーがある。できれば余計な変換なしでHID Usa...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-10-06T21:17:29+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[Arduino Leonardo＋IDE1.0.1ではKeyboard.press() / release()でUSB HIDキーボードのキーを押したような動作ができるが、引数としてアルファベットはASCIIコードを受け付け、HID Usage IDに変換してから送出しているので送れないキーがある。できれば余計な変換なしでHID Usage IDをそのまま送りたい。<br />　キーボードのコードを送信している部分&nbsp;<a target="_blank" href="http://roboticsclub.org/redmine/projects/quadrotor/repository/revisions/58d82c77908eee0e1c222f7b38691e6532deb77b/entry/arduino-1.0/hardware/arduino/cores/arduino/HID.cpp">HID.cpp</a>内の<span style="background-color: rgb(250, 250, 250); color: rgb(72, 72, 72); font-size: 12px; white-space: pre-wrap; ">Keyboard_::sendReport(KeyReport* keys)</span>はUSBAPI.hではprivateで宣言されている。USBAPI.hをコピーしてここだけpublic宣言にすればダマせるかなとやってみたがそんなのは通用しなかった。ここはコンパイル済で提供されているのでいじると大げさだしそんな実力はない。ということで、sendReport()内で呼び出してるHID_SendReport()は隠されてないのでこれを呼び出すArduinoライブラリを作ってみた。<br /><br /><a target="_blank" href="https://gist.github.com/2ad9f7a713f46149e72f">https://gist.github.com/2ad9f7a713f46149e72f<br /></a><br />ほぼHID.cppからのコピペですよ。]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/5961040.html">
<title>PS/2キーボード変換器の製作(16) ArduinoIDE1.0.1</title>
<link>http://blog.livedoor.jp/hardyboy/archives/5961040.html</link>
<description>Bootloaderメモ：ArduinoのブートローダをいじってHIDのみホストに認識させることはできないだろうか？dfu-programmerATmega 32u4 bootloader without ISP connectionUSBメモ：Arduino Leonardoを使ってUSBキーボード相当を実現しようとすると日本語キーボードの一部(￥、＿)...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-10-04T00:10:38+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[Bootloaderメモ：<br />ArduinoのブートローダをいじってHIDのみホストに認識させることはできないだろうか？<br /><a target="_blank" href="http://dfu-programmer.sourceforge.net/">dfu-programmer</a><br /><br /><a target="_blank" href="http://arduino.cc/forum/index.php?topic=123488.0">ATmega 32u4 bootloader without ISP connection</a><br /><br />USBメモ：<br />Arduino Leonardoを使ってUSBキーボード相当を実現しようとすると日本語キーボードの一部(￥、＿)に対応するコードが送信できない。keyboard.press()を実現している部分をArduinoIDE1.0.1のソースから持ってきてそのままのコードを送れるように書き換えた。<br />ただしコンパイルが通った程度＆汚いのでとりあえず置いとく。今週ちゃんと書きなおす。<a href="https://gist.github.com/3827425" target="_blank"><br /><br />https://gist.github.com/3827425<br /></a>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/5867751.html">
<title>PS/2キーボード変換器の製作(15) US配列→JP配列の問題点</title>
<link>http://blog.livedoor.jp/hardyboy/archives/5867751.html</link>
<description>US配列から日本語配列に変換する部分を作成した。
Arduino用のスケッチは以下のとおり。これはUSB HIDキーボードに文字を出力すると共にシリアルポートにデバッグ情報を流す。https://gist.github.com/3464019

ライブラリ(ps2kybd.h、ps2kybd.cpp)は前回から修正なし。
http...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-08-25T20:44:05+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[US配列から日本語配列に変換する部分を作成した。
<br />Arduino用のスケッチは以下のとおり。これはUSB HIDキーボードに文字を出力すると共にシリアルポートにデバッグ情報を流す。<br /><a href="https://gist.github.com/3464019" target="_blank">https://gist.github.com/3464019</a><br />

ライブラリ(ps2kybd.h、ps2kybd.cpp)は前回から修正なし。
<a target="_blank" href="https://gist.github.com/ab100bfb33a78ddf067d"><br />https://gist.github.com/ab100bfb33a78ddf067d</a><br />

<br /><br />記号の置き換えは、以下のパターンで行う。<br />(1)SHIFTを押していない状態でSHIFTを押したような入力……右シフトキーpress、置き換えコード、右シフトキーrelease<br />(2)SHIFTを押していない状態で記号の置き換え……置き換えコード<br />(3)SHIFTを押した状態でSHIFTを押したような入力……置き換えコード<br />(4)SHIFTを押した状態でSHIFTを押さないような入力……左右のシフトキーをrelease、置き換えコード、元のシフトキーをpress<br /><br />ALTキーを押した状態では、[`~]キーは変換せずにそのまま出力することで[ALT]+[漢字]と同じ操作になる。<br /><br />　これで記号の置き換え、漢字入力のON/OFFができた。<br /><br />　残った問題点。<br />(1)CapsLockの扱い。CapsLockはUSキーではSHIFT併用だが、日本語キーではそのまま。<br />→Capsフラグはライブラリ側にまかせているが、これをスケッチ側で対処<br />(2)[¥_]が入力できない　→Arduino LeonardoはいったんASCIIコードで受けて内部で変換しUSB HIDコードを送っている。USキーのレイアウトを前提にしているため、日本語配列の[¥_]は対応するものがない。<br />(3)このアダプタをWindowsXPに接続するたびにデバイスドライバの確認ダイアログが登場する。<br /><br />(2)、(3)は非常に大きな問題。<br /><br />(2)はUSB HIDを直接送出する方法を調べなければならない。<br />(3)はArduinoのブートローダを置き換えなければならない。<br /><br />うーん、これはけっこう難しいぞ……<br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/5809882.html">
<title>スイッチサイエンス32U4ブレークアウトボードとAVRISPmkII</title>
<link>http://blog.livedoor.jp/hardyboy/archives/5809882.html</link>
<description>スイッチサイエンスの32U4ブレークアウトボードをArduino Leonardo化した。SWITCH SCIENCE 32U4ブレークアウトボードAVR ISPmkIIでArduinoブートローダを書き込むための端子は以下。SCK (2).B1MOSI (3).B2MISO (4).B3RST (5)Vcc (6)GND (21)ACR ISPmkIIのICSP端子を上から見...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-08-05T21:39:40+09:00</dc:date>
<dc:subject>Leonardo</dc:subject>
<content:encoded><![CDATA[スイッチサイエンスの32U4ブレークアウトボードをArduino Leonardo化した。<br /><br /><a href="http://www.switch-science.com/products/detail.php?product_id=865" target="_blank">SWITCH SCIENCE 32U4ブレークアウトボード<br /></a><br />AVR ISPmkIIでArduinoブートローダを書き込むための端子は以下。<br /><br />SCK (2).B1<br />MOSI (3).B2<br />MISO (4).B3<br />RST (5)<br />Vcc (6)<br />GND (21)<br /><br />ACR ISPmkIIのICSP端子を上から見た図<br /><img src="http://livedoor.blogimg.jp/hardyboy/imgs/5/c/5cdd617e.png" width="292" height="250" border="0" alt="AVRISPmkIIcon" hspace="5" class="pict"><br /><br />ブレッドボード上で書き込み用の接続。32U4ブレークアウトボードはひっくり返して載せてる。また、AVR ISPmkIIのICSPコネクタは写真では上を向けているのでVccが左上に見える(赤い線)。<br /><img src="http://livedoor.blogimg.jp/hardyboy/imgs/4/6/46b2ab3e.jpg" width="400" height="300" border="0" alt="AVRISPmkII-32U4" hspace="5" class="pict"><br />&nbsp;<br />　Arduino IDEから[ツール]→[書込装置]でAVRISPmkIIを選択し、[ツール]→[ブートローダを書き込む]でしばらく待つと青いLEDが点滅するようになる。これでOK。<br /><br />参考：<br /><a target="_blank" href="http://itp.nyu.edu/physcomp/Tutorials/AVRCProgramming-Programmer">AVRC Programming-Programmer</a>]]>
</content:encoded>
</item>

</rdf:RDF>
