Windows でスケッチを書くための言語。 Arduino プログラミング言語。 Arduinoはどのようにプログラムされていますか?

だから、あなたはプロセッサを持っています。 おそらく、プロセッサが何らかの方法でプログラムして、必要なことを実行できることを理解しているでしょう。 有用な作業を行うためには、(a) 有用なプログラムを作成し、(b) プロセッサに渡して実行させる必要があります。

一般に、使用しているプロセッサの種類は関係ありません。ラップトップに搭載されている最新の Intel Pentium や、マイクロコントローラに搭載されているマイクロコントローラです。 Arduinoボード. プログラム作成の原則、つまり プログラミングどちらの場合も同じです。 唯一の違いは、他のデバイスと連携する機会の速度と範囲です。

しかし、プログラマーは、原則として「怠け者」であり、この表現を減らすことができます。 逆の効果を出したい場合は、このように書きます。 倍率について知っておくべきことがすべてわかったので、サイクルに移りましょう。 変数を増やして、希望どおりにループを終了します。 変数を宣言しました。 . これらの 3 つの段階は別々でした。 すべてが一列に並ぶという事実で!

おそらくこれを疑うでしょうが、ループが回転するたびにインクリメントが適用されます。 これらのガバナンス構造をテストするための基本的なツールはすべて揃っています。 これらすべての価値を十分に理解していない可能性が非常に高く、これは完全に正常です。 これらすべてを暗記するべきではありません。

プログラムとは何か、どこに書くか

生産の複雑さにもかかわらず、プロセッサは、本質的に、かなり単純で簡単なものです。 彼は考える方法を知りません。 彼はやみくもに、バイトごとに、彼にすり込まれた命令を実行することしかできません。 一連の命令の大まかな例を次に示します。

命令バイトプロセッサにとっての意味
00001001 意味: 次のバイトを取得し、セル番号 1 に格納します。
00000110 ... これは、セル番号 1 で覚えている次のバイトです: 番号 5
00011001 意味: セル 1 の値から 1 を減算し、更新された結果をそこに残す
00101001 意味: セル番号 1 の値を 0 と比較し、それが 0 の場合 - 次のバイトに示されている数のバイトを飛び越える
00000100 …結果がゼロの場合、最後から 2 番目の命令に 4 バイトジャンプしたい
10000011
01000001 ...文字「A」はこのコードに対応しています
00101000 次のバイトと同じ数のバイトを戻したいことを意味します
00000110 ...6 バイト戻り、命令番号 3 にジャンプします。
10000011 次のバイトにコードが書かれている文字を表示したいという意味です
00100001 ... サイン "!" このコードにちょうど一致します

このような一連の命令を実行した結果、「AAAA!」というパニック フレーズが画面に表示されます。

プログラマーは「怠け者」であることが知られています。 しかし、結局のところ、関数は何を提供するのでしょうか? 多すぎて読みにくい。 これから行うことは、これらの 300 の命令を入力する関数を作成することです。プログラムでは、この関数を 10 回呼び出します。

関数の原則は、無数のコード行を記述してプログラムを読みやすくすることではないことがわかります。 これらの関数は、メイン プログラムで使用する「サブルーチン」に少し似ています。 簡単にするために、無音機能と有音機能の 2 種類の機能があるとします。

このような単純な目標のための非常に多くのコード! すべてのプログラムがこのように直接書かれた場合、複雑な製品の開発に何世紀もかかることは明らかです.

なぜプログラミング言語が必要なのか

タスクを100万回単純化するために、プログラミング言語が発明されました。 アセンブラー、C、C ++、C #、Java、Python、Ruby、PHP、Scala、JavaScript など、たくさんあります。

サイレント関数とは、呼び出されたときに、含まれているコードを何も表示せずに実行し、何も返さないという関数です。 サイレント機能の例。 括弧を 2 つ入れましたが、その有用性はすぐにわかります。 関数を構成するステートメントを追加する中括弧を開きます。

さらに複雑なサイレント関数を作成することもできます。 関数の内容は実際にあなたが望むものにすることができます。 うるさい関数は、これまで見てきたものとは反対に、与えられたものを返します。 2 桁を含む関数を作成します。

これらの言語のプログラムは、人間の自然言語にはるかに近いものです。 したがって、それらはより簡単に、より速く、より快適に書くことができ、最も重要なことに、それらははるかに簡単です 読んだ: 書いた直後のあなたへ、一年後のあなたへ、または同僚へ。

問題は、そのような言語はプロセッサが理解できないことです。このプログラムを与える前に、 コンパイル: 自然言語からゼロと 1 の形式で同じ命令に変換します。 これは、と呼ばれるプログラムによって行われます。 コンパイラ. ファンタジーレベルにとどまらない限り、すべての言語には独自のコンパイラがあります。 一般的な言語の場合、通常、いくつかの選択肢があります。 異なるメーカーおよびさまざまなプラットフォーム用です。 それらのほとんどは、インターネット上で無料で入手できます。

次に、関数を呼び出します。 上記の例の空の括弧を覚えていますか? いわゆる引数は括弧の間に配置され、関数の有用性をより興味深いものにします。 実際、引数のおかげで、関数はユーザーが設定した変数に従って動作します。 必要な数の任意のタイプの引数を指定できます。

ここでは、2 つの引数を作成しました。 関数内で、結果と呼ばれる、加算の結果を正確に含む整数を宣言します。 関数の動作は、ユーザー定義の値とは異なります。 その後、払い戻しがあります。 return は、関数が返す値です。 しかし、これはどういう意味ですか?

したがって、人にとって非常に理解しやすい言語のプログラムがあります。それらは「ソースコード」、単に「コード」または「ソースコード」とも呼ばれます。 を使用してプレーンテキストファイルに書き込まれます どれかテキストエディタ、メモ帳でも。 次に、コンパイラの助けを借りて、プロセッサが理解できるゼロと 1 のセットに変換されます。コンパイラは入力として受け取ります。 ソース、そして出力で作成します バイナリ実行可能ファイル、プロセッサによって理解されるもの。

簡単に言うと、関数は戻り値を持っています。 整数の結果が 4 の場合、加算関数は有効です。 したがって、関数型の仕様です。 たとえば、ノイズの多い関数は変数と呼ばれることがよくあります。 最後に、上から下に読み取るプログラムでは、関数を使用する前に宣言する必要があることに注意してください。

関数を使用したコード例。 つまり、言われること、必然的で必要なことです。 そして、朝起きたら、右足でいる方がいいです! プログラムの基本的な構造を観察することから始め、同時にプログラミング インターフェイスの操作について説明します。

バイナリ ファイルは読み取ることができず、一般に、プロセッサによる実行のみを目的としています。 彼らは持っているかもしれません 別のタイプ受け取ったものに応じて、.exe - これらは Windows 用のプログラム、.hex - Arduino などのマイクロコントローラーで実行するためのプログラムなどです。

なぜこんなに多くのプログラミング言語があり、その違いは何ですか?

この章では、コンパイルの原則の概要と、 共通の仕事マイクロコントローラ。 すでに始めている人にとっては、このセクションは完全に明確に見えるでしょう。 しかし、最初のプログラムを見てみましょう。 プログラミング デバイスでは、次のように表示されます。

そのため、単語を入力すると色が付けられることに気付いたでしょう。 これは、シンタックス ハイライトのもう少し実用的な呼び出しです。コンピューター サイエンスで使用され、使用されている言語のキーワードと他のキーワードを区別することができます。 ジャンルの学生の敏感なアーティスト向け。

    なんで? 地球上には多くの人や企業が存在し、その多くが、他の誰よりもうまくやれると信じていました。より便利に、より明確に、より速く、よりスリムに。

    違いは何ですか: 言語が異なれば、書き込み速度、読みやすさ、実行速度のバランスも異なります。

画面に 99 本のビールについての歌を表示する同じプログラムを見てみましょう。 異なる言語プログラミング。

「ほら、私はオレンジ色があるのが好きじゃない。その言葉に微笑んで、ぜーんぶプルトゥーン ブルー ターコイズが見えるよ。」 色の選択肢がないのは残念ですが、とても実用的です! コンピュータプログラムは、機械に与えられる一連の命令です。 これらの指示は、特定の言葉を使用する言語で書かれています。 プログラミングの方法を知っている彼は、正しい言葉をすでに知っています。

プログラムをもう一度見てみましょう。括弧と中括弧があります。 この章では、プログラムの失敗の原因となることが多い括弧と中括弧の有用性についてすぐに説明します。 中括弧を付けてすぐ閉じ、間に戻ってコードを追加します。

たとえば、Perl 言語。 すぐに書かれました。 プログラマーの意図を理解することは不可能です。 ゆっくり実行:

sub b( $n = 99 - @_ - $_ || No; "$n bottle" . "s" x!!-- $n . "ビールの" ) ; $w = "壁に" ; ダイマップ ( b. "$w, \n". b. "、 \n 1 つ降ろして、周りに回して、\n". b(0) . 「$w. \n\n"} 0 .. 98

ジャワ言語。 比較的長く書かれています。 読みやすい; 非常に高速に実行されますが、多くのメモリを消費します:

それでは、ソフトウェアが提供するメニューに移りましょう。

これらの 5 つのボタンは、プログラムを起動するために使用する必要があるほぼ唯一のものです。 したがって、この章ではそれらを1つずつ学習します。 アイコンにカーソルを合わせると、アイコンの右側にヘルプ テキストが表示されます。

このボタンを使用すると、プログラムをテストできます。


これは、プログラムが正しいことを意味します。 コンパイルとは? 実際、あなたが書いたプログラムは Arduino が受け取るものではありません。 これは、人々が難なく読んで理解できるように設計されたプログラムです。 マシンは、機械語、つまり 1 と 0 のシーケンスのみを理解し、それを解釈して実行します。

クラス ボトル ( public static void main( 引数 ) ( s = "s" ; for (int ビール= 99 ; ビール>- 1 ; ) ( システム.out .print (beers + " bottle" + s + " 壁のビールの " ) ; システム.out .println (beers + " bottle" + s + " of beer, " ) ; もし (ビール== 0 ) ( システム.out .print( 「お店に行って、もっと買って」) ; システム.out .println ( "壁に 99 本のビール。\n") ; システム.exit(0) ; ) そうしないと システム.out .print( 「1つ降ろして回してください」) ; s = ( -- ビール == 1 ) ? "": "s"; システム.out .println(ビール + "ボトル" + s + "壁のビール。\n") ; } } }

アセンブリ言語。 それは長い間書かれています。 読みにくい; 非常に高速に実行されます:

コード セグメントは、cs : code 、ds : code org 100h start : を想定しています。 メインループ mov cx , 99 ; loopstart で開始するボトル: printcx を呼び出します。 番号 mov dx 、オフセット line1 を出力します ; 最初の行の残りを印刷します移動ああ、9; MS-DOS 印刷文字列ルーチン int 21h call printcx ; 番号 mov dx 、オフセット line2_3 を出力します ; 2行目と3行目の残り mov ああ、9 int 21h dec cx; printcx を呼び出します。 番号 mov dx 、オフセット line4 を出力します ; 4行目の残りを表示 mov ah , 9 int 21h cmp cx , 0 ; ビール切れ? jneループスタート; そうでない場合は、int 20h を続行します。 MS-DOS を終了する ; CX レジスタを 10 進数で出力するサブルーチン printcx: mov di 、オフセット numbufferend ; 最後からバッファを埋める移動斧、cx ; 割り切れるように AX に数値を入れます printcxloop: mov dx , 0 ; 分子の上位ワード - 常に 0 mov bx , 10 div bx ; DX:AX を 10 で割ります。AX=商、DX=剰余追加 dl 、「0」 ; 余りを ASCII 文字に変換する mov [ds : di] , dl ; cmp ax , 0 ; 印刷バッファに入れます。 計算する桁数はありますか? je printcxend ; そうでない場合は、dec di を終了します ; 次の桁を現在の桁の前に置く jmp printcxloop ; ループ printcxend: mov dx , di ; から始まる印刷 最後デジタル計算 mov ああ、9 int 21h ret ; データライン1デシベル 「壁のビール瓶」, 13 , 10 , "$" line2_3 db "ビールのボトル" , 13 , 10 , 「1つ降ろして回してください」, 13 , 10 , "$" line4 db 「壁にビールのボトル。」, 13 , 10 , 13 , 10 , "$" numbuffer db 0 , 0 , 0 , 0 , 0 numbufferend db 0 , "$" コード end end start

Arduinoはどのようにプログラムされていますか?

Arduino や Atmel のマイクロコントローラーといえば、どの言語でプログラムを作成できますか? 理論的な答え: 任意。 しかし実際には、選択肢はアセンブラー、C、および C++ に限定されます。 これは、デスクトップ コンピューターと比較して、リソースが非常に限られているためです。 ギガバイトではなく、キロバイトのメモリ。 ギガヘルツではなく、プロセッサのメガヘルツ。 これは、安さとエネルギー効率の代償です。

コンパイルとは、人間が使用するプログラミング言語を機械が使用する機械語に変換することです。 ここで、最初の括弧をクリックして削除することで、プログラムを変更しようとすると、次のようなメッセージが表示されます。


私たちはすぐに何かがはっきりしないと感じますが、それは正しいのです!

何が起こっているのかを理解するには、エラー メッセージを読んでください。 しかし、それは必ずしも正しい理由ではありません。 . よくある間違いは、何かを入力するのを忘れた、または期待される形式を尊重しなかったことです。 最初は、ほとんどの場合、セミコロンと中括弧または中括弧を忘れます。 ソフトウェアが必ずしもエラーを検出するとは限らないため、問題は後で悪化しますが、プログラムは希望どおりに動作しませんが、私たちはそこにいません。

したがって、効率的にコンパイルして実行できる言語が必要です。 つまり、貴重な命令や空のメモリを消費することなく、可能な限り最適に命令からそれらのゼロと1に変換することです。 これらの言語は効果的です。 それらを使用すると、マイクロコントローラー リソースの狭い制限内でも、高速に実行される機能豊富なプログラムを作成できます。

すべてが順調でなければなりません。 デバッガーがどのように機能するかをよりよく理解できるようになり、後で混乱することになります。 そして、それは誰もが勝ったわけではありません。 多くの選択肢はありません、あなたはそれをしなければなりません。 それらのいくつかはトラブルに遭遇します。 ソフトウェアメニューには「ツール」メニューがあり、このメニューには、使用する複数のポートを提供する「シリアルポート」サブメニューがあります。 選択したポートを変更し、正しいポートが見つかるまで再試行してください。 別の時間にこれをもう一度繰り返す必要がある場合があります。

しかし、今書いたこのプログラムは実際に何をするのでしょうか? 簡単なことではありません。がんばってください。私たちは常に何かをやっています。 プログラムの基本的な形がわかったので、何かを行うプログラムを作成してみましょう。


マップの重要な部分を占めています。

見てきたように、アセンブラーは最も単純で洗練された言語ではなく、その結果、C/C++ が Arduino の主力言語になっています。

多くの情報源によると、Arduinoはでプログラムされています アルドゥイーノ言語、加工、配線。 これは完全に正しいステートメントではありません。 ArduinoはC / C ++でプログラムされており、これらの言葉で呼ばれるものは、毎回車輪を再発明することなく多くの典型的なタスクを解決できる便利な「ボディキット」です.

この画像の上部を見てみましょう。 後でそれが何であるかを確認しますが、今のところ、それが発火する可能性があることを理解するだけで十分です. ダイオードは、正しい電流が正しい方向に流れると点灯します。 これは非常に実用的で、場合によってはデバッグに役立つことがわかります。

プログラムの手順は非常に簡単です。

  • arduino は、接続 13 に電流を送信するように指示されました。
  • arduino は、接続に電流を送信するように指示されました。
そして、あなたはそれを一人で推測することはできません。


セミコロンは重要です! プログラムがコンパイルされないことを忘れた場合。 それらは同じ色ではありません。理由は後で説明します。 瞬間の構造が変わっていないことに気づいたでしょう。中括弧の間に 2 つの命令を追加しただけです。

C と C++ が同じ文で言及されているのはなぜですか? C++ は C のアドオンです。すべての C プログラムは有効な C++ プログラムですが、その逆ではありません。 両方を使用できます。 ほとんどの場合、現在の問題を解決するときに何を使用しているかについて考えることさえありません。

要点: 最初のプログラム

最初の Arduino プログラムを作成し、ボードで実行させてみましょう。 ソース コードでテキスト ファイルを作成し、コンパイルして、結果のバイナリ ファイルをボード上のマイクロコントローラーに配置する必要があります。

数字の 13 は重要ではありません。実際に問題になっているのは接続詞の 13 です。 求められたことを実行します。 オフにするには、ダイオードをオフにする新しいプログラムを送信する必要があります。 青色のキーワード ソフトウェア特別です。 これらは、Arduino が認識して使用する値です。

自分で解決策を見つけてデバッグし、最後に見つけることが重要です。 自分のことを考えずに修正を検討することは、あまり形成的ではありません。 ここまでで少しは見つかりましたか? これらの概念を実際に使い始めるとき、これらの概念は抽象的で混乱を招くように思えるかもしれませんが、経験は、摂取したものとの間のより良いつながりを作成するのに役立ちます.

順番に行きましょう。 ソースコードを書いてみましょう。 メモ帳やその他のエディターで書くことができます。 しかし、作業を便利にするために、いわゆる開発環境(IDE:統合開発環境)があります。 それらは、単一のツールの形で、強調表示とヒントを備えたテキスト エディター、ボタンで起動されるコンパイラー、および他の多くの喜びを提供します。 Arduinoの場合、この環境は呼ばれます ArduinoIDE. 公式サイトから無料でダウンロードできます。

準備ができたら、最初のより複雑なプログラムに取り組みます。 ダイオードをオンにし、オフにして実行しましたか? プログラムを作成すると決めたときはいつでも、何を達成したいのかを可能な限り前もって知ることが重要です。 すぐにそれに入り、変更するのは常に魅力的です。 プログラムが複雑になるほど、新しい機能を統合するために変更するのが難しくなります。

接続で電流を送信するように指定します。 13 接続での電流の送信を停止することを示します。 13 次に、無限フィールドの点番号 2 から再び開始します。 ポイント 1、2、3 は問題なくプログラムできます。 難しいところがポイントです。

環境をインストールして実行します。 表示されるウィンドウには、次のように表示されます。 たいていのテキストエディタに与えられた場所。 コードを書いているところです。 Arduinoの世界のコードも呼ばれます スケッチ.

それでは、何もしないスケッチを書きましょう。 つまり、単純に時間を浪費する、可能な限り最小の正しい C++ プログラムです。

void setup() ( ) void loop() ( )

書かれたコードの意味にはまだ焦点を当てません。 コンパイルしましょう。 これを行うには、Arduino IDE のツールバーに [検証] ボタンがあります。 それをクリックすると、数秒でバイナリ ファイルの準備が整います。 これは、テキスト エディターの下にある "Done compiling" という碑文によって通知されます。

彼らは設定にいると言います。 これらの命令は、一度だけ読み取られてアクティブ化されます。 グラフ表示で示します。 たとえば、次の疑似プログラムを考えてみましょう。 プログラムへのパスは次のとおりです。 そして、これは無限に、またはほとんど、または電流が流れるまでです。

この写真はとても長く見えます。 これにより、単一の実行とループの実行を区別することができます。さらに、中括弧がプログラム コマンドのブロックの制限を示していることを思い出してください。 これは継続するために絶対に覚えておかなければなりません。 そのため、無期限に点滅させたい場合は、書く内容が突然少し変わります。

その結果、.hex 拡張子の付いたバイナリ ファイルが作成され、マイクロコントローラで実行できます。

次に、それを Arduino に挿入する必要があります。 このプロセスは、起動、フラッシュ、またはフラッシュと呼ばれます。 Arduino IDE でアップロードを実行するには、ツールバーに [アップロード] ボタンがあります。 Arduino を USB ケーブルでコンピューターに接続し、[アップロード] をクリックすると、しばらくするとプログラムが Arduino にアップロードされます。 この場合、以前にあったプログラムは消去されます。

成功したファームウェアは、「Done Uploading」という碑文によって発表されます。

ダウンロード中にエラーが発生した場合は、次のことを確認してください。

    Tools → Board メニューで、Arduino が実際に接続されているポートを選択します。 USB ケーブルを差し込んだり抜いたりして、どのポートが表示されたり消えたりするかを確認できます。これが Arduino です。

    Arduino に必要なドライバーをインストールしました。 これは、Windows では必要ですが、Linux では必要ありません。MacOS の Arduino Duemilanove より前の古いボードでのみ必要です。

おめでとう! 白紙の状態から Arduino プログラムが動作するまでの道のりを歩んできました。 彼女に何もさせませんが、これはすでに成功しています。

Arduinoは最も 簡単な方法マスター マイクロコントローラー: シンプルなインターフェイス、「Arduino 言語」のシンプルさ (原始的とも言える) のおかげで、プログラミング マイクロコントローラーは学童でも利用できるようになります。 しかし、とにかくシンプルに見えるものでも改善しようとする愛好家が常にいます。 この場合、「ビジュアル プログラミング」、つまり プログラムを書くのではなく、描くことを可能にするグラフィカル環境。
Scratch、ArduBloсk、FLProg - 未就学児でもプログラミングにアクセスできるようにするための 3 つの試み:)


プロジェクトページ - s4a.cat/
2003 年、MIT メディア ラボの Mitchell Resnick が率いる研究者グループは、プログラミング言語をパブリック ドメインにすることを決定しました。 その結果、4年後、「学童にプログラミングを教える環境」となるScratchが登場。
この環境では、さまざまなオブジェクトを作成して遊んだり、外観を変更したり、画面上で移動したり、オブジェクト間の相互作用の形式を確立したりできます。 これは、レゴ コンストラクターの原理に基づくオブジェクト指向環境であり、レゴ コンストラクターが多色のブロックから組み立てられるのと同じ方法で、多色のコマンド ブロックからプログラムが組み立てられます。
環境はロシア語化されており、ロシア語の説明書やマニュアルが多数あります。 Scratch で作成されたプロジェクトは、プロジェクトの Web サイト scratch.mit.edu/ に掲載されており、すべてダウンロードして使用できます。 読み書きやマウスの操作が少しできる子供でも、幼い頃から作業しやすい環境です。
環境の基礎は、動き、外観、サウンド、ペン、コントロール、センサー、オペレーター、変数など、いくつかのグループに分割されたコマンド ブロックです。 組み込みの「引き出し」を使用すると、目的のオブジェクトとコマンドブロックを描画できます(マウスでドラッグする必要があります)-条件ステートメントとループの使用を含むアクションのプログラムを設定します。 もちろん、Scratch には実際のプログラミング言語の多くの機能が欠けていますが、非常に複雑なプログラムやゲームを作成するのに十分な機能を備えています。 プログラム自体には、既製の描画された動物、家、オブジェクトなどのかなり大きなデータベースがあり、さらに、大人と子供が作成したインターネット上で公開されている数千のサンプル プログラムのいずれかをサンプルとして使用できます。
2008 年に、Arduino 用の Scratch プロジェクト (オリジナルでは Scratch For Arduino または略して S4A) が登場しました。これは、Arduino コントローラーを視覚的に簡単にプログラミングする機能を提供する Scratch の修正版であり、センサーを制御するための新しいブロックも含まれています。 Arduinoに接続されたアクチュエータ。
S4A はファームウェア スケッチ s4a.cat/downloads/S4AFirmware15.ino であり、Arduino にロードされ、実行デバイスになり、プログラムがコンピューター上で実行され、Arduino が物理的に実行し、信号をボード出力に送信します。 この場合、Arduino はどのポートにどのレベルを設定するかをシリアル接続を介して Scratch からコマンドを受信し、測定されたレベルを入力から PC に転送します。
詳細については、プロジェクト ページまたは Amperka のビデオをご覧ください。 www.youtube.com/playlist?…OzZQGDFdoRfldtqbmNU6a-PIp

アーデュブロック
プロジェクトページ -blog.ardublock.com/
開発者の名前とそのローカリゼーションは見つかりませんでしたが、このプロジェクトは sparkfun ボードの開発者によって積極的に推進されているため、私見ではこれは彼らのプロジェクトです。
Ardublock は、非プログラマー向けに設計された使いやすい Arduino 用のグラフィカル プログラミング言語です。 スクラッチとは異なり、ArduBlock が組み込まれています。 Arduino環境 IDE を開き、MK にロードされるプログラム スケッチを生成します。 さらに、プラットフォームにアップロードした後、コードは自律的に実行されます。 有線または無線通信を介してコンピュータから直接制御する必要はありません。
ロシア語を話すコミュニティの間で、このプロジェクトは、ラビンスクのアレクサンダー・セルゲイビッチ・アリキンの熱心な教師のおかげで知られています - geektimes.ru/post/258834/

FLProg
プロジェクトページ - flprog.ru/
このプロジェクトは Sergey Glushenko という 1 人の人物によって開発されています。 主なアイデアは、産業用コントローラーのプログラミングの分野で使用される FBD および LAD 言語を Arduino に適合させることです。

FBD(ファンクションブロックダイアグラム)- IEC 61131-3 標準のグラフィカル プログラミング言語。 プログラムは、上から順に実行される回路のリストから形成されます。 プログラミング時には、ライブラリ ブロックのセットが使用されます。 ブロック (要素) は、サブルーチン、関数、または 機能ブロック(AND、OR、NOT、トリガー、タイマー、カウンター、処理ブロック アナログ信号、数学演算など)。 個々の回路は、それぞれからグラフィカルに構成された式です 個々の要素. 次のブロックはブロックの出力に接続され、チェーンを形成します。 チェーン内では、ブロックは接続順に厳密に実行されます。 回路計算の結果は、内部変数に書き込まれるか、コントローラ出力に供給されます。

ラダー図(LD、LAD、RKS)- リレー (はしご) ロジックの言語。 この言語の構文は、リレー技術で作成された論理回路を置き換えるのに便利です。 に取り組む自動化エンジニアを対象としています。 工業企業. コントローラーのロジックへの明確なインターフェースを提供し、実際のプログラミングと試運転のタスクだけでなく、コントローラーに接続された機器の迅速なトラブルシューティングも容易にします。 ラダーロジックプログラムには、電気エンジニア向けの視覚的で直感的なグラフィカルインターフェイスがあり、次のような論理操作を提示します。 電子回路閉じた接点と開いた接点。 この回路に電流が流れているかどうかは、結果に対応します。 論理演算(電流が流れている場合は true、電流が流れていない場合は false)。 主な要素言語は、比喩的にリレーまたはボタン接点のペアに例えることができる接点です。 接点のペアは論理変数で識別され、このペアの状態は変数の値で識別されます。 ノーマルクローズとノーマルオープンの接点要素は区別され、電気回路のノーマルクローズとノーマルオープンの押しボタンと比較することができます。
FLProg の作業の結果は、MK にロードできる最終的なコードです。

これらは、プログラミングの視覚的な方法を実装できるすべてのプロジェクトではありません。 他にもあります - おそらくより良く、より進歩的ですが、あまり知られていません.