fc2ブログ

MicroPythonで簡単なプログラミング

前回の続きですが、Thonny IDEを使って簡単なプログラムを作ります。
8個のLEDを並べて順番に点滅させます。(下は4個に1個点灯させた画像です、詳細は下の動画にて)
8pLED_B.jpg

用意する部品
ブレッドボード、両面ユニバーサル基板の端材、3㎜径LED8個、抵抗*1kΩ8本、ピンヘッダー10pin、配線材少々

配線図と組み立てについて
ブレッドボードに直接部品を組み付けても良いが、ジャンパー線が多くて見栄えが悪いのでユニバーサル基板の
端材にピンヘッダーを取り付けてブレッドボードに差し込むようにしました。私は片面基板の小さな端材しか手持ちが
無く、ごちゃごちゃした基板になりましたが、両面基板を使い余裕が有るように組み立てるのがベターです。
3㎜径LEDはユニバーサル基板の穴一つ置きに取り付けます。*LEDによって輝度が異なり、電流制限用抵抗の
値を決めます。私が使ったLEDには2.2kΩを使いました。
8LED_Cirduit2.gif

プログラム
今回は難しい配列を使わずに基本的な方法でLEDを1つずつ順番に点灯させるプログラムです。
末尾に添付の動画では、8個に1個点灯の他、5個に1個と4個に1個を夫々折り返す動作を加えています。
基本プログラム
----------------------------------------------------------------------------------------
import machine
import utime

led1 = machine.Pin(0, machine.Pin.OUT) # GPIO_0を出力としてled1を接続します。以下、同様
led2 = machine.Pin(1, machine.Pin.OUT) # 書式はled2 = Pin(1, Pin.OUT)でもOK
led3 = machine.Pin(2, machine.Pin.OUT)
led4 = machine.Pin(3, machine.Pin.OUT)
led5 = machine.Pin(4, machine.Pin.OUT)
led6 = machine.Pin(5, machine.Pin.OUT)
led7 = machine.Pin(6, machine.Pin.OUT)
led8 = machine.Pin(7, machine.Pin.OUT)

while True:
led1.value(1) # led1の値valueが1=点灯、0=消灯、書式はled1.on( )でもOK
led2.value(0) # 書式はled2.off( )でもOK
led3.value(0)
led4.value(0)
led5.value(0)
led6.value(0)
led7.value(0)
led8.value(0)
utime.sleep(0.1) # 0.1秒休止
led1.value(0)
led2.value(1) # 一つずつ点灯箇所をずらして行きます。
led3.value(0)
led4.value(0)
led5.value(0)
led6.value(0)
led7.value(0)
led8.value(0)
utime.sleep(0.1)
led1.value(0)
led2.value(0)
led3.value(1) # 一つずつ点灯箇所をずらして行きます。
led4.value(0)
led5.value(0)
led6.value(0)
led7.value(0)
led8.value(0)
utime.sleep(0.1)
led1.value(0)
led2.value(0)
led3.value(0)
led4.value(1) # 一つずつ点灯箇所をずらして行きます。
led5.value(0)
led6.value(0)
led7.value(0)
led8.value(0)
utime.sleep(0.1)
led1.value(0)
led2.value(0)
led3.value(0)
led4.value(0)
led5.value(1) # 一つずつ点灯箇所をずらして行きます。
led6.value(0)
led7.value(0)
led8.value(0)
utime.sleep(0.1)
led1.value(0)
led2.value(0)
led3.value(0)
led4.value(0)
led5.value(0)
led6.value(1) # 一つずつ点灯箇所をずらして行きます。
led7.value(0)
led8.value(0)
utime.sleep(0.1)
led1.value(0)
led2.value(0)
led3.value(0)
led4.value(0)
led5.value(0)
led6.value(0)
led7.value(1) # 一つずつ点灯箇所をずらして行きます。
led8.value(0)
utime.sleep(0.1)
led1.value(0)
led2.value(0)
led3.value(0)
led4.value(0)
led5.value(0)
led6.value(0)
led7.value(0)
led8.value(1) # 一つずつ点灯箇所をずらして行きます。
utime.sleep(0.1)
# 最初に戻り、同じ動作を繰り返します。

----------------------------------------------------------------------------------------
動画をご覧ください。



皆さまの参考になれば幸いです。
by Paradise
スポンサーサイト



テーマ : 電子工作
ジャンル : 趣味・実用

ラズピコにWiiヌンチャクとOLEDを付けてみました。

Raspberry pi picoにWiiヌンチャクを繋ぎ、Micro Pythonで動かしてみました。

Micro Pythonの勉強にと色々繋いで遊んでいます。
Wiiヌンチャクにはシロヌンチャクとクロヌンチャクの2種類が有り、これらはデータ読み書きのアドレスが異なります。
中には、クロヌンチャクでもシロヌンチャクと同じアドレスの物があり、パソコンに繋いでみないと外観では判りません。
Wiiヌンチャクの中古品がメルカリに安く出品されていて幾つか購入したが、真のクロヌンチャクに上手く当たりません。

何年も前からArduinoやESPマイコンにヌンチャクを使ってますが、ラズピコのメモリーとシロヌンチャクのアドレスが
何処かで干渉するのか挙動がおかしく、試行錯誤してるのですが未だ解決に至っていません。
Pico_Nunchuck1.jpg

配線図
仮にLEDを取り付けて出力の状態が見れます。応用次第で面白い使い方が出来ると思います。
OLEDにジョイスティックの値とZとCのボタン情報も表示しました。
プログラムを少し変更すればサーボモータのコントロールが簡単に出来ます。
これまではライブラリーなしでヌンチャクを使っていますが、今回のMicro Pythonにはドイツのkfrickeさんが、
GitHubに公開されているnunchuck.pyが使い易かったので利用させて頂きました。 参考にして下さい。
URL:https://github.com/kfricke/micropython-nunchuck/blob/master/nunchuck.py
Nunchuck_pico.gif

動画をご覧下さい。



皆さまの参考になれば幸いです。
by Paradise

テーマ : 電子工作
ジャンル : 趣味・実用

Raspberry pi Pico ゲームの紹介

自作ゲームではありませんが、面白いゲームに出会えたので紹介します。
ケンケンさんがホームページに公開されたRaspberry pi Picoによる液晶ゲームの紹介です。
URL:http://www.ze.em-net.ne.jp/~kenken/picogames/index.html
興味のある方は、上記のURLを参照して下さい。プログラムはC++で作成されていますが、
直ぐに使える実行型ファイル及びソースファイルも公開されています。

ゲームの種類は5種類で画像の箱入り娘の他、昔懐かしいパックマン、テトリス、インベーダーゲーム、
ペグソリテアが公開されています。
Raspi _pico_Game1

私もホームページを始めた頃にVBで作った箱入り娘のゲームを公開してたことが有り、懐かしくゲームを
楽しみました。


皆さまの参考になれば幸いです。
by Paradise

テーマ : 電子工作
ジャンル : 趣味・実用

ラズパイPicoに2.4インチTFTモニターを繋ぐ

AdafruitのILI9341libraryを使い、スケッチ例からgraphicstestを試しました。

先ずは動画をご覧下さい。


SPI接続の配線図を示します。
正しくボードが選択され、必要なライブラリがインストールされていれば、下記の接続にて問題なく動作します。
Pico_ILI9341_circuit.gif

ラズパイPicoでTFTモニターを使うための準備(ArduinoIDEの設定)
ArduinoIDEがインストールされていることを前提に進めます。 尚、現在ArduinoIDEはVer.1.8.15が最新です。
1)ボードマネージャにRaspberry pi Picoをインストール
①ArduinoIDEを開き、「ツール」「ボード”・・・”」「ボードマネージャ」と順にクリックします。
②ボードマネージャが開いたら検索窓に”pico”と入力すると下図のように表示します。
 表示された中のArduinoI Mbed OS RP2040 Boardsをインストールします。
boardmanager_pico.jpg

2)Adafruitライブラリのインストール
Adafruit GFX libralyのインストール: ArduinoIDEを開き、「スケッチ」「ライブラリをインクルード」
「ライブラリーを管理」と順にクリックすると下図のようなライブラリマネージャが開きます。
ここで、検索窓にAdafruit GFX libralyと入力し、表示された中から目的のライブラリをインストールします。
library_manager_gfx.gif

Adafruit ILI9341のインストール:次に、同じ画面でAdafruit ILI9341を検索してAdafruit ILI9341をインストールします。
library_manager_9341.gif

3)AdafruitのILI9341のサンプルプログラム"graphicstestを試す。
AruduinoIDEから「ファイル」「スケッチ例」と順にクリックしてリストからAdafruit ILI9341フォルダーを開き、
その中からgraphicstestを選択すると下図のようなスケッチが開きます。
ILI9341_GraphicsTest.gif

ラズパイPicoを使うためにスケッチを少し変更します。
上画像の赤線で記した部分を変更します。(行番号が少し違うかも知れません)
①22,23行目の前に//を挿入します。
②26行目 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);の前に//を挿入します。
③27行目にAdafruit_ILI9341 tft = Adafruit_ILI9341(13, 15, 11, 10, 14, 12);を追加します。(GPIO12の結線は不要)
補足:GPIOピンの設定はこの例に限らず、他のピン配置でも可能です。
()内の番号がラズパイPicoの使用するGPIO番号となり、下行の(TFT_CS~TFT_MISO)に相当します。
29行目//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
以上にて変更が完了です。後は、コンパイルして書き込むだけですが、大事な注意ポイントがあります。 それは、
最初にスケッチを書き込む時は必ず、マイコンボードのブートスイッチを押しながらUSBケーブルを差し込むことです。
一度この操作をすると次回からは他のAruduinoボードと同様に書き込みが出来ます。 また、シリアルポート番号が
例、COM8(Rspberry Pi Pico)などと表示されます。

あとがき
1年ほど前、このTFTモニターを買った時にESP32を使ってAdafruit_ILI9341の"graphicstest"をテスト済みでした。
今回、ラズパイPico入手を機会に、お蔵入りしていたモニターを動かすことにしました。
最初にMicro Pythonの勉強にと別のサンプルプログラムを試しましたが、描画が今一だったのでArduinoIDEを
使って"graphicstest"を試すことにしました。
しかし、SPI接続のGPIOがMicro Pythonの場合と異なり、後期高齢者には難解で数日間試行錯誤しましたが、
無事に描画が速くて綺麗な映像が観れて幸いでした。


皆さまの参考になれば幸いです。
by Paradise

テーマ : 電子工作
ジャンル : 趣味・実用

ラズパイ Pico に気圧センサーを付けてみました。

ラズパイ Picoに気圧、温度、湿度が測れるBME280を取り付けて、OLED(ssd1306)に計測値を
表示させてみました。

動画をご覧下さい。



次回は、ラズパイPicoに2.4インチTFTモニターを繋ぐを掲載予定です。

皆さまの参考になれば幸いです。

テーマ : 電子工作
ジャンル : 趣味・実用

1個550円のRaspberry pi Picoを使ってみました。

動画を追加しました。2021.06.02

ArduinoIDEを使ってサーボモータを動かし、OLED(ssd1306)にサーボ角度を表示します。


MicroPythonの勉強にとRaspberry pi Picoを購入しましたが!。
2021.06.01
不良品に当たる。
Picoが届いたので早速ボードにマイクロUSBケーブルを繋ぐが変な臭いがして電源ICが熱くなってきた!
間もなく電源IC(RT6150B)横の小さなリアクタンス(L1)が過電流により、破断して3.3Vが出なくなった。
(RT6150B:入力電圧1.8V~5.5Vの昇圧型スイッチング電源ICで入力電圧範囲が広く電池駆動が可能です)。
このまま、返品交換すれば良いのですが早く使いたいし、手続きが面倒なので自分で修理することにしました。
Raspberry pi pico_Power

電源回路
下が電源回路です。ICの不具合で発熱してL1に負荷が掛かり、ヒューズ代わりに破壊してしまったようです。
そこで、基板からL1の残骸を綺麗に取り除き、細いリード線で2ターンコイルを作って半田付けすると3.3Vが
出ました。しかし、RT6150Bが発熱するので回路に手を加えず、電源ICの動作を止める3V3_EN端子をGNDに
接続して動作を停止しました。今後この基板をブレッドボード専用として使うので手持ちの3.3V出力の3端子
レギュレータを外付けして供給することにしました。(IN=VBAS端子、OUT=3V3(OUT)端子、GND=GND端子)
これにより、この基板が正常に動作してMicroPythonやArduinoIDEを使ったテストが出来ました。
尚、追加購入した2枚には、電源ICに発熱等の問題がなく正常に動作しています。
Power_circuit.gif

Raspberry pi picoの端子表
データーシートより抜粋
Pico PinOUT

電源ユニットを外付けしたブレッドボード
下の画像ではテスト用に設けた2ターンループが撤去せずに残っています。また、3V3_ENとGND間のジャンパー線が
見えます。(画像は全てクリックすると拡大します)。3端子レギュレータユニットはアマゾンで10個500円ほどで購入。
皆さんは、ピンヘッダーを基板に半田付けする前にマイクロUSBケーブルを接続して電源ICに発熱が無いか確認され、
発熱が有る場合は不良品です。自分で修理せずに購入店に交換を申し込んで下さい。
bread_Board.jpg

初めてのMicroPythonとArduinoIDEのサポート
ライブラリーを使わずにMicroPythonを使ってサーボモータを複数同時に動かすことが出来ましたが、Arduinoに
慣れた後期高齢者の頑固頭にはハードルが高く、もっと勉強をしなければと思います。
このテスト中にArduinoIDEがRaspberry pi Picoをサポートされていることを知り、早速Servo.hを使ってテストした結果、
問題なく動作することが確認出来ました。先に掲載のMarble Robotのコントロール部をSTM32からPicoに置き換えて
動かしています。(但し、全てのArduino libraryがPicoに対応した訳ではなく、今後のバージョンアップが楽しみです)
以上、Raspberry pi picoを購入から5日間の出来事でした。


次回は、PicoのArduinoIDEプログラミングとPico on Marble Robotを掲載します。
皆さまの参考になれば幸いです。

by Paradise

テーマ : 電子工作
ジャンル : 趣味・実用

プロフィール

CNC_Paradise

Author:CNC_Paradise
木工・彫刻・機械工作・電子工作が
大好きで自作のCNCを使って工作を
楽しんでます。

最新記事
最新コメント
月別アーカイブ
カテゴリ
何でも工作室
検索フォーム
RSSリンクの表示
リンク
QRコード
QR