Tamesuke-Goto Maker的Blog

Tamesuke-Goto Maker的Blog

地域ISP管理者だけれど、ここ3年ほどMakerなJobが増えたのでまとめてみたいと思います 旧ハンドル Ringoro


テーマ:

昨年作った ハロウィン用LEDチカを今年も作ってみました

 

 

 

今回は秋月のLEDストリングを使ってやってみます。

LEDストリングは4-5個づつ切り取って、抵抗値は 220Ωでやってみます。

 

LEDストリング

 

今回はATTiny13Aのウォッチドッグタイマーを使ってDeppSleepをさせながら動かしてみました。

512msecのWDタイマーで0.5sec点灯 1sec消灯にしてみます。

 

ウォッチドッグの省電力化はなかなかです。CR2032一個で2週間くらい点灯しっぱなしですが、まだ光っています。

 

消費電力を計算してみます  LEDの電圧降下2.8V として

 

(3-2.8)/220 * 2 = 0.9 mA

 

これが連続ではなく1.5sec間に0.5sec なので消費電力約1/3。 CR2032ボタン電池の容量が 220mAHなので、、、ATTinyの待機電流は10μAとかなのでとりあえず無視。

 

220/(0.9/3) = 733h   ... 30日


大分長持ちする計算です。少なくとも20日くらいは持つと考えて良いでしょう。

 

 

 

スケッチはこんな感じ

 
/*
     Blink 2 LEDs
     for  ATTiny13 LED Board

     2018/10/17
 
   PCINT5/A0/D5/RST |1---O---8| VCC
      *PCINT3/A3/D3 |2       7| D2/A1/INT0/PCINT2*
       PCINT4/A2/D4 |3       6| D1/PWM/PCINT1
                GND |4-------5| D0/PWM/A0/PCINT0*

  *Use PIN
  PIN5 (D0) ... PCINT SW ON/OFF connect to GND
 
 */
 
//#include <avr/pgmspace.h>

#include <avr/interrupt.h>
#include <avr/sleep.h>

#define LED1 3
#define LED2 4
#define LED3 0
#define LED4 1
#define LED5 2

volatile int pcint;
volatile bool wait;

/*
 *    Random
 */

unsigned int randshort(unsigned int init)
{
  static unsigned int seed;
  if(init!=0){
  seed ^= init;
  }
  seed *= 52341;
  seed += 37;
  return(seed ^ 0x1234);
}


ISR(PCINT0_vect) {
  if(digitalRead(0)==0){
    pcint=pcint ^ 1;
  }
}  


void setup() {
  randshort(analogRead(0));
  pinMode(LED1, OUTPUT);
//  pinMode(LED2, OUTPUT);
//  pinMode(LED3, OUTPUT);
//  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);

  pinMode(0, INPUT_PULLUP);
  GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
  PCMSK |= _BV(PCINT0);                   // Use PB1 as interrupt pin for My Board

  // set timer to 0.5s
  WDTCR |= (1<<WDP2) | (1<<WDP0);

// set timer to 4 sec
//  WDTCR |= (1<<WDP3);

// Set watchdog timer in interrupt mode
  WDTCR |= (1<<WDTIE);
  WDTCR |= (0<<WDE);
  sei(); // Enable global interrupts
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
}


ISR(WDT_vect) {

}

void loop() {
  static unsigned char d;
  static unsigned char t;

  if(pcint){
    sleep_mode();
    return;
  }


//  d = randshort(0) & 0x60;

//  digitalWrite(LED1,(d & 0x11));
//  digitalWrite(LED2,(d & 0x22));
//  digitalWrite(LED4,(d & 0x44));
//  digitalWrite(LED5,(d & 0x88));
//  digitalWrite(LED3,(d & 0x41));

  d = randshort(0) & 0x05;
//  d++;
  digitalWrite(LED1,(d));
  digitalWrite(LED5,(d^0x01));
//  digitalWrite(LED2,(d^0x01));

  sleep_mode();
  digitalWrite(LED1,0);
  digitalWrite(LED5,0);
//  digitalWrite(LED2,0);
  sleep_mode();
  sleep_mode();

}
 
----------------------
 

テーマ:

 ATTiny13/85 を書き込みするのに ArduinoUnoではちょとかさばるので、Arduono Nanoを使ってライタを作ってみました

 

 今回この辺の記事を参考にしていますが、Arduino nano 互換機を使って作ったのですが、、

 

https://arduinodiy.wordpress.com/2012/02/28/program-an-attiny-with-an-arduino-nano/

 

なんと書き込めない、、、 直接nanoのLEDブリンクをやろうにもそれも書き込めない。。

 

どうも変。一番あやしいのは RTS端子の10uFの電解です。おかしいなと思いつつ配線を切って外してみたら、、、OKでした。

 

互換機なのでシリアルUSBはCH340仕様だし、RTS周りの回路は異なっていると考えます。とりあえずATTiny13Aには書込みできるのでよしとします。

 

 

 

 

 

 

 


テーマ:
imageimage
LEDチカ基板ではATTiny DIPとSOPの両方が使える様にアートワークを作りました。
SOPのATTinyが国内では中々手に入らないのですが、AliExpressでオーダできたのでようやく試してみることにします。
 
この様な位置に半田付けして、 DIP8のホールの 1,4,5,6,7,8ピン の6つが書き込み用ピンとして使うことができます。
 
 
スルーホールへ接続するために秋月電子のスルホール用テストワイヤーを使います。
 
ストレートピンの方を8pinDIPソケットへ半田付けしてATTinyライターへ取り付け
 
image
image
 
 
 
スルホールテストピン側を基板のDIPホールへ差込、あとはいつもの通り arduinoをISPとして書き込みを行います。
ケーブルがブラブラして格好悪いですが正常に書込みできます。
スルホールテストピンだけを入手して専用のライターシールドを作った方が良いでしょう。
 

 

Ameba人気のブログ

Amebaトピックス