hotch-potch, Note to self

いろいろ作業記録

Arduino, Note to self

1.はじめに

Arduinoのコーディングで、プロトタイプの次の段階で使いそうな記述方法をまとめた。

2.開発環境

(1)VSCode設定

(2)プロジェクトのディレクトリ構成

/ プロジェクト・ルート
src/ ビルド対象でIDEに表示させないソースコード再帰検索OK
data/ ビルド対象にせず、スケッチに含めたいもの。

(9)その他

3.C++

(1)使える型の一覧

(2)コーディング・テクニック

C++の書き方

関数呼び出し

データ構造

周辺機能

4.RS-485通信

送受信の自動切り替えの書き方です。

ATmega328

送受信ピンの制御には、ハードウェア割込を使います。

#define TX_EN 3

void setup()
{
    // UARTの送信完了後の割込を有効にする
    UCSR0B |= (1<<TXCIE0);     
    // フラグに使う指定のピンモードを出力に変更 
    pinMode(TX_EN , OUTPUT);
    // UARTを初期化
    Serial.begin(9600);
}

// UARTの送信完了後の割込
ISR (USART_TX_vect)
{
    //送信終わったらLにする
    digitalWrite(TX_EN , LOW);
}

void loop()
{
    byte data[100];
    // フラグH
    digitalWrite(TX_EN , HIGH);
    // データを送信
    Serial.write(data,100);
    delay(1000);
}

ATmega32u4

送受信ピンの制御には、UNOとは異なったハードウェア割込を使います。

#define TX_EN 3

void setup()
{
    // UART1の送信完了後の割込を有効にする
    UCSR1B |= (1<<TXCIE1);    
    // フラグに使う指定のピンモードを出力に変更 
    pinMode(TX_EN , OUTPUT);
    // UART1を初期化
    Serial1.begin(9600);
}

// UART1の送信完了後の割込
ISR (USART_TX_vect)
{
    // H→L
    digitalWrite(TX_EN , LOW);
}

void loop()
{
    byte data[100];
    // L→H
    digitalWrite(TX_EN , HIGH);
    // データを送信
    Serial1.write(data,100);
    delay(1000);
}

Teensy

送受信ピンの制御は、設定しておくと勝手にやってくれます。

#define TX_EN 3

void setup()
{
    // フラグに使うピン番号を、事前に指定しておきます
    SERIALHW.transmitterEnable(TX_EN);     
    // フラグに使う指定のピンモードを出力に変更 
    pinMode(TX_EN , OUTPUT);
    // UART0を初期化
    Serial1.begin(9600);
}

void loop()
{
    byte data[100];
    // L→H。送信終わったら自動的にLにしてくれます
    digitalWrite(TX_EN , HIGH);
    // データを送信
    Serial1.write(data,100);
    delay(1000);
}

Raspberry Pi PICO

#define TX_EN 3

void setup()
{
    // フラグに使う指定のピンモードを出力に変更 
    pinMode(TX_EN , OUTPUT);
    Serial1.begin(9600);
}

void loop()
{
    byte data[100];
    // L→H
    digitalWrite(TX_EN , HIGH);
    // データを送信
    Serial1.write(data,100);
    // 送信完了待ち
    Serial1.flush();
    // H→L
    digitalWrite(TX_EN , LOW);
    delay(1000);
}

8.マイコンボード固有

(1)共通・ハードウェア割込

(2)Pro micro

(3)Teensy

(4)Raspberry Pi PICO