ロシア語でのArduinoプログラミング。 ブログ› Arduino:プログラミングなしのプログラミング。 プログラミング言語の一般的な説明

こんにちは! 私は追加教育の教師であるAlikinAlexanderSergeevichです。私は、ラビンスクの中央児童青少年劇場で「ロボット工学」と「無線工学」のサークルを率いています。 ArduBloсkプログラムを使用してArduinoをプログラムする簡単な方法について少しお話ししたいと思います。

私はこのプログラムを教育プロセスに導入し、その結果に満足しています。特に単純なプログラムを作成する場合や複雑なプログラムの初期段階を作成する場合に、子供たちの間で特別な需要があります。 ArduBloсkはグラフィカルプログラミング環境です。つまり、すべてのアクションは、ロシア語で署名されたアクションを使用して描画された画像で実行されます。これにより、Arduinoプラットフォームの学習が大幅に簡素化されます。 このプログラムのおかげで、2年生の子供たちはArduinoでの作業を簡単に習得できます。

はい、Scratchはまだ存在しており、Arduinoプログラミング用の非常にシンプルなグラフィック環境でもあると言う人もいるかもしれません。 しかし、ScratchはArduinoをフラッシュせず、それを制御するだけです。 USBケーブル。 Arduinoはコンピューターに依存しており、自律的に動作することはできません。 独自のプロジェクトを作成する場合、特にロボットデバイスを作成する場合は、Arduinoの自律性が重要です。

スタンフォードが提供する65のコースのうち、少なくとも半分はプログラミングスキルを必要とします。 約4年前、彼らはいわゆる学術アカデミーに登場しました。 マドリッドのテクノロジーアンドデジタルアーツエンジニアリングセンターの大学院長であるローララヤは、人々が失業するのを防ぐ唯一の方法は、ロボットの制御方法を学ぶことだと信じています。 「アプライアンスが生き残り、自律するためだけに機能する方法と理由のロジックを理解してください」と彼は言います。 製品はもはやマニュアルと一緒に販売されていません。 1つは最小限の技術的直感を持っていることが期待されます。 私たちが行うことはすべて、アルゴリズムに沿ったものです。

NXTやEV3などの有名なLEGOロボットでさえ、ArduinoプログラミングのArduBloсkプログラムの登場により、学生にとってそれほど興味深いものではなくなりました。 また、ArduinoはどのLEGOデザイナーよりもはるかに安価であり、多くのコンポーネントは古い家電製品から簡単に取り出すことができます。 ArduBloсkプログラムは、初心者だけでなく、Arduinoプラットフォームのアクティブユーザーの仕事にも役立ちます。

誰もがその方法と理由を理解する時が来ました。 マイクロコンピューティングの出現により、 新世界。 コンピューターは、私たちが営業時間外に構築したものと比較して、信じられないほど複雑でした。 これがコンピューターの概略図です。 さて、もっと教訓的なことを試してみましょう。

コンピュータは以下の部品で構成されています。 たとえば、アドレスは3ワード長、つまり12ビットでした。 つまり、正しい意味で、それは内部のページネーションを反転させました。 クロックは740kHzで、毎秒600命令を実行できました。 マイクロコントローラは、個々のタスクを独立して、確実に、そして確実に実行するように設計されています。 センサーからデータを読み取り、水槽の温度を決定するようにマイクロコントローラーをプログラムできます。温度が低すぎる場合は、ヒーターをオンにします。 冷却が高すぎると増加します。

では、ArduBlockとは何ですか?私が言ったように、これはグラフィカルプログラミング環境です。 ほぼ完全にロシア語に翻訳されています。 しかし、ArduBloсkでは、これだけでなく、私たちが作成したArduBloсkプログラムがコードに変換されるという事実もハイライトです。 Arduino IDE。 このプログラムは、Arduino IDEプログラミング環境に組み込まれています。つまり、プラグインです。

以下は、ArduinoIDEで点滅するLEDと変換されたプログラムの例です。 プログラムでのすべての作業は非常に簡単で、どの学生もそれを理解することができます。

外に長く置きすぎた 許容範囲、アラームが鳴ります。 矛盾していますが、コンピューター全体よりもマイクロコントローラーの方が簡単で、とにかく鳥を殺すのは大砲になります。 しかし、マイクロコントローラーが電子機器に侵入する頃には、彼らは雌犬でした。 あなたは非常に不親切なプログラマーを使わなければなりませんでした。 チップを紫外線源の下に置くために必要なメモリを消去します。

プログラムの16進キーパッドを入力したプログラマーさえいました。 あまりにも長い間、あまりにも長い間、マイクロコントローラーはクローズドグループによって所有されてきました。 それらは高価で使いにくく、教育ツールではありませんでした。 生徒には見えません。


プログラムに取り組んだ結果、Arduinoをプログラムできるだけでなく、Arduino IDEのテキスト形式で理解できないコマンドを学習することもできますが、標準のコマンドを書くのが面倒な場合は、すぐにスケッチする必要があります。クイックマウス操作を備えたArduBlokの簡単なプログラムで、ArduinoIDEでデバッグします。

それに加えて、愛好家の巨大なコミュニティと完全な会社のサポートがあり、私たちは素晴らしいエコシステムを持っています。 これへのアクセスは、チップ上の接点の読み取りと書き込みの両方に非常に便利です。 ご覧のとおり、セットアップとサイクルの2つのセクションがあります。 セットアップは一度行われ、ループはループで行われます。

次に、「しかし、Cardosoは非常に高価です」と言うでしょう。 ヴェルナーフォンブラウンは彼になります 親友ペーネミュンデでこれらのチップの箱を見つけたら。 あなたはヒトラーの親友になる危険があります。 オリジナルのデザインは「デザイナーとアーティスト」のために作られたので、その学習曲線は非常にユーザーフレンドリーです。 誰かが彼らに正しい指示を与えたので、私たちを取り囲み、自分たちのために物事を行うすべての機械がそれを行います。

ArduBlokをインストールするには、最初にArduinoIDEを公式のArduinoWebサイトからダウンロードしてインストールし、操作する際の設定を理解する必要があります。 Arduinoボード UNO。 これを行う方法は、同じサイトまたはAmperkで説明されているか、YouTubeを参照してください。 さて、あなたがこれらすべてを理解したとき、あなたはここの公式ウェブサイトからArduBlokをダウンロードする必要があります。 最新バージョンをダウンロードすることはお勧めしません。初心者には非常に難しいですが、2013年7月12日のバージョンが最も重要であり、このファイルが最も人気があります。

実験3:一度または常に?

コンピュータプログラムは通常、非常に口頭で書かれています。 各ブロックは、最初の画像と同様に、数行のコードに相当します。 したがって、プログラミング言語の魔法の言葉を知らなくても、複雑なプログラムを作成できます。 本質的に、違いは次のとおりです。 メインループでは、複数回繰り返したいすべてのブロックを配置します。

このプログラムはメインループ用です。 より大きなプログラムで実験してみましょう。 最後に、開始命令とマスターループの両方にブロックを配置してみてください。

  • 以前に作成したプロジェクトに戻るか、最初からやり直してください。
  • 一度実行するか、毎回繰り返すかを選択します。
  • いくつかのブロックを次々に配置してみてください。
プログラムを作成するこの方法は非常に便利です。

次に、ダウンロードしたファイルの名前をardublock-allに変更し、「documents」フォルダーに入れます。 次のフォルダーを作成します。Arduino>ツール>ArduBlockTool>ツール。後者では、ダウンロードして名前を変更したファイルをスローします。 ArduBlokはすべての人に役立ちます オペレーティングシステム、Linuxでも、個人的にXP、Win7、Win8でテストしました。すべての例は、Win7用です。 プログラムのインストールは、すべてのシステムで同じです。


このプログラムは、お持ちのコントローラーカードとコンピューターの正確な場所を自動的にチェックします。 沢山あります 他の種類コントローラボード。 プログラムを作成し、コミュニティと共有します。 踊ったり、遊んだり、何でもできます。 これは、多くの詳細を非表示にすることでプログラミングを大幅に簡素化するツールです。

したがって、このコンポーネントのハードウェアI / Oレジスタの読み取りまたは書き込みを行い、ピン配置を調べてピン名とそのレイアウトを理解する必要があります。 プログラミング言語とは何ですか? 。 他の言語と同様に、プログラミング言語には独自の構文規則があります。 欠点は、あなたを理解しようとする見知らぬ人とは異なり、プログラミングでは、構文規則に厳密に従わないと、プログラムが実行されないことです。 1つの重要な利点があります:すべてのプログラミング言語は類似しています。

さて、もっと簡単なら、私はメールディスク7zにアーカイブを用意し、2つのフォルダーを見つけるために解凍しました。 すでに働いているもの Arduinoプログラム IDE、および別のフォルダーでは、コンテンツをDocumentsフォルダーに送信する必要があります。

ArduBlokで作業するには、ArduinoIDEを実行する必要があります。 次に、[ツール]タブに移動し、ArduBlokアイテムを見つけてクリックします。これが、私たちの目標です。

プログラムは上から下に読み取られます。 これは、プログラムを動的にする一連の命令と条件で構成されています。 私たちがプログラムを実行するとき、それはコンピュータのためにコンパイルされ、その時に実行されると言われています。 あなたはプログラムするために数学に強い必要がありますか? 。 足し算、引き算、割り算、掛け算が何であるかを知っているなら、プログラミングの世界はあなたのものです。

変数、定数、および型

しかし、それではどこが難しいのでしょうか。 。 人間の活動を一連の指示に変換します。 例。 人は、目を使って、目の前の動きを非常にうまく検出できます。 これらは、プログラマーが直面する質問です。 あなたの目標が部屋の温度を測定するプログラムを設定することであるとしましょう。 これは、情報を格納するための変数と定数の役割です。


それでは、プログラムのインターフェースを扱いましょう。 すでにご存知のように、設定はありませんが、プログラミング用のアイコンがたくさんあり、それぞれにArduinoIDEテキスト形式のコマンドが含まれています。 新しいバージョンにはさらに多くのアイコンがあるので、ArduBlokに対処してください 最新バージョン難しいし、アイコンのいくつかはロシア語に翻訳されていません。

室温が27°であると仮定します。 Arduino言語では、次のように記述します。 変数宣言の最後にセミコロンがあることに気づいたかもしれません。 そもそも間違いを犯すのはそのためです。それはごく普通のことであり、受け入れられる習慣です。 変数と定数について話しましたが、ここでは温度が変数です。 つまり、プログラム内でいつでも変更できます。 これを行うには、これ以上簡単なことはありません。たとえば、気温が31度になったとすると、次のように記述します。

次に、温度変数は しかし、温度を可変ではなく一定と宣言した場合、それを変更することはできません。 ただし、これはセキュリティと最適化の問題です。 明らかに、小さなプログラムの場合、違いを感じる可能性は低いですが、大規模な場合、これが決定的になります。 あなたが書くすべてのものを正確にするためにプログラミングの習慣を身につけてください、これはあなたが明白でより効率的なコードを書くことを可能にします。


「管理」のセクションでは、さまざまなサイクルを見つけることができます。


「ポート」セクションでは、ポートの値だけでなく、それらに接続されているサウンドエミッター、サーボ、または超音波近接センサーを管理できます。

精度について言えば、変数も整数に設定されていることに気付くでしょう。 今回はもう少しですが、文字列で宣言しています。 文字列は、上記のように引用符で囲む必要があります。 これは、テストや条件で非常に役立ちます。後で理解できます。

このセクションでは、コードの記述に役立つ3つの重要な要素について説明します。 家の中に3つの室温があり、家の平均温度が必要だとします。 変数を宣言することから始めましょう。 平均温度値を計算します。


「数値/定数」セクションでは、デジタル値を選択するか、変数を作成できますが、以下のものを使用することはほとんどありません。


「演算子」セクションには、必要なすべての比較演算子と計算演算子があります。

実際、変数を作成して、別の変数の値、またはここにあるように、いくつかの変数の合計を割り当てることができます。 改良版では、コードは次のようになります。 平均気温が上がったので、どこかに置いておくといいでしょう。

どこかに情報を表示または送信するための多くの可能性があります。 これは、入力と出力のあるダイアログとして表示されます。 これは私たちが上で書いたコードです。 これらの括弧の間にテストに非常に役立つものを実際に囲むことができます。 ダウンロードが完了すると、モニターに平均気温が表示されます。 上記のように、印刷はプログラムをテストおよびデバッグするための非常に強力なツールです。 どこにでも配置できるため、変数の値が正しいことを確認してください。


ユーティリティセクションでは、主に時間の経過とともにアイコンを使用します。


「TinkerKitBloks」は、購入したTinkerKitセンサーのセクションです。 もちろん、そのようなセットはありませんが、他のセットではアイコンが機能しないという意味ではありません。逆に、LEDやボタンをオンにするなどのアイコンを使用すると非常に便利です。 。 これらの記号は、ほとんどすべてのプログラムで使用されています。 ただし、これらには特殊性があります。選択すると、ポートを示す誤ったアイコンが表示されるため、それらを削除し、「数値/定数」セクションのアイコンを置き換えて、リストの一番上に配置する必要があります。

非常に悪いことは何もありません。この豪華な用語は、2行以上の文字のマージを指します。 本当にここで解決策が得られない場合。 どれの 良いプログラム制御構造がないのでしょうか? それは非動的プログラムになります。

これまでにインストールした小さなプログラムは、コーディング方法を教えるのに最適ですが、少し退屈です。 プログラミングの目標は、提供されたものに基づいて決定を下す自律的なプログラムを作成することです。 このパートでは、4つの最も重要なガバナンス構造について説明します。


「DFRobot」-このセクションは、センサーが指定されている場合に使用されます。センサーが見つかる場合があります。 そして、今日の例も例外ではありません。「調整可能なIRスイッチ」と「ラインセンサー」があります。 「ラインセンサー」は、アンペルカのものであるため、写真のものとは異なります。 それらの動作は同じですが、感度レギュレーターを備えているため、Amperkaのセンサーの方がはるかに優れています。

比較演算子の小さなテーブルを覚えておく必要があります。 この表は、すべてのガバナンス構造に有効です。 等号をテストするときは、変数を宣言するときに等号がすでに使用されているため、単純な等号の代わりに二重等号を使用することに注意してください。

この例では、10が5より大きいかどうかを確認します。 trueの場合、緑で囲まれた角かっこの間で実行されます。 falseの場合、黄色で囲まれた報酬の間に書かれたものが実行されます。 したがって、このタイプの有用性を理解し始めます。 10は5より大きいので、条件は真であり、緑で囲まれた括弧内にあることを実行します。 それ以降は無視されます。


Seeedstudio Grove-ジョイスティックしかないのですが、このセクションのセンサーを使ったことがありません。 このセクションは新しいバージョンで拡張されました。


そして最後のセクションは「リンカーキット」です。 その中に提示されたセンサーは私に出くわしませんでした。

一方、他に多くのものが必要な場合、スイッチと呼ばれる別の制御構造を検討する必要がある場合。 そして、ウィンドウの直後に、変数をテストする価値があると書きます。 つまり、ケースがチェックされていない場合、デフォルトで検出されたものが実行されます。 で 英語の単語ハックすることを意味します フランス語。 この命令は、スイッチを終了することをプログラムに伝えることができるため、非常に便利です。 ケースが以前にチェックされている場合でも、スイッチが各ケースをチェックすることに注意する必要があります。

ストリップに沿って移動するロボットのプログラムの例を示したいと思います。 ロボットは組み立てと取得の両方で非常にシンプルですが、まず最初に。 取得と組み立てから始めましょう。

これがパーツのセットそのものです。すべてがAmperkaのWebサイトで購入されました。


時間と効率の潜在的な向上。 私たちが話しているとしましょう。 はい、式はtrueなので、trueである限り、中括弧内にあるものを実行します。 1つは、式がtrueの場合にのみ返されます。 設定した設定でループするだけでも理解できます。 これは強力で、時には危険なツールです。

何かのように見えますが、リスクが少ない別のループがあります。 これが私たちの最後のガバナンス構造であり、これがフォーラムです。 上記のように、インクリメントは変数に数値を追加するアクションです。 逆はデクリメントと呼ばれ、変数から数値を引く行為です。 インクリメントとデクリメントは、多くの場合、数値を使用して行われます。 このようにして増加できることがわかりました。

  1. AMP-B001モーターシールド(2チャンネル、2 A)1890ルーブル
  2. AMP-B017トロイカシールドRUB1,690
  3. AMP-X053バッテリーコンパートメント3×2AA160 RUB
  4. AMP-B018ラインセンサーデジタル2580RUB
  5. ROB0049二輪プラットフォームminiQ11890 RUB
  6. SEN0019赤外線障害物センサー1390RUB
  7. FIT0032赤外線障害物センサー用マウント190RUB
  8. A000066 Arduino Uno 1 1150 RUB


まず、車輪付きのプラットフォームを組み立て、ワイヤーをエンジンにはんだ付けします。


次に、ラックを取り付けてボードを取り付けます Arduino UNO、古いものから取った マザーボードまたは他の同様の添付ファイル。


次に、Arduino UNOボードをこれらのラックに取り付けますが、1本のボルトを固定することはできません。コネクタが邪魔になります。 もちろん、はんだ付けすることはできますが、それはあなた次第です。


次に固定する 赤外線センサーその特別なマウント上の障害物。 感度コントロールが上にあることに注意してください。これは調整を容易にするためです。



次に、デジタルラインセンサーを取り付けます。ここでは、ボルトを2つとナットを4つ探す必要があります。プラットフォーム自体とラインセンサーの間に2つのナットを取り付け、残りのセンサーを固定します。


次にモーターシールドをインストールするか、別の方法でモータードライバーを呼び出すことができます。 私たちの場合、ジャンパーに注意してください。 モーターに別の電源を使用しないので、この位置に取り付けます。 下部は電気テープで密閉されているため、万が一の場合に備えて、ArduinoUNOのUSBコネクタからの偶発的な短絡が発生することはありません。



モーターシールドの上にトロイカシールドを取り付けます。 センサー接続の利便性のために必要です。 私たちが使用するセンサーはすべてデジタルであるため、ラインセンサーはピンとも呼ばれるポート8と9に接続され、赤外線障害物センサーはポート12に接続されます。 ポート4、5、6、7は、モーターシールドがモーターを制御するために使用するため、使用できないことに注意してください。 生徒たちが理解できるように、私はこれらのポートに赤いマーカーで特別にペイントしました。


お気づきの方もいらっしゃると思いますが、取り付けたバッテリーコンパートメントが飛び出さないように、万が一に備えて黒いスリーブを追加しました。 そして最後に、通常の輪ゴムで構造全体を固定します。

バッテリーコンパートメントの接続には2つのタイプがあります。 TroykaShieldへの最初の配線接続。 電源プラグをはんだ付けして、ArduinoUNOボード自体に接続することもできます。



これが私たちのロボットの準備ができています。 プログラミングを開始する前に、すべてがどのように機能するかを学ぶ必要があります。
-モーター:
ポート4と5は一方のモーターを制御するために使用され、6と7はもう一方のモーターを制御するために使用されます。
ポート5と6のPWMでモーターの回転速度を調整します。
シグナリングポート4および7による順方向または逆方向。
-センサー:
私たちは皆デジタルなので、1または0の形で論理信号を出します。
そしてそれらを調整するために、それらは特別なレギュレーターを持っており、適切なドライバーの助けを借りてそれらを校正することができます。

詳細はAmperkaにあります。 なぜここに? Arduinoの操作に関する情報がたくさんあるからです。

ええと、おそらく、私たちはすべてを表面的に見て、研究し、そしてもちろん、ロボットを組み立てました。 今、それはプログラムされる必要があります、ここにそれがあります-待望のプログラム!


そして、プログラムはArduinoIDEに変換されました。

Void setup()(pinMode(8、INPUT); pinMode(12、INPUT); pinMode(9、INPUT); pinMode(4、OUTPUT); pinMode(7、OUTPUT); pinMode(5、OUTPUT); pinMode(6 、OUTPUT);)void loop()(if(digitalRead(12))(if(digitalRead(8))(if(digitalRead(9))(digitalWrite(4、HIGH); AnalogWrite(5、255); AnalogWrite( 6、255); digitalWrite(7、HIGH);)else(digitalWrite(4、HIGH); AnalogWrite(5、255); AnalogWrite(6、50); digitalWrite(7、LOW);))else(if(digitalRead (9))(digitalWrite(4、LOW); AnalogWrite(5、50); AnalogWrite(6、255); digitalWrite(7、HIGH);)else(digitalWrite(4、HIGH); AnalogWrite(5、255); AnalogWrite(6、255); digitalWrite(7、HIGH);)))else(digitalWrite(4、HIGH); AnalogWrite(5、0); AnalogWrite(6、0); digitalWrite(7、HIGH);))

結論として、このプログラムは教育の天の恵みであり、自習であっても、ArduinoIDEコマンドを学ぶのに役立ちます。 最も重要なハイライトは、50を超えるインストールアイコンがあると、「失敗」し始めることです。 はい、確かに、これはハイライトです。ArduBlokでのみ一定のプログラミングを行うと、ArduinoIDEでのプログラミング方法がわからないためです。 いわゆる「グリッチ」は、プログラムの正確なデバッグのためのコマンドを考えて覚えようとすることを可能にします。

あなたの成功を祈って。

序章

Freeduino/Arduinoは特別なプログラミング言語でプログラムされています-それはC/C ++に基づいており、その機能のいずれかを使用することができます。 厳密に言えば、別々 Arduino言語 Arduinoコンパイラがないのと同じように存在しません-書かれたプログラムは(最小限の変更で)C / C ++プログラムに変換され、AVR-GCCコンパイラによってコンパイルされます。 そのため、実際には、AVRマイクロコントローラーに特化したC /C++バリアントが使用されています。

違いは、シンプルな開発環境と、マイクロコントローラーの「オンボード」周辺機器へのアクセスを容易にする一連の基本ライブラリーを入手できることです。

同意します。シリアルポートで9600ビット/秒の速度で作業を開始し、1行で電話をかけると非常に便利です。

Serial.begin(9600);

また、「ベア」C / C ++を使用する場合は、マイクロコントローラーのドキュメントを処理し、次のように呼び出す必要があります。

UBRR0H =((F_CPU / 16 + 9600/2)/ 9600-1)>> 8;
UBRR0L =((F_CPU / 16 + 9600/2)/ 9600-1);
sbi(UCSR0B、RXEN0);
sbi(UCSR0B、TXEN0);
sbi(UCSR0B、RXCIE0);

Arduinoプログラミングの主な機能と特徴の概要は次のとおりです。 C / C ++言語の構文に慣れていない場合は、この問題に関する文献またはインターネットソースを参照することをお勧めします。

一方、提示されているすべての例は非常に単純であり、追加の文献を読まなくても、ソーステキストを理解して独自のプログラムを作成するのに問題はないでしょう。

より完全なドキュメント 英語)は、プロジェクトの公式Webサイト(http://www.arduino.cc)に掲載されています。 フォーラム、追加のライブラリへのリンク、およびそれらの説明もあります。

Arduinoプロジェクトの公式ウェブサイトの説明と同様に、「ポート」はマイクロコントローラーの接点を指し、対応する番号でコネクターに出力されます。 さらに、シリアルデータポート(COMポート)があります。

プログラムの構造

プログラムでは、2つを宣言する必要があります 主な機能:setup()およびloop()。

setup()関数は、Freeduinoボードの電源を入れたりリセットしたりするたびに1回呼び出されます。 変数の初期化、デジタルポートモードの設定などに使用します。

loop()関数は、本体に記述されているコマンドを繰り返し実行します。 それらの。 関数が終了すると、再度呼び出されます。

簡単な例を見てみましょう。

void setup()//初期設定
{
beginSerial(9600); //シリアルポートの速度を9600bpsに設定します
pinMode(3、INPUT); //データ入力用に3番目のポートを設定します
}

//プログラムは、3番目のポートで信号をチェックし、に応答を送信します。
//コンピュータのシリアルポートへのテキストメッセージとして
void loop()//プログラム本体
{
if(digitalRead(3)== HIGH)//ポート3をポーリングするための条件
serialWrite( "H"); //文字「H」の形式でCOMポートにメッセージを送信します
そうしないと
serialWrite( "L"); //文字「L」の形式でメッセージをCOMポートに送信します
delay(1000); //1秒遅らせます。
}

pinMode(ポート、モード);

説明:

信号を入力または出力するように指定されたポートを構成します。

オプション:

port –モードを設定するポートの番号(0から13までの整数値)。

モード-INPUT(入力)またはOUTPUT(出力)のいずれか。

pinMode(13、OUTPUT); //13番目のピンが出力になります
pinMode(12、INPUT); //そして12番目は入力です

ノート:

アナログ入力は、番号14(アナログ入力0)から19(アナログ入力5)でアクセスすると、デジタル入力/出力として使用できます。

digitalWrite(ポート、値);

説明:

指定されたポートの電圧レベルを高(HIGH)または低(LOW)に設定します。

オプション:

ポート:ポート番号

値:HIGHまたはLOW

digitalWrite(13、HIGH); //ピン13を「ハイ」状態に設定します

値=digitalRead(port);

説明:

指定されたポートの値を読み取ります

オプション:

ポート:ポーリングされたポート番号

戻り値:int型のポート(HIGHまたはLOW)の現在の値を返します

int値;
val = digitalRead(12); //12番目の出力をポーリングします

ノート:

読み取りポートに何も接続されていない場合、digitalRead()関数はランダムにHIGHまたはLOWを返す可能性があります。

アナログ入出力信号

値=analogRead(port);

説明:

指定されたアナログポートから値を読み取ります。 Freeduinoには、6チャンネル、それぞれ10ビットのA/Dコンバーターが含まれています。 これは、0〜5Vの入力電圧が0〜1023の整数値に変換されることを意味します。読み取り分解能は次のとおりです。5V/1024値=0.004883V /値(4.883mV)。 アナログ入力値の読み取りには約100nS(0.0001 S)かかるため、最大読み出し速度は1秒間に約10,000回です。

オプション:

戻り値:指定されたポートから読み取られた0〜1023の範囲のintを返します。

int値;
val = analogRead(0); //アナログ入力0で値を読み取ります

ノート:

アナログポートはデフォルトで信号入力として定義されており、デジタルポートとは異なり、pinMode関数を呼び出して構成する必要はありません。

AnalogWrite(ポート、値);

説明:

アナログ値をポートに出力します。 この機能は、3、5、6、9、10、および11のFreeduinoデジタルポートで機能します。

LEDの明るさの変更やモーターの制御などに使用できます。 AnalogWrite関数を呼び出した後、対応するポートは、analogWrite関数(または同じポート上のdigitalRead / digitalWrite関数)への次の呼び出しが発生するまでPWMモードで動作します。

オプション:

ポート:ポーリングされたアナログ入力の番号

値:0〜255の整数。値0は、指定されたポートで0Vを生成します。 値が255の場合、指定されたポートで+5Vが生成されます。 0〜255の値の場合、ポートは0〜 + 5Vの間で急速に循環します-値が高いほど、ポートはより頻繁にHIGH(5V)を生成します。

AnalogWrite(9、128);//ピン9を2.5Vに相当する値に設定

ノート:

AnalogWrite関数を呼び出す前に、pinMode関数を呼び出してポートをpinに設定する必要はありません。

信号発生周波数は約490Hzです。

時間=ミリ秒();

説明:

Freeduinoが現在のプログラムを実行してからのミリ秒数を返します。 カウンタはオーバーフローし、約9時間後にゼロにリセットされます。

戻り値:unsignedlong型の値を返します

署名されていない長い時間; //unsignedlong型の時間変数を宣言します
時間=ミリ秒(); //ミリ秒数を渡す

delay(time_ms);

説明:

指定されたミリ秒数の間、プログラムを一時停止します。

オプション:

time_ms –ミリ秒単位のプログラム遅延時間

delay(1000); //1秒間一時停止します

delayMicroseconds

delayMicroseconds(time_µs);

説明:

指定されたマイクロ秒数の間、プログラムを一時停止します。

オプション:

time_µs –マイクロ秒単位のプログラム遅延時間

delayMicroseconds(500); //500マイクロ秒を一時停止します

pulseIn(ポート、値);

説明:

デジタルポートからパルス(高または低)を読み取り、パルスの持続時間をマイクロ秒単位で返します。

たとえば、関数を呼び出すときに「value」パラメータがHIGHに設定されている場合、pulseIn()はポートが高い信号レベルを受信するのを待ちます。 到着した瞬間から、ポートが受信するまでカウントダウンが始まります 低レベル信号。 関数はパルス長を返します( 上級)マイクロ秒単位。 10マイクロ秒から3分のパルスで動作します。 この関数は、パルスが検出されるまで結果を返さないことに注意してください。

オプション:

ポート:パルスを読み取るポートの番号

値:パルスタイプHIGHまたはLOW

戻り値:パルスの持続時間をマイクロ秒単位で返します(int型)

int期間; //int型のduration変数の宣言
期間=pulseIn(pin、HIGH); //パルス幅を測定します

シリアル通信

Freeduinoには、Freeduino/Arduinoデバイス間またはコンピューターとの通信に使用できるシリアルコントローラーが組み込まれています。 コンピューターでは、対応する接続​​はUSBCOMポートで表されます。

通信はデジタルポート0と1で行われるため、シリアルデータ機能を使用している場合はデジタルI/Oに使用できません。

Serial.begin(ボーレート);

説明:

ボーレートを設定します COMポートシリアルデータ転送のビット/秒。 コンピューターと通信するには、300、1200、2400、4800、9600、14400、19200、28800、38400、57600、または115200のいずれかの標準速度を使用します。ポート0で別のマイクロコントローラーと通信する場合は、他の速度を指定することもできます。および1。

オプション:

ボーレート:ビット/秒単位のデータレート。

Serial.begin(9600); //速度を9600bpsに設定します

serial.available

count = serial.available();

説明:

シリアルポートを介して受信したバイトは、マイクロコントローラのバッファに入り、そこからプログラムが読み取ることができます。 この関数は、バッファに蓄積されたバイト数を返します。 シリアルバッファは最大128バイトを格納できます。

戻り値:

int値、シリアルバッファでの読み取りに使用できるバイト数、または使用できるものがない場合は0を返します。

if(Serial.available()> 0)(//バッファにデータがある場合
//ここでデータを受信して​​処理する必要があります
}

char = Serial.read();

説明:

シリアルバッファから次のバイトを読み取ります。

戻り値:

シリアルポートからの着信データの最初の使用可能なバイト、または着信データがない場合は-1。

着信バイト=Serial.read(); //バイトを読み取ります

説明:

シリアルポートの入力バッファをクリアします。 バッファリングされたデータは失われ、Serial.read()またはSerial.available()をさらに呼び出すと、Serial.flush()を呼び出した後に受信したデータに意味があります。

Serial.flush(); //バッファをクリアします-「最初から」データの受信を開始します

説明:

シリアルポートへのデータ出力。

オプション:

この関数には、出力データのタイプと形式に応じて、いくつかの呼び出し形式があります。

Serial.print(b、DEC)は、bの10進表現であるASCII文字列を出力します。

int b = 79;

Serial.print(b、HEX)は、数値bの16進表現であるASCII文字列を出力します。

int b = 79;

Serial.print(b、OCT)は、数値bの8進表現であるASCII文字列を出力します。

int b = 79;
シリアルプリント(b、oct); //文字列「117」をポートに出力します

Serial.print(b、BIN)は、数値bのバイナリ表現であるASCII文字列を出力します。

int b = 79;
Serial.print(b、BIN); //文字列「1001111」をポートに出力します

Serial.print(b、BYTE)は、bの下位バイトを出力します。

int b = 79;
Serial.print(b、BYTE); //数値79(1バイト)を出力します。 モニターで
//文字「O」を取得するシリアルポート-その
//コードは79です

Serial.print(str)strが文字列または文字の配列の場合、strをバイトごとにCOMポートに送信します。

文字バイト=(79、80、81); //値が79,80,81の3バイトの配列
Serial.print( "ここにバイトがあります:"); //文字列「Hereourbytes:」を出力します
シリアルプリント(バイト); //コード79,80,81で3文字を出力します-
//これらは「OPQ」の文字です

Serial.print(b)bがbyte型またはchar型の場合、数値b自体をポートに出力します。

シャルブ=79;
シリアルプリント(b); //文字「O」をポートに発行します

Serial.print(b)bが整数の場合、bの10進表現をポートに出力します。

int b = 79;
シリアルプリント(b); //文字列「79」をポートに出力します

説明:

Serial.println関数はSerial.print関数に似ており、同じ呼び出しオプションがあります。 唯一の違いは、データの後に2つの追加文字が出力されることです。キャリッジリターン(ASCII 13、または「\ r」)と改行文字(ASCII 10、または「\ n」)です。

例1と例2は、同じものをポートに出力します。

int b = 79;
Serial.print(b、DEC); //文字列「79」をポートに出力します
Serial.print( "\ r \ n"); //文字「\r\n」を表示します-改行
Serial.print(b、HEX); //文字列「4F」をポートに出力します
Serial.print( "\ r \ n");//文字"\ r\n"を出力します-改行

int b = 79;
Serial.println(b、DEC); //文字列「79\r\n」をポートに出力します
Serial.println(b、HEX); //文字列「4F\r\n」をポートに出力します

シリアルポートモニターで取得します。