タブレットスタンド【2023最新型5穴土台&ケーブル固定具付き】寝ながら スマホスタンド 4つの関節 折り畳み式 自由角度調整 卓上スタンド 360°回転ホルダー 縦横両対応 4-12.9インチの iPad/iPhone/Surface/Galaxy/mini/Kindle/Switchに対応 (Black)
¥2,123 (2025年5月3日 13:14 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)SteelSeries ワイヤレス ゲーミングヘッドセット ヘッドホン 軽量 ボイスチャット可能 ゲームとスマホを同時接続 Arctis Nova 7P 無線 密閉型 Switch PC PS5 PS4 対応 AIノイズキャンセリング 空間オーディオ Hi-Fiサウンド 調整可能 61561 ホワイト×ブルー
¥26,345 (2025年5月3日 13:16 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)
LCDディスプレイへの出力ができるようになったので次にI2Cベースのディスプレイを接続し、文字列およびグラフィックス出力を行なう。
Amazonで購入したOLEDディスプレイ 0.96インチ 2個入り OLEDモジュール I2C 128X64 4ピン ホワイト Arduinoに対応を使用する。
このディスプレイは次のような特徴のOLEDディスプレイです。
- サイズ:0.96インチ
- 解像度:128×64ピクセル
- 表示色:白
Radpberry Pi PicoとOLEDディスプレイは下記のピンを接続する。
OLEDのピン | Picoのピン(物理ピン) |
---|---|
VDD | 3V3(36) |
GND | GND(3) |
SDA | GP14(19) |
SCL | GPD15(20) |
配線は次の通り。
PicoMiteがサポートするディスプレイやRTCなどのシステムデバイスを接続するI2CピンはコマンドプロンプトでOPTIONコマンドを使ってプログラムを実行する目に登録する必要がある。
また、今回利用するOLEDディスプレイのドライバSD1306はPicoMiteでサポートされているのでOPTIONコマンドでドライバチップを指定すればMMBasicのコマンドで容易に出力を制御できる。
システムで使用するI2Cピンとディスプレイのドライバチップの登録コマンドを次に示す。これらのコマンドはコマンドプロンプトで実行する。
システムデバイスを接続するI2Cポートの指定
> OPTION SYSTEM I2C GP14, GP15
ディスプレイのチップとディスプレイの向きの指定
> OPTION LCDPANEL SSD1306I2C, LANDSCAPE
- SSD1306I2Cは解像度128×64で初期化、SSD1306I2C32を指定すると解像度128×32で初期化されます
- ディスプレイの向きはLANDSCAPE(横向き)、PORTRAIT(縦向き)、RLANDSCAPE(逆さの横向き)またはRPORTRAIT(逆さの縦向き)のいずれかを指定します。これらは、L、P、RLまたはRPの短縮表記を利用できます
参考:LCDパネル設定を無効化
ディスプレイの向きを変更したい場合、次のコマンドで無効化し、再度設定する。
ディスプレイの1行目に文字列Hello MMBasicをデフォルトのフォントで、2行目に文字列Helloをフォント番号2で、3行目に文字列worldをフォント番号3で表示するプログラムを以下に示す。
CLS ' Clear screen
Text 0, 0, "Hello MMBasic!"
Text 0, 12, "Hello!",, 2
Text 0, 32, "World!",, 3
Textコマンドは下記の代表的な描画コマンドに示すように指定した座標から文字列を指定したフォントで描画します。5番目の引数が文字列描画用のフォント番号です。フォント番号を指定しなかった場合はデフォルトのフォントが使われます。フォント番号は下記のフォント番号を参照してください。
座標はディスプレイの左上が(0, 0)でX軸は右方向が+、Y軸は下方向が+となる。
次のような表示が得られる。
今回使用しているOLEDディスプレイは白色のみなので色を指定しても白色しか表示できない。
以下はPicoMiteユーザマニュアルに記載されている代表的な描画コマンドです。斜体の引数はオプションで省略可の鵜です。
コマンド | 機能 |
---|---|
CLS C | 画面をC色にクリアします。 Cが指定されていない場合は、現在のデフォルトの背景色が使用されます。 |
PIXEL X, Y, C | ピクセルを光らせる。 Cが指定されていない場合は、現在のデフォルトの前景色が使用されます。 |
LINE X1, Y1, X2, Y2, LW, C | X1とY1から始まり、X2とY2で終わる線を描きます。 LWは線の幅で、水平線または垂直線にのみ有効です。指定されていない場合、または斜線の場合、デフォルトで1になります。斜線用の拡張バージョンがあります。 |
BOX X, Y, W, H, LW, C, FILL | XとYから始まり、幅Wピクセル、高さHピクセルのボックスを描画します。 LWはボックスの側面の幅で、ゼロにすることもできます。デフォルトは1です。 Cは線の、FILLは塗りつぶしの色の指定。 |
RBOX X, Y, W, H, R, C, FILL | XとYから始まり、幅Wピクセル、高さHピクセルの角の丸いボックスを描画します。 Rはボックスの角の半径です。デフォルトは10です。 |
CIRCLE X, Y, R, LW, A, C, FILL | XとYを中心とし、半径Rの円を描きます。 LWは、円を描く線の幅です。円周は0にすることができます(デフォルトは1)。 Aはアスペクト比で、浮動小数点数で、デフォルトは1です。たとえば、アスペクト比が0.5の場合、幅が高さの半分の楕円が描画されます。 |
TEXT X, Y, STRING, ALIGNMENT, FONT, SCALE, C, BC | XとYから始まる文字列を表示します。 ALIGNMENTは0、1、または2文字です(文字列式または変数も使用できます)。最初の文字はXの水平方向の配置で、L(左揃え)、C(中央揃え)、R(右揃え)またはテキストの場合はLEFT、CENTER、またはRIGHTです。2番目の文字はYの垂直方向の配置で、T(上揃え)、M(中央揃え)、B(下揃え)またはテキストの場合はTOP、MIDDLE、またはBOTTOMです。デフォルトの配置はLEFT/TOPです。追加のコード文字を使用してテキストを回転できます。 FONTとSCALEはオプションで、デフォルトではFONTコマンドで設定されたものになります。 Cは描画色、BCは背景色です。オプションであり、デフォルトはCOLOURコマンドによって設定されたものになります。 |
GUI BITMAP X, Y, BITS, WIDTH, HEIGHT, SCALE, C, BC | XとYから始まるビットマップのビットを表示します。 HEIGHTとWIDTHはLCDパネルに表示されるビットマップの寸法で、デフォルトは8×8です。 SCALE、C、BCはTEXTコマンドの場合と同じです。ビットマップは整数または文字列変数または定数にすることができ、最初のバイトを最上行の最初のビットとして使用して描画されます(最初にビット7、次にビット6など)。その後に次のバイトが続きます。 |
POLYGON n, xarray%(), yarray%() [, bordercolour] [, fillcolour] | xarray%()とyarray%()のn個のxy座標ペアを使用して、塗りつぶされたポリゴンまたはアウトラインポリゴンを描画します。 fillcolourが省略されている場合は、ポリゴンのアウトラインのみが描画されます。 bordercolourが省略されている場合は、現在のデフォルトの前景色がデフォルトになります。 |
ARC x, y, r1, [r2], a1, a2 [, c] | 2つの放射状(度で定義)の間に、指定された色と幅の円弧を描きます。ARCコマンドのパラメータは、円弧の中心のx座標とy座標、内側と外側の半径、円弧の開始角度と終了角度、円弧の色です。0度の参照は12時の位置にあります。 |
フォント番号
MMBasicではテキスト描画に使用できるフォントは下表の8種類があり、Textコマンドの引数で指定する。
フォント番号 | サイズ(幅x高さ) | キャラクターセット | 説明 |
---|---|---|---|
1 | 8×12 | 全95文字のASCII文字に加えて7FからFF(16進数) | 標準フォント(起動時のデフォルト) |
2 | 12×20 | 全95文字のASCII文字 | 中サイズのフォント |
3 | 16×16 | 全95文字のASCII文字 | VGAバージョン用の大きなフォント |
3 | 16×24 | 全95文字のASCII文字 | HDMIバージョンとLCDパネル用の大きなフォント |
4 | 10×16 | 全95文字のASCII文字に加えて7FからFF(16進数) | 拡張グラフィック文字のフォント。高解像度ディスプレイに適しています。 |
5 | 24×32 | 全95文字のASCII文字 | 特大フォントで非常に鮮明です。 |
6 | 32×50 | 0から9といくつかの記号 | 数字、小数点、正負、等号、度、コロン記号。非常に分かりやすい |
7 | 6×8 | 全95文字のASCII文字 | 低解像度を使用する場合に便利な小さいフォントです。 |
8 | 4×6 | 全95文字のASCII文字 | さらに小さいフォント |
日本語フォントは含まれていないため基本的には表示できないがMMBasicのフォントの定義機能を利用すれば表示可能である。
配線
図のように配線した。
温度センサーADT7410の測定データをOLEDへ出力し、その棒グラフを描くプログラムは次の通り。
Dim data%(2), raw%, temp!, X% = 0, Y% ' Define variables
Const TMP_ADDR = &H48 ' Set ADT7410 I2C address
SetPin GP16, GP17, I2C ' Set ATD7410 I2C pin
I2C OPEN 100, 100 ' Open I2C channel 1
Do
I2C READ TMP_ADDR, 0, 2, data%() ' Read temperature data
raw% = data%(0) > 3
If raw% >= 4096 Then raw% = raw% - 8192
temp! = raw% / 16.0
Y% = Int(temp!) ' Get integer value
stemp$ = Str$(temp!, 2, 1) + Chr$(&H60) + "C" ' Make string of temperature
Text 0, 0, stemp$,,3 ' Write string to OLED
Line X%, 63, X%, 63 - Y% ' Draw line
Inc X% ' Increment X
If X% = 128 Then ' Check X coordinate rearch right edge
Box 0, 24, 128, 40,,RGB(black), RGB(black) ' clear graph area
X% = 0 ' reset X coordinate
EndIf
Pause 5000 ' Wait 5 sec
Loop
I2C CLOSE ' Close I2C channel 1
End
- OLEDへ文字出力はフォント番号3を指定した
- 棒グラフはLINEコマンドで描画している
- 棒グラフを右端まで描いたら棒グラフの領域をBOXコマンドで黒く塗りつぶしてクリア
今回使用したOLEDは白色のみだがMMBasicでの色指定はRGB関数でRGBの値をそれぞれ8ビットで指定する方法RGB(rdd, green, blue)
と色名を指定する方法RGB(色名)
の二通りがある。
色名にはwhite(白)、black(黒)、blue(青)、green(緑)、cyan(シアン)、red(赤)、magenta(マゼンタ)、yellow(黄色)、brown(茶色)、white(白)、orange(オレンジ)、pink(ピンク)、gold(金)、salmon(サーモン)、beige(ベージュ)、lightgrey/lightray(ライトグレー)、grey/gray(グレー)が用意されている。
プログラムを実行すると次のような出力が得られる。
Views: 0