<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arduino &#8211; EXPERTGIG</title>
	<atom:link href="https://expertgig.jp/category/iot/arduino/feed/" rel="self" type="application/rss+xml" />
	<link>https://expertgig.jp</link>
	<description>工場IoT に特化したシステム開発</description>
	<lastBuildDate>Mon, 30 Mar 2026 08:43:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>MZ-80K/C で micro SDから mzt を読み込む基板の改善</title>
		<link>https://expertgig.jp/2026/03/29/mz-80k-c-%e3%81%a7-micro-sd%e3%81%8b%e3%82%89-mzt-%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%80%e5%9f%ba%e6%9d%bf%e3%81%ae%e6%94%b9%e5%96%84/</link>
					<comments>https://expertgig.jp/2026/03/29/mz-80k-c-%e3%81%a7-micro-sd%e3%81%8b%e3%82%89-mzt-%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%80%e5%9f%ba%e6%9d%bf%e3%81%ae%e6%94%b9%e5%96%84/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Sun, 29 Mar 2026 08:02:20 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[arduino pro]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[SD-CARD]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6241</guid>

					<description><![CDATA[MZ-80K向けに開発したプログラムを実機で試すには、それなりに手間がかかります。そんな悩みを持つ同志の手によって、micro-SDからmztファイルの読み込みを可能にするという夢のような基板を Git にて公開されてい [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>MZ-80K向けに開発したプログラムを実機で試すには、それなりに手間がかかります。そんな悩みを持つ同志の手によって、micro-SDからmztファイルの読み込みを可能にするという夢のような基板を Git にて公開されている。</p>



<p><a href="https://github.com/yanataka60/MZ80K_SD">GitHub &#8211; yanataka60/MZ80K_SD: MZ-80KシリーズでSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです · GitHub</a></p>



<p></p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="768" height="1024" data-id="6245" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-768x1024.jpg" alt="" class="wp-image-6245" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>
</figure>



<p>これに基づいて、製作された基板を手に入れて、MZ-80Kで試したのだが、FDLコマンドによる ファイルリストの表示が途中でとまってしまったり、FDでファイル名指定で読み込み開始までこぎつけても途中で通信エラーになってしまったりで、一度も成功しませんでした。</p>



<p>一方、同志によるMZ-700向けやPC-8001向けの基板はすんなり動いていますので、この基板固有の何か問題があるんだろうなと思って、Arduino pro や micro-SD ユニットなどを疑って、交換してみたものの、逆に症状が悪化したりしていました。</p>



<p>しまいには、Arduino pro の プログラムソースを書き換えて、通信速度を落としたりもしたのですが、ダメでした。</p>



<p>そこで、こうなったらできることはすべてやってみるかということで、ロジックIC  74LS30と 74LS04 について、調べたところ、74HCT シリーズのほうが出力波形が綺麗であるという情報があったので、74LS30, 74LS04 の代わりに 74HCT30, 74HCT04 を購入して、差し替えたら、なんと一発でエラー解消。</p>



<p>MZ-80K2、MZ-80C、MZ-80K2E を所有していまして、どれも同じ症状でしたらので、MZの個体の問題ではないと思いますので、MZ-80K/Cシリーズでは、ノイズの話や通信制御の能力という点で結構きわどいのか? その辺はよくわかりません。</p>



<p class="has-medium-font-size">もし同様の悩みを持っている、またはこれから基板作成に挑戦するという方はぜひ <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color"><strong>74HCT シリーズ</strong></mark>をご検討ください。</p>



<p>ちなみに、ノイズも疑って、ノイズ除去のデカップリング用途を狙って、いくつかコンデンサも同時に購入しましたが、今回は不要のようでした。</p>



<p></p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="768" data-id="6246" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-1024x768.jpg" alt="" class="wp-image-6246" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="768" data-id="6242" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-1024x768.jpg" alt="" class="wp-image-6242" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="6243" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-1024x768.jpg" alt="" class="wp-image-6243" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="6244" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-1024x768.jpg" alt="" class="wp-image-6244" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2026/03/29/mz-80k-c-%e3%81%a7-micro-sd%e3%81%8b%e3%82%89-mzt-%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%80%e5%9f%ba%e6%9d%bf%e3%81%ae%e6%94%b9%e5%96%84/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Arduino + KUMAN 2.8 TFT 画像描画</title>
		<link>https://expertgig.jp/2019/04/06/arduino-kuman-28-tft/</link>
					<comments>https://expertgig.jp/2019/04/06/arduino-kuman-28-tft/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Fri, 05 Apr 2019 21:16:00 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[IoT関連]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<guid isPermaLink="false">http://expertgig.jp/?p=3792</guid>

					<description><![CDATA[Arduino Mega2560 と KUMAN 2.8inch TFT での開発 Arduino UNO での開発事例はよくみかけるが、Megaでの情報が少ないためポイントを示すとともに、ハードへの理解を深められるよう [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>Arduino Mega2560 と KUMAN 2.8inch TFT での開発</h1>
<p>Arduino UNO での開発事例はよくみかけるが、Megaでの情報が少ないためポイントを示すとともに、ハードへの理解を深められるようにする。<br />
またArduino での TFT コントロールは処理が重いため、標準的な方法と高速化する方法を対比してスピードの比較をすることで、実用的な実装方法をある程度定義付ける。</p>
<h2>利用する TFT について</h2>
<p>今回利用する TFT は KUMAN の2.8inch TFT を利用する。<br />
Amazon で購入できる。価格は約1,200円! 考えられないくらい安いです。</p>
<p><a href="https://www.amazon.co.jp/dp/B01FYQGXYG/ref=cm_sw_r_cp_tai_qB8PCb6V2FYVK">Kuman Arduino用ディスプレイ タッチスクリーン UNO R3 2.8 inch TFT モニター SDカードコンセントつき 320*240ピクセル LCD 16bit Arduino Nano Mega2560適用ディスプレイ K60</a></p>
<h3>スペック</h3>
<ul>
<li>解像度 : 320 * 240 pix</li>
<li>画面サイズ : 2.8 inch</li>
<li>タッチパネル : 抵抗膜タッチ</li>
<li>外部記憶装置 : SDCARD スロット付き</li>
</ul>
<p>抵抗膜の感度は過不足ない感じ。この値段で SDCARD スロットまでついているのだから大したものだ。付属品としては写真にもあるスタイラスとライブラリとサンプルコードを収録したCD-ROM。</p>
<h2>Arduino Mega2560 の概要と Arduino UNO との比較</h2>
<p>Arduino Mega2560 の互換ボードは、色々でていますが 1,200円〜 とこれも大変安いです。ここまで単価が下がれば UNO ではなく Mega2560 のほうがお得感がありますね。</p>
<p><img decoding="async" src="http://expertgig.jp/wp/wp-content/uploads/2019/04/15545066022160-1.jpg" alt="">￼</p>
<p><a href="https://www.amazon.co.jp/dp/B01AXQX81I/ref=cm_sw_r_cp_tai_Yj-PCbS420837">Kuman Arduinoに対策 MEGA2560 R3 互換ボード for Arduino Rev3 Mega 2560 Rev3 USBケーブル付属 k16</a></p>
<p>細かい比較については、他のWebの情報にまかせて、ここではこのKUMANのTFTを利用するにあたって理解しておかなければならないポイントについて説明する。</p>
<p>ざっくり言うと、基本的には UNOを長くした形状になっていて、GPIO が大幅に増えている。<br />
伸びた部分以外は、UNOのピン配列と<strong>ほぼ</strong>互換になっているため UNO用のシールドが利用できることが<strong>多い</strong>。</p>
<p>なんとなく歯切れの悪い言い方で申し訳ないが、実はちょっとした違いがある。この違いのために、UNO用シールドがそのまま使えないことがある。</p>
<p><img decoding="async" src="http://expertgig.jp/wp/wp-content/uploads/2019/04/15545011961967-1.jpg" alt="">￼</p>
<p><a href="https://www.arduino.cc/en/Hacking/PinMapping2560">ATmega2560 のピン配列と ARDUINO Mega2560のピンアサインの詳細</a></p>
<p><img decoding="async" src="http://expertgig.jp/wp/wp-content/uploads/2019/04/15545043556163-1.jpg" alt="">￼</p>
<p><a href="https://www.arduino.cc/en/Hacking/PinMapping168">ATmega328 のピン配列と ARDUINO UNOのピンアサインの詳細</a></p>
<p>ARDUINOの GPIO の多くの Pin は複数の機能が割り当てられていて、切り替えて使えるのだが、よりによってSPI 通信で使う、SS, SCK, MOSI, MISO が Digital pin 50〜53に割り当てられている。UNO は Digital pin 10〜13 に割り当てられているのでこれがネックになる。</p>
<h2>SDCARD を使えるようにする</h2>
<p>今回の話では、SDCARD の読み書きで SPI 通信を利用するので、上記ピンアサインを解決しなければならない。このアサインはソフト的に変更できないので、物理的にやるしかない。<br />
方法は簡単で、シールドの pin 4本を折り曲げて、そのピンの出力を Digital pin 50〜53 にいれればOK。</p>
<h4>対応表</h4>
<table>
<thead>
<tr>
<th>機能</th>
<th>UNO</th>
<th>Mega</th>
</tr>
</thead>
<tbody>
<tr>
<td>SS</td>
<td>10</td>
<td>53</td>
</tr>
<tr>
<td>MOSI</td>
<td>11</td>
<td>51</td>
</tr>
<tr>
<td>MISO</td>
<td>12</td>
<td>50</td>
</tr>
<tr>
<td>SCK</td>
<td>13</td>
<td>52</td>
</tr>
</tbody>
</table>
<h4>接続イメージ</h4>
<p><img decoding="async" src="http://expertgig.jp/wp/wp-content/uploads/2019/04/15547971563109-1.jpg" alt="">￼</p>
<p><img decoding="async" src="http://expertgig.jp/wp/wp-content/uploads/2019/04/15547971793458-1.jpg" alt="">￼</p>
<h2>ライブラリのインストールと概要</h2>
<p>ライブラリの格納先は標準的には下記になる。<br />
C:\Users\<username>\Documents\Arduino\libraries</username></p>
<p>ここに Adafruit_GFX、Adafruit_TFTLCD、TouchScreen のライブラリをコピーする。</p>
<p>インクルードするライブラリは以下の通り。</p>
<pre><code>#include &lt;Adafruit_GFX.h&gt;    // Core graphics library
#include &lt;Adafruit_TFTLCD.h&gt; // Hardware-specific library
#include &lt;TouchScreen.h&gt;     // Touch Screen library
#include &lt;SD.h&gt;
#include &lt;SPI.h&gt;</code></pre>
<h2>Mega2560 向けにソースを修正</h2>
<p>SD-CARDを利用できるように対応するソースを次のように書き換える。</p>
<pre><code>#define PIN_SD_CS 53 // Mega2560用に変更 Unoは10

int touchPin = 52; // Mega2560-&gt;52 Uno-&gt;13
</code></pre>
<h2>digitalRead, digitalWrite の置き換え</h2>
<p>マイコンを使うからには、GPIOの情報を最速でGetしないといけない。 (と思う)<br />
一般的には、digitalRead(ピンNo) で状態を取得するが、そのルーチンは様々なチェック処理などがはいっていて、はっきりいって遅い。CPUを 44サイクルも必要とする。</p>
<p>実はポートをダイレクトに読みに行く方法がある。処理はおそらく 3サイクルしか使わない。Read部分は14倍高速になる計算ですね。とはいっても他の処理がはいってくるので、今回の場合は全体として3.5倍程度のスピードアップ。</p>
<p>例 : Mega2560 のピンアサインにある PC7 (Digitalpin 30番)の値取得</p>
<p>digitalRreadであれば、引数に30 と入れれば取得できる。簡単。</p>
<pre><code>val = digitalRead(30);</code></pre>
<p>置き換えは少しだけ頭を切り替えて、A～H までのそれぞれのポートが8ビットで構成されているということを理解してください。この例の Digital 30番ピンはPC7というところにアサインされているのがわかります。つまり PCの7ビット目 (0ビットから始まる)であることを示しています。</p>
<pre><code>val = PINC &amp; _BV(7)</code></pre>
<p>上記のように記述します。 Aポートであれば、 PINA となります。<br />
PINC は B10000000　と定義されていて、<br />
_BV($) が取得してきた $ビット目の対応ポートの値 (0,1)との論理積を求めているだけです。<br />
これにより、確認したいボートの値がLOW であれば 0 になり、 HIGH であれば 0以外になります。</p>
<h2>drawPixel の置き換え</h2>
<p>データの転送を早くする方法があるのでライブラリを書き換えても良いが、それよりも下記ライブラリに置き換えてしまうほうが速いので、その方法をすすめる。</p>
<h2>ライブラリを差し替える</h2>
<p>PDQ_GFX</p>
<p><a href="https://github.com/XarkLabs/PDQ_GFX_Libs">高速化ライブラリ GitHub &#8211; PDQ_GFX_Libs</a></p>
<h2>文字列の書き込み</h2>
<p>tftライブラリを利用する。</p>
<pre><code>tft.setCursor(x,y); //x,y は左上からのピクセル数
tft.fillRect(Left,Top,XSize,YSize); //消さないと文字が重なって描画される
tft.setTextColor(0xFFFF); //RGB565で指定　詳しくは後述
tft.setTextSize(x); // 文字サイズはx倍
tft.print("A"); //文字列</code></pre>
<h2>BMP画像の読み込み</h2>
<p>SDCardのサンプルをMega用にピンアサインを変更すればOK。</p>
<p>画像の読み込み例。背景画像を読み込んだところ (上下の画像)<br />
<img decoding="async" src="http://expertgig.jp/wp/wp-content/uploads/2019/04/2019-04-10-15.58.51.jpg" alt=""></p>
<p>画面いっぱいの画像を読み込むと10秒くらいかかります。。。遅い!</p>
<h2>RGB565</h2>
<p>RGBを2バイト(16ビット)で指定する。<br />
Red 5バイト(32階調)、Green 6バイト(64階調)、Blue 5バイト(32階調)<br />
マイコンでは画像データを少なくするために良く利用されるフォーマット。<br />
PhotoShopなどでもRGB565で出力できます。</p>
<h2>高速化の方法</h2>
<p>Arduino はお手軽であるが他のSBCに比べて処理スピードが遅いので、色々な面で高速化するのが望ましい。</p>
<h2>タッチ対応</h2>
<p>タッチ処理については、TouchScreen.h をインクルードして利用する。<br />
プログラム例を下記に示す。 ここでもdigitalWriteを使わずに、ダイレクトにポートを操作する。ことで高速化する。</p>
<pre><code>  //タッチ処理
  //digitalWrite(touchPin,HIGH);
  PINB |= _BV(1);

  TSPoint p = ts.getPoint();

  //digitalWrite(touchPin,LOW);
  PINB |= ~_BV(1);

  //タッチしてみて方向があうように
  // if sharing pins, you'll need to fix the directions of the touchscreen pins
  //pinMode(XP, OUTPUT);
  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);
  //pinMode(YM, OUTPUT);  

  // アナログ値が0～1023なのでそれを解像度でスケーリング
  p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
  p.y = (tft.height()-map(p.y, TS_MINY, TS_MAXY, tft.height(), 0));

  //押圧が範囲内であれば押圧とみなす
  if (p.z &gt; MINPRESSURE &amp;&amp; p.z &lt; MAXPRESSURE) {
    Serial.print("X = "); Serial.print(p.x);
    Serial.print("\tY = "); Serial.print(p.y);
    Serial.print("\tPressure = "); Serial.println(p.z);
    tft.fillCircle(240-p.x,320-p.y, 3, 0xFFFF);  
  }</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2019/04/06/arduino-kuman-28-tft/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
