neo3016.log

好きなことをまとめた備忘録的なそれ。

おもちゃを電子工作で魔改造したい!!(ATtiny13)

f:id:neo3016:20211226093910p:plain

2021年ももうすぐ終わりですな。
マイコンをおもちゃに組み込んで魔改造した時の記録。
また、やりたくなったときのための指南書の意味も込めて。

f:id:neo3016:20211226095058j:plain
マイコンは、ATtiny13を使用する。 
小さいし、安いし、3Vぐらいで動作するから。
f:id:neo3016:20211226095210p:plain
とりま、ピンアサイン。

書き込み編
f:id:neo3016:20211226095321j:plain
ArduinoUNOとATTiny ISPシールドきっとを用意。
www.aitendo.com
シールドキットが無くても書き込めはする。

ArduinoUNOには、ArduinoISPを書き込んでおく。
f:id:neo3016:20211226095804p:plain

ATtiny13をボードマネージャーに追加する。
f:id:neo3016:20211226095844p:plain
ボードマネージャーに”ATtiny13”と入力すると出てくるので、インストールしておく。
f:id:neo3016:20211226095859p:plain
ボード:ATtiny13が出ればおk
github.com



ArduinoUNO(ArduinoISP)でシールドキットを使用して、ボード:ATtiny13 で書き込めばおk
ブートローダの書き込みは必要なし。


公衆電話
公衆電話のガチャガチャを改造してみた。
受話器を上げると光って音が出る仕様。
f:id:neo3016:20211226100246p:plain
とりま、回路図
f:id:neo3016:20211226100440j:plain
実装したボード
起動している動画
youtu.be

プログラム

    int led = 0;    
    int cds ;
    int FLG_ON = 0;
    int FLG_ON_a = 0; //以前のフラグ
    int FLG_ON_e = 0; //終了のフラグ
    int i = 0;
    #define BUZZER  3
    
    void setup() {                
      pinMode(led, OUTPUT);
      pinMode(1, INPUT);
      pinMode(BUZZER,OUTPUT);
    }
      void loop() {
        cds = digitalRead(1);

        if (cds == LOW && FLG_ON_e == 0){
          FLG_ON = 1;
          digitalWrite(led, HIGH);
          beep(400);
        }
        if (cds == HIGH && FLG_ON_e == 0){
          digitalWrite(led, LOW);
          if (FLG_ON == 1){
            FLG_ON_a = 1;
            FLG_ON = 0;
          }else{
            FLG_ON = 0;
          }
        }

        if(FLG_ON_a == 1 && FLG_ON_e == 0){
          digitalWrite(led, HIGH);
          while(i<3){
            beep(200);
            delay(100);
            beep(200);
            delay(100);
                     
            i = i +1 ;
          }
          i = 0;
          digitalWrite(led, LOW);
          FLG_ON_a = 0;
        } 

        if (cds == HIGH && FLG_ON_e == 1){
          FLG_ON_e = 0;
          FLG_ON_a = 0;
        }

    }
    void beep(int wait) {
     for ( int i = 0; i < 100; i++ ) {
       digitalWrite(BUZZER, HIGH);
       delayMicroseconds(wait);
       digitalWrite(BUZZER, LOW);
       delayMicroseconds(wait);
    }
    }

Tradis
ターディスは、ドラマのドクター・フーに登場するタイムマシン
ターディスのフィギュアを買ったのでいい感じに点灯するように改造してみた。
f:id:neo3016:20211226100338p:plain
とりま、回路図。
f:id:neo3016:20211226101024j:plain
プログラム

void setup() { 
pinMode( 1,OUTPUT );
TCCR0A = 0x23;// 0011 0011 高速PWMモード (cpmB=OC0B)
TCCR0B = 0x0A;// 0000 1010 1/8 ,Top=OC0A
TCNT0 = 0;//タイマ0の初期値
OCR0A = 122;//周期
OCR0B = 96;//duty
}

void loop() {
  int i;
  i = 150;
  while (i >= 1){
    OCR0B = i;//duty
    delay(10);
    i = i - 1;
  }
  while (i <= 150){
    OCR0B = i;//duty
    delay(10);
    i = i + 1;
  }
}

ドラマのTardisは、頭上のランプふわっと点灯して別の時空に飛び立つ。 ふわっと点灯するのは、PWM(Pulse Width Modulation)で表現してみた。
youtu.be

PWM動作確認時のオシロスコープ
youtu.be


おまけ
ATtiny13用のCPUボードも作ってみた。
LED,マイクロスイッチ、外部電源から使用するための3端子レギュレーター搭載。
f:id:neo3016:20211226101727j:plain
f:id:neo3016:20211226101809j:plain
裏側は、スパゲッティー