マイクロチップ向けのTBSKmodemをリリースしました(ただし送信のみ)
先日作ったMicropython向けのTBSKmodemの続きです。Arduinoでも動くようにしました。
MicroPython
TBSKmodemMicro/README.ja.md at main · nyatla/TBSKmodemMicro · GitHub
コードからライブラリを分離しました。
セットアップがチョットめんどくさくなりましたが、アプリケーションのコードが大変短くなりました。
ラズパイPicoでのみ動作チェックを行いましたが、62.5usでGPIOを操作できれば他のマイコンでも行ける気がします。
サンプルスケッチ
from array import array from machine import Pin import gc from tbskmicro import TbskPulseModulator led=Pin(25, Pin.OUT, Pin.PULL_DOWN) tmm=TbskPulseModulator() led.value(1) gc.collect() gc.disable() #Critical zone tmm.write( Pin(2, Pin.OUT, Pin.PULL_DOWN),16000, array("B",b"Hello TBSKmodem from Micro Python.") ) #/Critical zone gc.enable() led.value(0)
Arduino
TBSKmodemMicro/README.ja.md at main · nyatla/TBSKmodemMicro · GitHub
C++で書き直したものです。Arduinoの標準機能だけしか使用していないので、Raspberry pi pico以外のボードでも動くのではないかと期待しています。ZipファイルをIDEに直接セットアップできるので簡単です。
#include "TbskModemMicro.h" using namespace TBSKmodemMicro; #define LED_PIN 25 #define SPK_PIN 2 TbskPulseModulator<100> tpm; void setup() { pinMode(LED_PIN, OUTPUT); //LED pinMode(SPK_PIN, OUTPUT); //OutputPin } void loop() { digitalWrite(LED_PIN, HIGH); // turn the LED on (HIGH is the voltage level) tpm.write(SPK_PIN,16000,"Hello arduino"); //send message via GPIO pulse audio. digitalWrite(LED_PIN, LOW); // turn the LED on (HIGH is the voltage level) delay(1000); }
なお、基本部分は16bitで実装しておりますので、ChatGPT先生にCに変換してもらえばZ80でも動くような気がします。