m202md10b

package module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2022 License: MIT Imports: 11 Imported by: 0

README

Futaba M202MD10B Go ライブラリ

  • Futaba M202MD10B を シリアルポート経由で Goからコントロールするライブラリです。
  • 文字の表示、アニメーション、外字の登録に対応しています。

リファレンス

GoDoc

うまく閲覧できない場合はこちらをご覧下さい。

クイックスタート

配線

  • コネクタは PHコネクタ 7ピン が合います。
  • USB-UARTモジュールを使用して、macOSにて製作しました。
  • DIPスイッチは「カタカナ・ボーレート9600bps」に設定しています。
  • TxをDATA, #RSTをDTRに接続します。
  • ハードウェアリセットが不要な場合は#RSTを10kΩ抵抗を介して5Vに接続します。
  • 起動直後はハードウェアリセットを行わないと正しく動作しない場合があります。
  • 電源およびIOは5Vです。必要に応じてレベル変換を行って下さい。

コード

$ mkdir work
$ cd work
$ go mod init example.com/app
$ go mod vendor
$ cat > main.go << 'EOS'
package main

import (
	"log"

	M202MD10B "github.com/mamemomonga/go-Futaba-M202MD10B"
)

func main() {
	var err error
	vfd := M202MD10B.New()
	err = vfd.Open("/dev/cu.usbserial-1101", 9600)
	if err != nil {
		log.Fatal(err)
	}
	err = vfd.Print("Hello World!")
	if err != nil {
		log.Fatal(err)
	}

}
EOS

$ go run ./

サンプルコードの実行

$ go mod vendor
$ go run ./examples/helloWorld
$ go run ./examples/animation
$ go run ./examples/cgram

ハードウェア: Futaba M202MD10B

  • 20x2, UART入力のドットマトリクスVFPモジュールです
  • 電源およびIOは 5V です

コネクタ

PHコネクタ 7ピン

Pin Name Desc.
1 VCC 電源(5V 約650mA)
2 VCC 電源(5V 約650mA)
3 #RST Lでリセット
4 DATA UART入力
5 BUSY Hのときビジー
6 GND グランド
7 GND グランド

DIPスイッチ

SW NAME Desc.
1 CODE ON: カタカナ / OFF: キリル文字
2 BAUD0 ボーレート設定0
3 BAUD1 ボーレート設定1
4 TEST ON: デモモード

BAUD0,1: ボーレート設定

Baud BAUD0 BAUD1
9600 OFF OFF
4800 OFF ON
2400 ON OFF
1200 ON ON

キャラクター一覧

aキャラクター一覧

参考情報

Lisence

MIT

Documentation

Overview

Copyright 2022 mamemomonga https://github.com/mamemomonga/go-Futaba-M202MD10B/

Futaba M202MD10B用ライブラリ

Index

Examples

Constants

View Source
const (
	Brightness1 = 3 // 明るさ1(最も暗い)
	Brightness2 = 2 // 明るさ2
	Brightness3 = 1 // 明るさ3
	Brightness4 = 0 // 明るさ4(最も明るい)
)

明るさ

View Source
const (
	CursorTypeUnderline = iota // 下線
	CursorTypeTofu             // 豆腐
	CursorTypeXOR              // 反転
)

カーソルの種類

View Source
const (
	AnimationDisable = iota // 文字表示効果無効
	AnimationEnable         // 文字表示効果有効
)

エフェクトモード

Variables

View Source
var (
	ErrBrightnessOutOfRange = errors.New("brightness out of range") // 明るさ設定が範囲外
	ErrCursorTypeNotDefined = errors.New("cursor type not defined") // カーソルの種類が範囲外
	ErrBufferOverflow       = errors.New("buffer overflow")         // バッファがいっぱい

)

Functions

This section is empty.

Types

type VFD

type VFD struct {
	Wait               time.Duration // 次の文字を表示するまでの待機時間
	Animation          int           // 文字アニメーション有効 (AnimationDisable:無効 /  AnimationEnable:有効)
	AnimationCharStart byte          // 文字表示効果開始ポイント
	AnimationWait      time.Duration // 文字表示効果ウェイト
	// contains filtered or unexported fields
}

VFDライブラリ

Example
package main

import (
	"log"
	"time"

	M202MD10B "github.com/mamemomonga/go-Futaba-M202MD10B"
)

const (
	SERIAL_PORT = "/dev/cu.usbserial-1101"
	WAIT_TIME   = time.Second * 1
)

func main() {
	vfd := M202MD10B.New()
	var err error

	err = vfd.Open(SERIAL_PORT, 9600) // SERIAL_PORT: e.g. /dev/ttyUSB0, /dev/cu.usbserial
	if err != nil {
		log.Fatal(err)
	}
	defer vfd.Close()

	err = vfd.Brightness(M202MD10B.Brightness4)
	if err != nil {
		log.Fatal(err)
	}

	err = vfd.CursorDisable()
	if err != nil {
		log.Fatal(err)
	}

	err = vfd.Clear()
	if err != nil {
		log.Fatal(err)
	}

	err = vfd.Print(" Futaba M202MD10B")
	if err != nil {
		log.Fatal(err)
	}

	time.Sleep(WAIT_TIME)
}
Output:

func New

func New() *VFD

初期化

func (*VFD) Brightness

func (t *VFD) Brightness(value int) error

明るさの設定 Brightness1, Brightness2, Brightness3, Brightness4 のいずれかを設定

func (*VFD) CGRAM

func (t *VFD) CGRAM(code byte, data [7]byte) error

外字の設定 (既存の文字コードに上書き、最大8個まで)

func (*VFD) CGRAMFromStrings

func (t *VFD) CGRAMFromStrings(code byte, graphic [7]string) error

Stringsの配列から外字の登録

Example
package main

import (
	"log"
	"time"

	M202MD10B "github.com/mamemomonga/go-Futaba-M202MD10B"
)

const (
	SERIAL_PORT = "/dev/cu.usbserial-1101"
	WAIT_TIME   = time.Second * 1
)

func main() {

	const (
		CGRAM_HEART byte = 0x88
		CGRAM_STAR  byte = 0x89
	)

	vfd := M202MD10B.New()
	var err error

	err = vfd.Open(SERIAL_PORT, 9600) // SERIAL_PORT: e.g. /dev/ttyUSB0, /dev/cu.usbserial
	if err != nil {
		log.Fatal(err)
	}
	defer vfd.Close()

	{
		var g [7]string
		g[0] = "00000"
		g[1] = "11011"
		g[2] = "11111"
		g[3] = "11111"
		g[4] = "11111"
		g[5] = "01110"
		g[6] = "01100"
		err := vfd.CGRAMFromStrings(CGRAM_HEART, g)
		if err != nil {
			log.Fatal(err)
		}

	}
	{
		var g [7]string
		g[0] = "00100"
		g[1] = "00100"
		g[2] = "11111"
		g[3] = "01110"
		g[4] = "01110"
		g[5] = "01010"
		g[6] = "10001"
		err := vfd.CGRAMFromStrings(CGRAM_STAR, g)
		if err != nil {
			log.Fatal(err)
		}
	}

	vfd.Animation = M202MD10B.AnimationEnable

	err = vfd.Print("  ")
	if err != nil {
		log.Fatal(err)
	}

	err = vfd.PutChar(CGRAM_HEART)
	if err != nil {
		log.Fatal(err)
	}

	err = vfd.Print("マーク ダッテ\n    デルンダ ゾッ")
	if err != nil {
		log.Fatal(err)
	}

	err = vfd.PutChar(CGRAM_STAR)
	if err != nil {
		log.Fatal(err)
	}

	time.Sleep(WAIT_TIME)
	vfd.ClearAnimation()

}
Output:

func (*VFD) Clear

func (t *VFD) Clear() error

画面クリア

Example
package main

import (
	"log"
	"time"

	M202MD10B "github.com/mamemomonga/go-Futaba-M202MD10B"
)

const SERIAL_PORT = "/dev/cu.usbserial-1101"

func main() {
	vfd := M202MD10B.New()
	var err error

	err = vfd.Open(SERIAL_PORT, 9600) // SERIAL_PORT: e.g. /dev/ttyUSB0, /dev/cu.usbserial
	if err != nil {
		log.Fatal(err)
	}
	defer vfd.Close()

	err = vfd.Clear()
	if err != nil {
		log.Fatal(err)
	}
}
Output:

func (*VFD) ClearAnimation

func (t *VFD) ClearAnimation() error

アニメーション付き画面消去

Example
package main

import (
	"errors"
	"log"
	"time"

	M202MD10B "github.com/mamemomonga/go-Futaba-M202MD10B"
)

const (
	SERIAL_PORT = "/dev/cu.usbserial-1101"
	WAIT_TIME   = time.Second * 1
)

func main() {
	vfd := M202MD10B.New()
	var err error

	err = vfd.Open(SERIAL_PORT, 9600) // SERIAL_PORT: e.g. /dev/ttyUSB0, /dev/cu.usbserial
	if err != nil {
		log.Fatal(err)
	}
	defer vfd.Close()

	errChk := func(err error) {
		if err != nil {
			if errors.Is(err, M202MD10B.ErrBufferOverflow) {
				log.Printf("warn: %v", err)
			} else {
				log.Fatalf("alert: %v", err)
			}
		}
	}

	vfd.CursorEnable(M202MD10B.CursorTypeUnderline)
	vfd.CursorBlink(true)
	vfd.Animation = M202MD10B.AnimationEnable

	err = vfd.Print("  Welcome To THE\nC Y B E R S P A C E")
	errChk(err)

	time.Sleep(WAIT_TIME)

	err = vfd.ClearAnimation()
	errChk(err)
}
Output:

func (*VFD) ClearCursorNRTH added in v0.0.5

func (t *VFD) ClearCursorNRTH() error

画面クリア(カーソルを移動しない)

func (*VFD) Close

func (t *VFD) Close()

ポートを閉じる

func (t *VFD) CursorBlink(blink bool) error

カーソルの点滅

func (*VFD) CursorDisable

func (t *VFD) CursorDisable() error

カーソルの無効化

func (*VFD) CursorEnable

func (t *VFD) CursorEnable(cursorType int) error

カーソルの表示( CursorTypeUnderline, CursorTypeTofu, CursorTypeXOR )

func (*VFD) CursorForward

func (t *VFD) CursorForward() error

カーソルを右に移動

func (*VFD) CursorHome

func (t *VFD) CursorHome() error

カーソルを右上に

func (*VFD) CursorLine1

func (t *VFD) CursorLine1() error

カーソルを1行目に(CursorHomeと同じ)

func (*VFD) CursorLine2

func (t *VFD) CursorLine2() error

カーソルを2行目に

func (*VFD) CursorReverse

func (t *VFD) CursorReverse() error

カーソルを左に移動

func (*VFD) Open

func (t *VFD) Open(port string, baud int) (err error)

ポートを開く

port: シリアルポート名
baud: ボーレート(9600, 4800, 2400, 1200)

func (*VFD) Print

func (t *VFD) Print(str string) error

文字の表示

Example
package main

import (
	"log"
	"time"

	M202MD10B "github.com/mamemomonga/go-Futaba-M202MD10B"
)

const (
	SERIAL_PORT = "/dev/cu.usbserial-1101"
	WAIT_TIME   = time.Second * 1
)

func main() {
	vfd := M202MD10B.New()
	var err error

	err = vfd.Open(SERIAL_PORT, 9600) // SERIAL_PORT: e.g. /dev/ttyUSB0, /dev/cu.usbserial
	if err != nil {
		log.Fatal(err)
	}
	defer vfd.Close()

	err = vfd.Print("Hello World!\n コンニチワ")
	if err != nil {
		log.Fatal(err)
	}

	time.Sleep(WAIT_TIME)
}
Output:

func (*VFD) Println

func (t *VFD) Println(str string) error

文字の表示(改行付き)

Example
package main

import (
	"log"
	"time"

	M202MD10B "github.com/mamemomonga/go-Futaba-M202MD10B"
)

const (
	SERIAL_PORT = "/dev/cu.usbserial-1101"
	WAIT_TIME   = time.Second * 1
)

func main() {
	vfd := M202MD10B.New()
	var err error

	err = vfd.Open(SERIAL_PORT, 9600) // SERIAL_PORT: e.g. /dev/ttyUSB0, /dev/cu.usbserial
	if err != nil {
		log.Fatal(err)
	}
	defer vfd.Close()

	err = vfd.Println("Hello ")
	if err != nil {
		log.Fatal(err)
	}

	err = vfd.Print("  World!")
	if err != nil {
		log.Fatal(err)
	}

	time.Sleep(WAIT_TIME)
}
Output:

func (*VFD) PutChar added in v0.0.2

func (t *VFD) PutChar(c byte) error

1文字書き込み

func (*VFD) Reset

func (t *VFD) Reset() error

ハードウェアリセット(/DTRピンの接続が必要)

func (*VFD) WriteByte

func (t *VFD) WriteByte(c byte) error

1バイト書き込み

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL