Yahboom jetbotオープンソースロボット学習(1)RGBプログラミングライトバーの使用

オープンソースコードを理解する前に、まずGPIOとは何かを理解してください...
汎用入出力のフルネームであるGPIOは、汎用入出力ポートでもあります。素人の言葉で言えば、それはいくつかのピンです。低レベルを出力することも、それらを介して出力することもできます。ピンの状態(高か低か)を読み取ります。

ユーザーは、GPIOポート(UARTなど)を介してハードウェアと対話し、ハードウェア作業(LED、ブザーなど)を制御し、ハードウェア作業ステータス信号(割り込み信号など)を読み取ることができます。

1. Pythonのモジュール、パッケージ、ライブラリの違い

Pythonモジュールモジュールとしてコードフラグメントが含まれ、整理されています。

症状は次のとおりです。記述されたコードはファイルとして保存されます。このファイルはモジュールです。たとえば、sample.pyファイル名sampleはモジュール名です。

ここに画像の説明を挿入
[外部リンクの画像転送に失敗しました。ソースサイトに盗難防止の挿入がある可能性があります!チェーンメカ​​ニズム、説明を提案してください]画像をhttps://(imblog.csdng.-n / 2024bFw10122163908382.png?x -ossプロセス=画像/透かし、type_ZmFuZ3poZW5naGVpdGk、shadow_10、text_aHR0cHMibG9nLmNzZG4ubmV6L1NvbmlhOA ==、size_1L、color_FFFFFF、t_70#pic_centerZowmark、color_FFFFFF、t_70#pic_center_center、,,,と、text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NvbmlhOA ==、size_16、color_FFFFFF、t_70#pic_center)]

上の図は、モジュールの説明と紹介です。モジュールは、import ... // import ... as ... // from ... import ...など、さまざまな方法で参照できます。

Pythonのパッケージ:パッケージは階層的なファイルディレクトリ構造であり、n個のモジュールまたはn個のサブパッケージで構成されるPythonアプリケーション実行環境を定義します。人気:パッケージは、__ init__。pyファイルを含むディレクトリです。ディレクトリには、この__init__.pyファイルと他のモジュールまたはサブパッケージが含まれている必要があります。
より人気があるために、パッケージの本質は.pyファイルを含むフォルダーです。

2.インポートおよび使用法からおよび使用法として

importはモジュールをインポートするために使用され、モジュール内のオブジェクトにアクセスできます。次に例を示します。

 import math 
 print math.pi #导出圆周率的值 
   
 >>>3.14159265359

また、fromメソッドを使用することもできます。fromは変数名piを別のスコープにコピーするため、モジュールを経由せずに、コピーした変数名をスクリプトで直接使用できます。
from A import Bは、Aモジュール(関数、グローバル変数、クラス)からBツールをインポートします。importAは、Aモジュール全体(すべての関数、グローバル変数、およびクラスを含む)のコンテンツ全体をインポートします。
例えば:

from math import pi
print pi

>>>3.141592653589793

ただし、数学の他の変数を使用する場合は、それらを1つずつインポートする必要があるため、バッチでインポートすることもできます。

from math import *
pi
cos(pi)

>>>3.141592653589793
>>>> -1.0

もう1つの一般的に使用されるものはimport ... as ...です。
パッケージ名の計算が適切でないと思われ、エイリアスを付けたい場合は、使用するたびに代わりにエイリアスを使用します。インポートするには... as、例は次のとおりです。

import math as dt
print(dt.pi)
import Adafruit_GPIO as GPIO

すぐに理解したい:

https://blog.csdn.net/colourful_sky/article/details/76114508

3.クラス…(オブジェクト)

Pythonは、クラスを使用してクラスを定義します。定義メソッドは、クラスの後にスペースを追加してから、クラス名を追加します。クラス名の後の括弧内のこのクラスは、継承された知識に属する特定のクラス定義に基づいており、オブジェクトを書き込むために一時的に統合されています。オブジェクトクラスを継承する目的は、定義したクラスがより多くの属性を使用できるようにすることです。もちろん、それが必要ない場合は、オブジェクトクラスを継承することはできません。

class Programing_RGB(object):

4. if__name __ == ' main 'を理解する方法

Pythonはインタープリター型スクリプト言語です。実行する前に、すべてのコードを中間コードにコンパイルする必要があります。Pythonプログラムを実行すると、モジュールの最上位行から開始し、行ごとに変換と実行を実行します。したがって、最上位レベル(インデント)コードが実行されるため、Pythonのプログラムのエントリポイントとして統合されたmain()は必要ありません。
ある意味で、「名前なら' main:'も記号のようなもので、Javaなどの言語でプログラムのメインの入り口を象徴し、他のプログラマーにコードの入り口がここにあることを伝えます-これは「名前の場合」です' main: "このコードの意味の1つ。

詳細な使用法については、https://blog.konghy.cn/2017/04/24/python-entry-program/を参照してください。

5.defの使用法

ここに画像の説明を挿入
(拡張)関数の分類:
●max()reverse()などの内部推奨関数
●math()ceil()などのライブラリ関数
●カスタム関数は、def()キーワードを使用して定義されます

関数定義

def function name (parameter):
   function body
   return

●関数名は識別子であり、命名要件は変数の命名要件と同じです
ステートメントブロックはインデントする必要があり、4つのスペースを予約します
●Python関数にreturnステートメントがない場合、暗黙的に値なし
●定義内のパラメータリストは、フォームパラメータと呼ばれ、単なるシンボリック識別子です。

パラメータの受け渡し方法
(1)受け渡しパラメータの配置
def fun(x、y、z)を定義し、fun(1,2,3)を呼び出し、パラメータ定義順に実際のパラメータを渡します。
(2)
def fun whenキーワード受け渡しパラメーターが定義され(x、y、z)、fun(x = 1、y = 3、z = 5)を呼び出し、仮パラメーターの名前があれば、仮パラメーターの名前を使用して実際のパラメーターを渡します。が使用される場合、パラメータを渡す順序は次のようになります定義の順序とは異なる場合があります
キーワードパラメータの前に、位置パラメータを渡す必要があります。

    def get_i2c_device(self,address, i2c, i2c_bus):
        if i2c is not None:
            return i2c.get_i2c_device(address)
        else:
            import Adafruit_GPIO.I2C as I2C
            if i2c_bus is None:
                return I2C.get_i2c_device(address)
            else:
                return I2C.get_i2c_device(address, busnum=i2c_bus)

6.試してみて除外するための紹介

Pythonでは、try / exceptionステートメントは主に、文法エラーなど、プログラムの通常の実行中に発生するいくつかの異常な状況に対処するために使用されます(Pythonはコンパイルリンクのないスクリプト言語であり、実行プロセス中に文法がチェックされます) 、エラーの後に例外が発行されます。メッセージ)、ゼロエラーによるデータ分割、未定義変数の値など。

フォーマット:

try:
     Normal execution block
except A:
     Exception A handle

except B:
     Exception B handle
     
except:
     Other exception handle

else:
     if no exception,get here
finally:
     print("finally")  

例えば:

    def Set_All_RGB(self, R_Value, G_Value, B_Value):
        try:
            self._device.write8(0x00,0xFF)
            self._device.write8(0x01,R_Value)
            self._device.write8(0x02,G_Value)
            self._device.write8(0x03,B_Value)
        except:
            print ('Set_All_RGB I2C error')

通常のプログラム実行は、以下のtryブロックを実行する通常の実行ブロックで実行されます。実行中に異常が発生した場合、通常の実行ブロック内の現在の割り込み実行は、実行開始に対応する例外処理ブロックにジャンプします。
検索開始からのPython最初にXを除いて、対応する例外タイプが見つかった場合は、処理のために提供された例外ハンドルに入り、見つからなかった場合は、処理のために例外ブロックに直接入ります。例外ブロックはオプションです。指定されていない場合、例外はデフォルトの処理のためにpythonに送信されます。処理方法は、アプリケーションを終了してプロンプトメッセージを出力することです。
通常の実行ブロックの実行中に例外が発生しない場合は、実行後通常の実行ブロックの場合、実行のためにelse実行ブロック(存在する場合)に入ります。

例外が発生するかどうかに関係なく、finallyステートメントが提供されている限り、上記のtry / exception / else / finallyコードブロックによって実行される最後のステップは、常にfinallyに対応するコードブロックを実行します。

注:
1。上記の完全なステートメントでは、try / exception / else / finallyの順序はtry–> exception X–> exception–> else–> finalである必要があります。つまり、を除くすべてがelse Andbeforeにある必要があります。最後にelse(存在する場合)はfinallyの前にある必要があり、X以外はexceptの前にある必要があります。そうしないと、構文エラーが発生します。
2.上記の完全なtry / exception形式の場合、elseおよびfinallyはオプションであり必須ではありませんが、存在する場合は、elseがfinallyの前にあり、finally(存在する場合)がステートメントの最後の位置にある必要があります。
3.上記の完全なステートメントでは、elseステートメントの存在はexcept Xまたはexceptステートメントに基づいている必要があります。elseステートメントがexceptステートメントなしでtryブロックで使用されると、構文エラーが発生します。つまり、elseをtry / finallyと組み合わせて使用​​することはできません

7.自己紹介

Pythonの自己使用法を紹介する前に、Pythonのクラスとインスタンスを紹介しましょう...
オブジェクト指向の最も重要な概念はクラスとインスタンスです。クラスは、学生の抽象化などの抽象的なテンプレートです。物事は次のように表すことができます。学生クラス。インスタンスは、クラスに従って作成された特定の「オブジェクト」であり、各オブジェクトはクラスから同じメソッドを継承しますが、データは異なる場合があります。

1.例としてStudentクラスを取り上げます。Pythonでは、クラスを次のように定義します。

class Student(object):
    pass

(Object)は、クラスが継承するクラスを示します。Objectクラスは、すべてのクラスが継承するクラスです。

2.インスタンス:クラスが定義された後、StudentのインスタンスはStudentクラスを介して作成できます。インスタンスの作成はクラス名+()を介して行われます。

student = Student()

たとえば、RGBオブジェクトを初期化します。

from RGB_Lib import Programing_RGB
RGB = Programing_RGB()

3.クラスはテンプレートとして機能するため、インスタンスを作成するときに、バインドする必要があると思われる属性を強制的に入力できます。Pythonの組み込みメソッド__init__を次に示します。たとえば、Studentクラスで、nameやscoreなどの属性をバインドします。

おすすめ

転載: blog.csdn.net/Sonia8/article/details/112962616