[Diaoye がプログラミングを学ぶ] MicroPython マニュアル WiPy 固有のポート ライブラリ wipy.machine.ADCWiPy.deinit()

ここに画像の説明を挿入します

MicroPython は、組み込みシステムで Python 3 プログラミング言語を実行するために設計されたインタープリターの軽量バージョンです。通常の Python と比較して、MicroPython インタープリターは小さく (わずか約 100 KB)、バイナリの実行可能ファイルにコンパイルされて実行されるため、実行効率が高くなります。軽量のガベージ コレクション メカニズムを使用し、リソースに制約のあるマイクロコントローラーに対応するために Python 標準ライブラリの大部分を削除します。

MicroPython の主な機能は次のとおりです。
1. 構文と関数は標準の Python と互換性があるため、学習と使用が簡単です。Python のコア構文のほとんどをサポートします。
2. ハードウェアに直接アクセスして制御し、Arduino のように GPIO、I2C、SPI などを制御します。
3.ファイルシステム、ネットワーク、グラフィカルインターフェースおよびその他の機能を提供する強力なモジュールシステム。
4. クロスコンパイルをサポートし、インタプリタよりも 10 ~ 100 倍高速な効率的なネイティブ コードを生成します。
5. コード量が少なくメモリ使用量も少ないため、メモリの少ない MCU や開発ボードでの実行に適しています。
6. オープンソースライセンス、無料で使用できます。シェルの対話型環境は、開発とテストに便利です。
7. 内蔵 I/O ドライバーは、ESP8266、ESP32、STM32、micro:bit、コントロール ボード、PyBoard などの多数のマイクロコントローラー プラットフォームをサポートします。活発なコミュニティがあります。

MicroPython アプリケーション シナリオには次のものが含まれます。
1. 組み込み製品のプロトタイプとユーザー インタラクションを迅速に構築します。
2. 小さなプログラム可能なハードウェア プロジェクトをいくつか作成します。
3. 教育ツールとして、初心者が Python や IoT プログラミングを学ぶのに役立ちます。
4. スマート デバイスのファームウェアを構築して、高度な制御とクラウド接続を実現します。
5. モノのインターネット、組み込みインテリジェンス、ロボットなどのさまざまなマイクロコントローラー アプリケーション

MicroPython を使用する際の注意事項:
1. メモリとフラッシュのスペースには限りがあります。
2. 説明や実行効率はC言語に劣ります。
3. ライブラリ機能の一部が標準版と異なります。
4. プラットフォームに合わせて構文を最適化し、標準の Python との相違点を修正します。
5. メモリ リソースを合理的に使用し、大きなメモリ ブロックを頻繁に割り当てることを避けます。
6. ネイティブ コードを使用して、速度が重要な部分のパフォーマンスを向上させます。
7. 抽象化を適切に使用して、基礎となるハードウェア操作をカプセル化します。

一般に、MicroPython は Python をマイクロコントローラーの分野に導入します。これは、プログラミングの敷居を下げるだけでなく、優れたハードウェア制御機能も提供する重要な革新です。さまざまなタイプのモノのインターネットやインテリジェント ハードウェアの開発に非常に適しています。
ここに画像の説明を挿入します

MicroPython は、マイクロコントローラー用の Python 言語の合理化された実装であり、開発者が Python 構文と標準ライブラリを使用して組み込みアプリケーションを作成できるようにします。WiPy は、MicroPython ファームウェアの実行をサポートする ESP32 チップに基づくワイヤレス開発ボードです。MicroPython WiPy 固有のライブラリは、WiPy 固有の機能とハードウェア インターフェイスへのアクセスを提供する WiPy 用に設計されたモジュールのセットです。MicroPython の WiPy 固有ライブラリの主な機能は次のとおりです。

1. マシン、ネットワーク、pycom、uos などのいくつかの WiPy 関連モジュールが含まれており、それぞれ WiPy マシンレベルの制御、ネットワーク接続、照明制御、オペレーティング システム インターフェイス、その他の機能を提供します。
2. また、binascii、hashlib、math、random、struct、time などのいくつかの一般的な MicroPython モジュールも含まれており、一般的に使用されるデータ処理、暗号化、数学、乱数、データ構造、時間、その他の関数を提供します。
3. シンプルさ、効率性、移植性、互換性という MicroPython の設計原則に従っています。

ここに画像の説明を挿入します
MicroPython の wipy.machine.ADCWiPy.deinit() は、ADC モジュールを無効にするメソッドであり、これにより開発者は電力を節約したりリソースを解放したりできます。

wipy.machine.ADCWiPy.deinit() の主な機能は次のとおりです。

これは、ADC オブジェクトの作成と制御に使用されるクラスである wipy.machine.ADCWiPy クラスのメソッドです。
これはパラメータを受け入れず、ADC モジュールをシャットダウンし、すべての ADC チャネルを切断します。
ADC オブジェクトが作成されているか、ピンに接続されているかに関係なく、いつでも呼び出すことができます。
これを wipy.machine.ADCWiPy.init() メソッドとともに使用して、ADC モジュールを有効または無効にすることができます。

wipy.machine.ADCWiPy.deinit() のアプリケーション シナリオは次のとおりです。

WiPy 開発ボードには、ADC 入力として使用できる 4 つの GPIO ピン (GP2、GP3、GP4、GP5) があり、温度センサー、フォトレジスタ、ポテンショメータなどの外部アナログ センサーに接続できます。 wipy.machine.ADCWiPy.channel() を使用して、ADC チャネルを作成および制御し、そのアナログ値を読み取ります。ADC 機能が必要ない場合は、wipy.machine.ADCWiPy.deinit() を使用して ADC モジュールを無効にし、GPIO ピンを解放できます。
WiPy 開発ボードには、バッテリー電圧、温度センサー、ホール効果センサーなどのいくつかの内部アナログ信号ソースもあります。wipy.machine.ADCWiPy.channel() を使用して ADC チャネルを作成および制御し、アナログ信号を読み取ることができます。価値。これらの内部信号を監視する必要がない場合は、wipy.machine.ADCWiPy.deinit() を使用して ADC モジュールを無効にして電力を節約できます。
WiPy 開発ボードには、0 ~ 3.3V のアナログ信号を出力できる DAC 出力ピン (GP25) もあり、wipy.machine.ADCWiPy.channel() と組み合わせて使用​​して、生成と収集を実現できます。アナログ信号のこと。DAC 機能が必要ない場合は、wipy.machine.ADCWiPy.deinit() を使用して ADC モジュールを無効にし、DAC ピンを解放できます。

wipy.machine.ADCWiPy.deinit() に関する注意事項は次のとおりです。

wipy.machine.ADCWiPy.deinit() を使用する前に、machine モジュールをインポートし、wipy.machine.ADCWiPy オブジェクトを作成する必要があります。
wipy.machine.ADCWiPy.deinit() を使用する場合は、他のモジュールやデバイスと競合しないように、また過剰なメモリや電源リソースを使用しないように注意する必要があります。
wipy.machine.ADCWiPy.deinit() を使用する場合、ADC ピンの入力範囲が 0 ~ 1.4V であることに注意する必要があります (1.8V は許容できる絶対最大値です)。GP2、GP3、GP4、または GP5 が ADC モジュールに再マッピングされる場合、最大 1.8 V になります。これらのピンがデジタル モードで使用される場合、許容される最大入力電圧は 3.6V です。

実際のアプリケーション用のコードをいくつか示します。

ケース 1: wipy.machine.ADCWiPy.deinit() と wipy.machine.Pin を使用して、温度センサー LM35 のアナログ値を読み取り、OLED 画面に温度値を表示します。ボタンを押すと、ADC モジュールが無効になり、OLED 画面がオフになります。:

# 导入 machine 和 wipy 模块
import machine
import wipy

# 创建一个 ADC 对象并启用 ADC 模块
adc = machine.ADC()
adc.init()

# 连接到 LM35 的引脚并创建一个 ADC 通道
apin = adc.channel(pin='GP3')

# 创建一个 Pin 对象并连接到 OLED 的复位引脚
p_rst = machine.Pin('GP25', mode=Pin.OUT)

# 创建一个 I2C 对象并连接到 OLED 的 SDA 和 SCL 引脚
i2c = machine.I2C(0, pins=('GP26', 'GP27'))

# 导入 ssd1306 库并创建一个 OLED 对象
import ssd1306
oled = ssd1306.SSD1306_I2C(128, 64, i2c, p_rst)

# 创建一个 Pin 对象并连接到按钮的引脚
p_btn = machine.Pin('GP28', mode=Pin.IN, pull=Pin.PULL_UP)

# 定义一个标志变量,表示是否继续读取温度值
flag = True

# 循环读取 LM35 的模拟值并显示温度值,直到按下按钮
while flag:
    # 读取模拟值,范围是 0 到 4095
    value = apin()
    # 计算温度值,单位是摄氏度
    # 假设 ADC 输入范围是 0 到 1.4V,LM35 输出电压是 10mV/℃
    temperature = value / 4095 * 1.4 / 0.01
    # 清除 OLED 屏幕
    oled.fill(0)
    # 在 OLED 屏幕上显示温度值
    oled.text("Temperature:", 0, 0)
    oled.text("{:.2f} C".format(temperature), 0, 16)
    # 更新 OLED 屏幕
    oled.show()
    # 检查按钮是否被按下,如果是,就设置标志为 False,并且禁用 ADC 模块,并且关闭 OLED 屏幕
    if p_btn.value() == 0:
        flag = False
        adc.deinit()
        oled.poweroff()

wipy.machine.ADCWiPy.deinit() と wipy.machine.PWM を使用して、ポテンショメータのアナログ値に基づいて音量を調整できるシンプルな音楽プレーヤーを実装します。曲が再生されると、ADC モジュールが無効になり、PWM 出力が停止します。

# 导入 machine 和 wipy 模块
import machine
import wipy

# 创建一个 ADC 对象并启用 ADC 模块
adc = machine.ADC()
adc.init()

# 连接到电位器的引脚并创建一个 ADC 通道
apin = adc.channel(pin='GP3')

# 创建一个 PWM 对象并连接到扬声器的引脚
pwm = machine.PWM(0, freq=1000)
pwm.channel(Timer.A, pin='GP25')

# 定义一个函数来播放一段音符
def play_tone(freq, msec):
    # 设置 PWM 的频率和占空比
    pwm.freq(freq)
    pwm.duty_cycle(50)
    # 等待指定的毫秒数
    time.sleep_ms(msec)
    # 停止 PWM 输出
    pwm.duty_cycle(0)

# 定义一些音符的频率,单位是赫兹
NOTE_C4 = 262
NOTE_D4 = 294
NOTE_E4 = 330
NOTE_F4 = 349
NOTE_G4 = 392
NOTE_A4 = 440
NOTE_B4 = 494

# 定义一首简单的歌曲,每个元素是一个音符和一个时长的元组,单位是毫秒
song = [(NOTE_C4, 250), (NOTE_D4, 250), (NOTE_E4, 250), (NOTE_F4, 250),
        (NOTE_G4, 250), (NOTE_A4, 250), (NOTE_B4, 250), (NOTE_C4, 500)]

# 循环播放歌曲并根据电位器的模拟值调节音量
for note, msec in song:
    # 读取电位器的模拟值,范围是 0 到 4095
    value = apin()
    # 计算音量值,范围是 0 到 100
    volume = value / 4095 * 100
    # 设置 PWM 的占空比为音量值的一半(因为占空比的范围是 0 到 50)
    pwm.duty_cycle(volume / 2)
    # 播放音符和时长
    play_tone(note, msec)

# 当播放完一首歌曲后,就禁用 ADC 模块,并且停止 PWM 输出
adc.deinit()
pwm.deinit()

ケース 3: wipy.machine.ADCWiPy.deinit() と wipy.machine.Pin を使用して、フォトレジスタのアナログ値に基づいて LED ライトのスイッチを制御できる単純な光制御スイッチを実装します。

# 导入 machine 和 wipy 模块
import machine
import wipy

# 创建一个 ADC 对象并启用 ADC 模块
adc = machine.ADC()
adc.init()

# 连接到光敏电阻的引脚并创建一个 ADC 通道
apin = adc.channel(pin='GP3')

# 创建一个 Pin 对象并连接到 LED 灯的引脚
p_led = machine.Pin('GP25', mode=Pin.OUT)

# 循环读取光敏电阻的模拟值并控制 LED 灯的开关
while True:
    # 读取模拟值,范围是 0 到 4095
    value = apin()
    # 如果模拟值小于 1000,表示光线较暗,就开启 LED 灯
    if value < 1000:
        p_led.value(1)
    # 如果模拟值大于等于 1000,表示光线较亮,就关闭 LED 灯
    else:
        p_led.value(0)

ケース 4: ADC リソースを解放する:

from machine import ADC

# 初始化ADC对象
adc = ADC(0)

# 读取传感器值
sensor_value = adc.read()

# 打印传感器值
print("传感器值:", sensor_value)

# 释放ADC资源
adc.deinit()

この例では、machine.ADC() を使用して ADC オブジェクトを初期化し、ADC 番号を 0 に指定します。次に、read() メソッドを使用してセンサーの値を読み取り、変数 sensor_value に保存します。次に、deinit() メソッドを使用して ADC オブジェクトのリソースを解放し、他の部分が使用できるようにします。

ケース 5: ADC の使用を停止する::

from machine import ADC

# 初始化ADC对象
adc = ADC(0)

# 停止使用ADC
adc.deinit()

この例では、machine.ADC() を使用して ADC オブジェクトを初期化し、ADC 番号を 0 に指定します。次に、deinit() メソッドを使用して ADC オブジェクトの使用を停止し、他の部分が ADC オブジェクトを使用できるようにします。

ケース 6: ADC リソースを動的に解放する::

from machine import ADC

# 初始化ADC对象
adc = ADC(0)

# 根据条件判断是否释放ADC资源
if condition:
    adc.deinit()
    print("ADC资源已释放")
else:
    print("继续使用ADC")

# 继续使用ADC
sensor_value = adc.read()

# 打印传感器值
print("传感器值:", sensor_value)

この例では、machine.ADC() を使用して ADC オブジェクトを初期化し、ADC 番号を 0 に指定します。次に、条件に基づいて ADC リソースを解放するかどうかを決定します。条件が満たされた場合、deinit() メソッドを使用して ADC リソースを解放し、リソースが解放されたことを示すメッセージを出力します。条件が満たされない場合は、ADC の使用を継続することを示すメッセージが出力されます。リソースが解放されるかどうかに関係なく、引き続き ADC オブジェクトを使用し、センサー値を読み取り、出力することができます。

ケース 7: ADC をオフにするだけです

from machine import ADCWiPy

adc = ADCWiPy()
# 使用adc

adc.deinit() # 关闭ADC

この例では、deinit() を呼び出して、ADC の使用後に ADC を閉じます。

ケース 8: 低電力モードに入る前に ADC をオフにします

import wipy
from machine import ADCWiPy

adc = ADCWiPy()
# 使用adc

adc.deinit() # 关闭ADC  
wipy.sleep() # 进入睡眠模式

この例では、消費電力を削減するために、低電力モードに入る前に ADC をオフにします。

ケース 9: ADC を動的に初期化する

from machine import ADCWiPy

adc = None # ADC对象

def init_adc(pin):
  global adc 
  adc = ADCWiPy(pin)
  adc.init()

def deinit_adc():  
  adc.deinit()

この例では、ADC を動的に初期化してシャットダウンする方法を示します。

deinit() を通じて ADC を完全にオフにし、不必要な電力消費を削減できます。

ここに画像の説明を挿入します

Supongo que te gusta

Origin blog.csdn.net/weixin_41659040/article/details/132967820
Recomendado
Clasificación