スケッチ内でATtinyのモデル番号を判定する


ATtinyはモデルごとにピンの役割が違います。
1つのスケッチでATtiny84とATtiny85など、複数のモデルをサポートするためには、
ATtinyのモデルごとにピン番号を変える必要があります。
以下の様にマクロ文字を判定することで、モデル毎にピン番号を変更することができます。
/*
 * ATtiny blink
 */
#if defined(__AVR_ATtiny84__)
  #define outPin 3  // PA7 with FemtoCow
#elif defined(__AVR_ATtiny85__)
  #define outPin 3  // PB3
#elif defined(__AVR_ATtiny861__)
  #define outPin 3  // PB6
#elif defined(__AVR_ATtiny461__)
  #define outPin 3  // PB6
#elif defined(__AVR_ATtiny2313__)
  #define outPin 3  // PA0
#elif defined(__AVR_ATtiny4313__)
  #define outPin 3  // PA0
#elif defined(__AVR_ATtiny13__)
  #define outPin 3  // PB3
#endif
#define wait 1000

void setup() {
  pinMode(outPin,OUTPUT);
  digitalWrite(outPin,LOW);
}

void loop() {
  digitalWrite(outPin,HIGH);
  delay(wait);
  digitalWrite(outPin,LOW);
  delay(wait);
}

モデル毎のマクロの一覧はこ ちらこ ちらで公開されています。

DIPパッケージのATtinyで試していないのは、ATtiny281  ATtiny26  ATtiny13  ATtiny88ぐらいですが、
前の3つはFlashサイズが小さい(これらを使うならATtiny84/85/861で事足りる)、
ATtiny88は28ピンで大きすぎる(これを使うなら同じ28ピンのATMega328を使う)という理由で、
おそらく試すことは無いと思います。

続く....