ライントレースカー ソフト編 その2
Micro Pythonを使ったプログラミング
マイコンにRaspberry pi Picoを使い、Micro Python言語を使う場合の作成例です。
Thonnyのインストール方法は、過去記事「Thonny IDEを使ってラズピコをプログラミング」を参考にして下さい。

注意点
①18行目からのIN1.duty_u16(256*75)のPWM値は0~65535を入力しますが、桁数が多いのでArduinoの
8ビットPWM値に合わせ、直感的に解り易くするために16ビットを半分に分けて256*xxxと記しています。
②42行目からの valueL = round(sensorL.read_u16()/256)IRセンサー読取り値をround関数でまとめ、更に
256で割り、見かけ上のしきい値をArduinoの場合と同様にしました。
皆様の参考になれば幸いです。
by Paradise
マイコンにRaspberry pi Picoを使い、Micro Python言語を使う場合の作成例です。
Thonnyのインストール方法は、過去記事「Thonny IDEを使ってラズピコをプログラミング」を参考にして下さい。

注意点
①18行目からのIN1.duty_u16(256*75)のPWM値は0~65535を入力しますが、桁数が多いのでArduinoの
8ビットPWM値に合わせ、直感的に解り易くするために16ビットを半分に分けて256*xxxと記しています。
②42行目からの valueL = round(sensorL.read_u16()/256)IRセンサー読取り値をround関数でまとめ、更に
256で割り、見かけ上のしきい値をArduinoの場合と同様にしました。
- from machine import ADC, Pin ,PWM
- import utime
-
- sensorL = machine.ADC(26) # Left GPIO 26
- sensorC = machine.ADC(27) # Center GPIO 27
- sensorR = machine.ADC(28) # right GPIO 28
- IN1 = PWM(Pin(6)) # GPIO 6
- IN1.freq(1000)
- IN2 = PWM(Pin(7)) # GPIO 7
- IN2.freq(1000)
- IN3 = PWM(Pin(8)) # GPIO 8
- IN3.freq(1000)
- IN4 = PWM(Pin(9)) # GPIO 9
- IN4.freq(1000)
- def forward(): # 前進
- IN1.duty_u16(256*75)
- IN2.duty_u16(0)
- IN3.duty_u16(0)
- IN4.duty_u16(256*75)
- def turnleft(): # 左旋回
- IN1.duty_u16(0)
- IN2.duty_u16(256*60)
- IN3.duty_u16(0)
- IN4.duty_u16(256*110)
- def turnright(): # 右旋回
- IN1.duty_u16(256*110)
- IN2.duty_u16(0)
- IN3.duty_u16(256*60)
- IN4.duty_u16(0)
- def stop(): # 停止
- IN1.duty_u16(0)
- IN2.duty_u16(0)
- IN3.duty_u16(0)
- IN4.duty_u16(0)
-
- while True:
- valueL = round(sensorL.read_u16()/256) # 左IRセンサー
- valueC = round(sensorC.read_u16()/256) # 中央IRセンサー
- valueR = round(sensorR.read_u16()/256) # 右IRセンサー
- utime.sleep(0.05)
- #print("L",valueL)
- #print("C",valueC)
- #print("R",valueR)
-
- if valueL <= 100: # しきい値 100以下は白(16ビットでは25600)
- sensL = 0 # 白
- else:
- sensL = 1 # 黒
- #print("L",sensL)
-
- if valueC <= 100: # しきい値 10以下は白0(16ビットでは25600)
- sensC = 0 # 白
- else:
- sensC = 1 # 黒
- #print("C",sensC)
-
- if valueR <= 100: # しきい値 100以下は白(16ビットでは25600)
- sensR = 0 # 白
- else:
- sensR = 1 # 黒
- #print("R",sensR)
-
- if sensL==0 and sensC==1 and sensR==0: # 前進
- forward()
- if sensL==1 and sensC==1 and sensR==1: # 前進
- forward()
- elif sensL==1 and sensC==1 and sensR==0: # 左旋回
- turnleft()
- elif sensL==0 and sensC==1 and sensR==1: # 右旋回
- turnright()
- elif sensL==0 and sensC==0 and sensR==0: # 停止
- stop()
皆様の参考になれば幸いです。
by Paradise
スポンサーサイト
コメントの投稿
近況
ご無沙汰しています。
いくつかマイコンボードを使って工作いたしました。
しかし、プログラミング技術が低いのでなにかモノ足らない気分です。
そんなときに、別府 伸耕という方が設計・製作された「オール・トランジスタ4ビットCPU」の動画を見たことを思い出し、学習をはじめました。
https://www.youtube.com/watch?v=yfelmQOKYK4
近所の部品やに74LS181というALU(ロジックIC)が残っていたので、2個つないで8bitの加減算器をつくりました。
作ったといってもデータシート通りなので半田付けしただけです。
もともとハードが好きなので、ICが残っているあいだにロジックICによる時計や4bitのCPUができたらいいなぁと思っています。
4bit CPUでライントレスできればいいなぁなどと、子供のようなことを考えています。
それでは、また
いくつかマイコンボードを使って工作いたしました。
しかし、プログラミング技術が低いのでなにかモノ足らない気分です。
そんなときに、別府 伸耕という方が設計・製作された「オール・トランジスタ4ビットCPU」の動画を見たことを思い出し、学習をはじめました。
https://www.youtube.com/watch?v=yfelmQOKYK4
近所の部品やに74LS181というALU(ロジックIC)が残っていたので、2個つないで8bitの加減算器をつくりました。
作ったといってもデータシート通りなので半田付けしただけです。
もともとハードが好きなので、ICが残っているあいだにロジックICによる時計や4bitのCPUができたらいいなぁと思っています。
4bit CPUでライントレスできればいいなぁなどと、子供のようなことを考えています。
それでは、また
No title
Chandlerさん、こんばんは。
近況のお知らせ有難うございます。
コメントに気付かず返信が遅くなり申し訳ありません。
ライントレースの続きに迷路解決ロボットを作ってましたが、中々手強くて思ったより時間が掛かりました。
一昨日やっと完成してブログの準備を進めているところです。
ロジックICは楽しいですね!74シリーズのチップを沢山並べて色々作った頃を思い出しました。
特にアマチュア無線の画像装置スキャンコンバータなどは100個ほど使った大作も有りました。
未だ、ICボックスの中にメモリーICなどと一緒に沢山残ってます。
Youtubeを拝見しました。凄い人が居ますね!
トランジスタ技術2020年5月号に発表されたそうで、検索したらCQ出版のYoutubeチャンネルに詳しく出てました。
CQ出版社は昔、アマチュア無線関係で歴代の編集長とお付き合いが有ったので懐かしいです。
長くなりましたが、有難うございました。
近況のお知らせ有難うございます。
コメントに気付かず返信が遅くなり申し訳ありません。
ライントレースの続きに迷路解決ロボットを作ってましたが、中々手強くて思ったより時間が掛かりました。
一昨日やっと完成してブログの準備を進めているところです。
ロジックICは楽しいですね!74シリーズのチップを沢山並べて色々作った頃を思い出しました。
特にアマチュア無線の画像装置スキャンコンバータなどは100個ほど使った大作も有りました。
未だ、ICボックスの中にメモリーICなどと一緒に沢山残ってます。
Youtubeを拝見しました。凄い人が居ますね!
トランジスタ技術2020年5月号に発表されたそうで、検索したらCQ出版のYoutubeチャンネルに詳しく出てました。
CQ出版社は昔、アマチュア無線関係で歴代の編集長とお付き合いが有ったので懐かしいです。
長くなりましたが、有難うございました。