前文
数ヶ月前、私は教師がコンピューターに接続されたスカーフを身に着けているのを見ました。 スカーフには、目に見える7セグメントインジケータといくつかのLEDがありました。 先生はある種のコードに精通していましたが、スカーフは彼に何かを鮮やかに伝えていました。 私は彼がそこで何をしていたかすぐに興味がありました...しかし、彼から学べることは、ショールがデバッグと呼ばれることだけです。 短いグーグルの後、私はArduinoと呼ばれるおもちゃに出かけます。 私は自分自身にArduinoメガ、Atmega1280(わずか29.99ドル)を搭載したメガを注文し、2週間後に郵便局に行って大切なおもちゃを受け取ります。
プロット
なぜなら 私はVS環境に慣れている熱心なWindows開発者なので、ネイティブのArduino IDEからすぐに注意をそらすことにしました。
必要なのは:
- 実際には、環境自体。
- Visual Assist X-オプションで、開発を容易にします。 VSに組み込まれている組み込みのIntelliSenseを置き換えます。 追加オプションの別の束。 有料
- WinAVR最新バージョン。 これは、AVR「プラットフォーム」用のC / C ++プログラムコンパイラです。
- avr-libc。 AVRの標準Cライブラリの最小実装。 _delay_msや_delay_us(ミリ秒およびマイクロ秒単位の遅延)などの便利な機能が含まれています。
- アブルデ。 望ましい最新バージョン、AVRのユニバーサルプログラマー。
- FTDI Virtual Comポートドライバー。 詳細に入ることなく、「Arduinoのドライバー」と呼びます。
- AvrStudio-オプション。 内蔵のマイクロコントローラーシミュレーターを使用して、プログラムを段階的にデバッグできます。
- Arduinoの回路図。 このPDFファイルは、MKのどのポートがArduino出力に接続されているかを調べるために必要です。
すべてが一度にグーグル検索されます。
それでは始めましょう。 WinAVR、avr-libcをインストールし、Avrdudeをダウンロードします。 Arduinoをコンピューターに接続し、ドライバーをインストールします。 Visual Studioで「makefileプロジェクト」を作成します。 次の図のようにフィールドに入力します。
サンプルサブディレクトリでWinAVRがインストールされた場所には、プロジェクトのビルドに使用できるMakefileがあります。 makefileプロジェクトによって作成されたフォルダーに自分自身をコピーし、いくつかの行を変更します。
MCU = atmega1280
F_CPU = 16000000
FORMAT = ihex
TARGET = ATMEGA-1280-DEV-BOARD
SRC = $(TARGET).C
- 最初の行は、マイクロコントローラーのタイプを示しています。 Arduino megaの場合、これはatmega1280です。
- 2行目は、MKが動作する頻度を設定します。
- 3行目は出力ファイル形式です。 インテルへクスを離れる方が良い。
- 4番目はプロジェクトの名前です。
- 5番目-プロジェクトのソースファイルのリスト。
PROGRAMMER_FLAGS = -p m1280 -c arduino -b 57600 -P COM3 -U flash:w:$(TARGET).hex
この文字列は、パラメーターとしてAvrdudeに渡されます。
- -pオプションは、縫製するデバイスのタイプを示します。
- -cはプログラマーのタイプを示します。 Arduinoは、STK500プログラマーから借用した通信プロトコルを使用するため、ここにstk500を安全に入力できます。 しかし、新バージョンではavrdudeがArduinoプログラマーとして追加されたため、自信を持ってここにarduinoを入力します。
- 次のオプションは、データが送信される速度を示します。 ここには常に57600を配置する必要があります。
- -Pオプションは、プログラマが接続されているポートを示します。
- 最後のオプションは、実行する特定の操作を示します。 私たちにとって、これはプログラムマイクロコントローラーをフラッシュメモリにロードしています。
次のようにすべてのセクションを変更します。
all: build program
タスク「プログラム」のリストに追加します。 これにより、コンパイルが成功すると、MKにファームウェアが自動的にロードされます。
原則として、すべての準備ができています。 最小限のプログラム(点滅LED L)を作成しようとしています。 ファイルarduino-mega-schematic.pdfを見ると、Arduinoの13番目のポートはPB7に他ならないことがわかります。 およそ次のプログラムを作成します。
#include <avr/io.h>
#include <util/delay.h>
int main()
{
DDRB = 0xFF;
while ( true )
{
PORTB |= (1 << 7);
_delay_ms(500);
PORTB &= ~(1 << 7);
_delay_ms(500);
}
return 0;
}
* This source code was highlighted with Source Code Highlighter .
入力/出力ポートを操作するための最小インターフェース:
#include "utils.h"
class Port
{
public :
Port(PORT& p) : _p(p) {};
Port& operator ! ();
Port& operator += (uint8 b);
Port& operator -= (uint8 b);
Port& operator = (Port& p);
void SetLow();
void SetHigh();
PORT& GetValue();
bool ClearBit(uint8 b);
bool SetBit(uint8 b);
void Pulse(uint8 t);
void PulseBit(uint8 b, uint8 t);
private :
PORT& _p;
};
* This source code was highlighted with Source Code Highlighter .
メイクファイルを保存し、プロジェクトをビルドして、結果を楽しんでください。
追伸 10日までに、すべての種類のセンサーとセンサーで構成されるセットが登場します。 2月までに、超音波距離計と写真レコーダーを収集します。