USBでD/Aコンバートしたいことってあるじゃないですか。そんなときArduinoを使いたくなりますが、こいつが純正は地味に高く、互換はシリアルナンバーが書き込まれてなかったり微妙。しかもanalogWriteは256段階しか出力できません。
そこで、Raspberry Pi Picoを使ってみることにしました。MicroPythonではなく、CircuitPythonを使います。MicroPythonだとPWMキャリア周波数が1kHzまでしか出ないので注意です。CircuitPythonを使用した場合、キャリア周波数は1MHz程度まで十分に上げられます。
キャリア周波数と電圧の塩梅(あげすぎると電圧の幅が狭まる)を適度にとって動かしてあげればOKです。580円できっちりシリアルナンバーも書き込まれていてお得ですね!
次に、USBシリアルについての話です。Raspberry Pi PicoとPCの通信でわざわざ別途USBシリアル基板を使っている方をよく見かけるのですが、どう考えても何とか方法あるのに…と思って試行錯誤してみたところ、MicroPythonやCircuitPythonでは input() 関数を使うことでUSBシリアル通信ができることがわかりました。
こんな感じでちょっと特殊な書き方(1文字ずつ取る形になる)ですが、普通に通信できます。もっと良いやり方があれば教えてください。そうそう、書き込むときはCRLFで行を締めないとだめなので注意です。