フォト
2018年9月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

« 2017年12月 | トップページ | 2018年2月 »

2018年1月の10件の記事

2018年1月27日 (土)

豊四季Tiny BASIC for micro:bit をV0.06に更新しました

豊四季Tiny BASIC for micro:bit をV0.06に更新しました。

公開サイト
    https://github.com/Tamakichi/ttbasic_microbit

PLAYコマンドによる音楽演奏をサポートしました。

プログラムソース

10 'ネコフンジャッタ
20 'リュウヨウモト http://astr.me.land.to/tool/mabi/mml/nekof.htm
30 SETFONT 0,$50,$A8,$88,$88,$70
40 MSG TOP,0,CHR$(0)
50 TEMPO 140
60 PLAY "L16D+C+R8F+RF+RD+C+R8F+RF+RD+C+L8RF+RF+RL16FRFRD+C+R8FRFRD+C+R8FRFRD+C+"
70 PLAY "L8RFRFRL16F+RF+RD+C+R8F+RF+RD+C+R8F+RF+RD+C+L8RF+RF+RL16FRFRD+C+R8FRFRD+C+R8FR"
80 PLAY "L16FRD+C+L8RFRFRL16F+RF+RD+C+L8RF+RF+RF+RF+RF+RF+RL16FRFRD+C+L8RFRFRFRFRFRFR"
90 PLAY "L16F+RF+RD+C+R8F+RF+RD+C+R8F+RF+RD+C+L8RF+RF+RL16FRFRD+C+R8FRFRD+C+R8FRFRD+C+"
100 PLAY "L8RFRFRL16F+RF+R8.F+RC+C+D8C+8.FRF+"

演奏データは、下記のサイトに公開されているのもを流用させて頂きました。

・主体性の無いページ http://astr.me.land.to
   ねこふんじゃった! http://astr.me.land.to/tool/mabi/mml/nekof.htm

その他の変更点

  ・サウンド機能対応
    TONE、NOTONE、SETTONE、PLAY、TEMPOコマンドの追加

  ・LEDマトリックスのグラフィック描画の不具合対応
    色コードに2を指定して反転表示出来ない不具合の対応

  ・I2Cのサポート

  ・SHIFTIN、SHIFTOUTコマンドのサポート

  ・WIDTHコマンドの不具合対応

  ・リファレンス・マニュアルの追加
   01

音の再生には先日実装したPPIによる方式を組み込みました。
バックグランドでもならせるよう、検討中です。
 

2018年1月25日 (木)

micro:bitをArduino環境で使う (6) PPIを使った単音出力

PPI(Programmable Peripheral Interconnect)を使って圧電スピーカーにて
単音出力を実装しました。

01

スケッチ

//
// micro:bit PPIを使ったTone by たま吉さん
//

#include "nrf.h"
#define TIMERFREQ 1000000L    // タイマー基本周期
#define TONE_TIMER NRF_TIMER0 // 利用タイマー資源

//
// 音の停止
// 引数
//
void dev_notone() {
    TONE_TIMER->TASKS_STOP = 1;  // タイマストップ
}

//
// 音出し
// 引数
//  pin     : PWM出力ピン 
//  freq    : 出力周波数 (Hz) 15~ 50000
//  duration: 出力時間(msec)
//
void dev_tone(uint8_t pin, uint16_t freq, uint16_t duration) {
  uint32_t ulPin;
  uint32_t f =TIMERFREQ/freq;
  
  // GPIOTEの設定:LEDピン・トグルタスクを定義する
  ulPin = g_ADigitalPinMap[pin];   // TonePinの実ピン番号の取得 
  NRF_GPIOTE->CONFIG[0] =          // チャネル0に機能設定
    (GPIOTE_CONFIG_MODE_Task << GPIOTE_CONFIG_MODE_Pos) |            // タスクモード
    (ulPin << GPIOTE_CONFIG_PSEL_Pos) |                              // ピン番号設定
    (GPIOTE_CONFIG_POLARITY_Toggle << GPIOTE_CONFIG_POLARITY_Pos) |  // 動作指定:トグル
    (GPIOTE_CONFIG_OUTINIT_Low << GPIOTE_CONFIG_OUTINIT_Pos);        // ピン出力初期値
  NRF_GPIOTE->POWER = 1;                                             // GPIOTE有効
    
  //タイマ設定
  TONE_TIMER->TASKS_STOP = 1;                          // タイマストップ
  TONE_TIMER->TASKS_CLEAR = 1;                         // カウンタクリア
  TONE_TIMER->MODE = TIMER_MODE_MODE_Timer;            // モード設定:タイマモード
  TONE_TIMER->PRESCALER   = 4;                         // プリスケーラ設定:16分周(1MHz)
  TONE_TIMER->BITMODE = TIMER_BITMODE_BITMODE_16Bit;   // カウンタ長設定:16ビット長指定
  TONE_TIMER->CC[0] = f/2;                             // コンパレータ0の設定(出力周波数設定)

  TONE_TIMER->SHORTS =                                 // ショートカット設定:クリアタスク指定
      (TIMER_SHORTS_COMPARE0_CLEAR_Enabled << TIMER_SHORTS_COMPARE0_CLEAR_Pos);

  // PPIの設定(チャネル0を利用)
  //   TIMER0 コンパレータ0一致イベント と GPIOTE(ch0)LEDピン・トグルタスク を結び付ける
  NRF_PPI->CH[0].TEP  = (uint32_t)&NRF_GPIOTE->TASKS_OUT[0];       // PPI.ch0 にLEDピン・トグルタスク設定
  NRF_PPI->CH[0].EEP  = (uint32_t)&TONE_TIMER->EVENTS_COMPARE[0];  // PPI ch0 にコンパレータ0一致イベント設定  
  NRF_PPI->CHENSET   |= PPI_CHENSET_CH0_Enabled;                   // PPI ch0 有効

  TONE_TIMER->TASKS_START = 1;   // タイマスタート

  if (duration) {
    delay(duration);
    TONE_TIMER->TASKS_STOP = 1;  // タイマストップ
  }
}

void setup() {
  uint32_t ulPin;
  uint16_t freq = 440;  // 出力周波数 (Hz)

  uint32_t f =TIMERFREQ/freq;
  Serial.begin(115200); 
  Serial.println("microbit is ready!");

  dev_tone(12,523,1000); // ド
  dev_tone(12,587,1000); // レ
  dev_tone(12,659,1000); // ミ
  dev_tone(12,698,1000); // ファ   
  dev_tone(12,784,1000); // ソ  
  dev_tone(12,880,1000); // ラ  
  dev_tone(12,988,1000); // シ  
  dev_tone(12,1047,1000);// ド   
}

void loop(){
    __SEV();
    __WFE();
    __WFE();
}

dev_tone()関数にて単音出力が出来ます。
CPUを使わずにタイマー、GPIOE、PPIだけで音を出しています。

音階に対応する周波数は下記の通りです。

02

これも豊四季Tiny BASIC for micro:bitに組み込む予定です。

2018年1月21日 (日)

アナログ入力を使った16ボタン入力

以前自作したアナログ入力を使ったボタン入力と同様のキーパッドが
Aliexpressで安価に販売されているので入手しました。
GND、VCC、アナログ入力の3ピンで簡単に16ボタン入力が実装出来ます。

Button Keypad module 4x4. One analog out. Simple connection to Compatible for Arduino, Raspberry, STM. Keypad

ついでに3x4タイプも入手

Button Keypad 3x4 module. One analog out. Compatible for Arduino, Raspberry, STM. Keypad

到着した製品

意外としっかりとした製品です。
透明キャップを外してボタンにラベルを付けることが出来ます。

04_2

マニュアルは無いのですが、裏に10ビット解像度時のアナログ入力値が記載されています。

05

この情報を元に、豊四季タイニーBASIC for micro:bitにて動作確認してみました。

動作確認プログラム

10 'Keypad 4x4
20 @(10)=1013,920,840,780,670,630,590,560,502,477,455,435,400,320,267,228
30 G0=G
40 G=GRADE(ANA(1),10,16)
50 IF G>=0 ?"KEY=[";G+1;"]":MSG TOP,0,CHR$(65+G)
60 GOTO 30

ボタンの判定は誤差と揺らぎを考慮し、裏面の値の10を引いた値で判定しています。

GRADE() 関数は配列に格納された値を閾値として等級判定する関数です。
第1引数には、判定する値、第2引数には配列先頭番号、第3引数にはデータ数を指定します。
アナログ入力ANA(1)の値が1013以上の場合は0、920以上の場合は1..と判定します。
範囲外の場合は-1を返します。
比例関係に無い値を等級判定する場合に利用するとプログラムを短く出来ます。

押した番号をコンソールに表示し、ボタン1~16をA~PとしてLEDマトリックスに表示させます。

06

とりあえず、動作しました。

ただし、瞬間的に誤判定し、正常判定の状態になる場合があります。
ログを見ると、ボタン[1]を押したのに、一瞬ボタン[6]と判定されています。

02

この原因は、ボタンを押したときのチャタリングと思うのですが、念のため波形を見てみました。

01

波形はボタンを離した時のものですが、やはりチャタリングが発生しています。
このチャタリングに対する誤動作防止にはいくつか方法があります。

今回は、
  ChaNさんの 「テクニカル ノート チャタリング対策のしかた
が大変参考になりました。

ChaNさんの対策案でプログラムで対応できる「ディレイ方式」が一番簡単そうです。
さっそく試してもました。

対策

まず、測定波形を見ると1回あたりのチャタリングの幅は0.4msec(マス1msec幅)程度です。

そこで、アナログ値の測定のよるボタン判定において、
  「前回の値と今回の値が異なる場合、今回の値を捨て1msec後にもう一度測定する、
   同じなら値として採用する」


という対策を施したところ、誤判定を無くすことが出来ました。
う~ん、なかなかいい感じで利用できるようになりました。

修正対応したプログラム
10 'Keypad 4x4
20 G0=-1
30 @(10)=1013,920,840,780,670,630,590,560,502,477,455,435,400,320,267,228
40 G0=G
50 G=GRADE(ANA(1),10,16)
60 IF G<>G0 WAIT 1 GOTO 40
70 IF G>=0 ?"KEY=[";G+1;"]":MSG TOP,0,CHR$(65+G)
80 GOTO 40

さて、以前自作したキーパッドをIchigoJamで利用した時には、チャタリングによる
誤判定は気になりませんでした。なぜでしょう?

この理由としては、IchigoJamの処理速度が遅いため、チャタリングによる変化を
検知出来なかったのだと思われます。

今回試したmicro:bitの豊四季Tiny BASICは、ARM的にはIchigoJamと同スペックですが、
実装上の工夫により、IchigoJamより余裕で15~30倍の処理能力があります。

Arduino UNOでこのボードの利用する場合も、何らかのチャタリング対策は必要と思います。

2018年1月16日 (火)

豊四季Tiny BASIC for micro:bit をV0.05に更新しました

豊四季Tiny BASIC for micro:bit をV0.05に更新しました。

変更点
 ・Neopixel対応
 ・PCG(LEDマトリックス用フォント書き換え)対応
 ・RTC(時刻管理)対応(誤差は数分/日)
 ・2進数定数対応
 ・PWM暫定対応(Arduinoの制約により同時3チャンネル迄)
 ・CHR$()の複数キャラ指定対応(?CHR$(65,66,67) => "ABC")
 ・GRADE(値, 配列No,個数)関数の追加:等級判定関数

ダウンロード直リンク
https://github.com/Tamakichi/ttbasic_microbit/archive/master.zip

micro:bitで豊四季Tiny BASIC - 現在時刻の表示


プログラムソース

1 'トケイ
10 MATRIX ON
20 SETDATE 2018,1,16,12,0,0
30 IF !IN(BTNA) GOSUB "@ShowTime"
40 WAIT 200
50 GOTO 30
60 "@ShowTime"
70 GETTIME T1,T2,T3
80 MSG LEFT,80,#-2,T1;":";T2;":";T3;" "
90 RETURN

micro:bitで豊四季Tiny BASIC - Neopixelの制御



プログラムソース

10 'Neopixel(1)
20 NPBEGIN 0,16
30 NPCLS
40 FOR I=0 TO 7
50 NPRGB I,0,0,(2<<I)-1
60 NEXT I
70 NPSHIFT 1
80 WAIT 50
90 GOTO 70

2018年1月12日 (金)

micro:bitをArduino環境で使う (5) PPIを使ったLチカ

今回はPPI(Programmable Peripheral Interconnect)を使ったLチカを実装してみました。

micro:bitをArduino環境で使う (2)GPIOTEを使ったLチカ」では、
タイマー割り込みを使って、タスク(GPIOEを使って定義したLEDをトグルでON・OFF)を
実行していました。

今回はPPIを使って、イベント(カウンター値がコンパレーターと一致)発生時に
タスク(GPIOEを使って定義したLEDをトグルでON・OFF)を自動で実行させます。

この方法により、CPUが介在することなく、LEDを点滅させることが出来ます。

micro:bitをArduino環境で使う (2)GPIOTEを使ったLチカ」のスケッチの
割り込み処理部分をPPIに置き換えたスケッチを下記に示します。

スケッチ

//
// micro:bit PPIを使ったLチカ by たま吉さん
//

#include "nrf.h"

const int COL1 = 3;         // Column #1 control
const int LED = 26;         // 'row 1' led
uint8_t sw =0;

/*
extern "C" void TIMER2_IRQHandler(void) {
    NRF_TIMER2->EVENTS_COMPARE[0] = 0;  // 割り込みイベントクリア
    NRF_GPIOTE->TASKS_OUT[0] = 1;       // タスク実行
    //sw =!sw;
    //digitalWrite(LED, sw);
}
*/

void setup() {
  uint32_t ulPin;
  Serial.begin(115200); 
  Serial.println("microbit is ready!");
  
  // GPIOピンの設定
  pinMode(COL1, OUTPUT);  digitalWrite(COL1, LOW);   // COL1ピンの設定
  //pinMode(LED, OUTPUT);                            // LEDピンの設定

  // GPIOTEの設定:LEDピン・トグルタスクを定義する
  ulPin = g_ADigitalPinMap[LED];  // LEDの実ピン番号の取得 
  NRF_GPIOTE->CONFIG[0] =         // チャネル0に機能設定
    (GPIOTE_CONFIG_MODE_Task << GPIOTE_CONFIG_MODE_Pos) |            // タスクモード
    (ulPin << GPIOTE_CONFIG_PSEL_Pos) |                              // ピン番号設定
    (GPIOTE_CONFIG_POLARITY_Toggle << GPIOTE_CONFIG_POLARITY_Pos) |  // 動作指定:トグル
    (GPIOTE_CONFIG_OUTINIT_Low << GPIOTE_CONFIG_OUTINIT_Pos);        // ピン出力初期値
  NRF_GPIOTE->POWER = 1;                                             // GPIOTE有効
    
  //タイマ設定
  NRF_TIMER2->TASKS_STOP = 1;                          // タイマストップ
  NRF_TIMER2->TASKS_CLEAR = 1;                         // カウンタクリア
  NRF_TIMER2->MODE = TIMER_MODE_MODE_Timer;            // モード設定:タイマモード
  NRF_TIMER2->PRESCALER   = 8;                         // プリスケーラ設定:128分周(125KHz)
  NRF_TIMER2->BITMODE = TIMER_BITMODE_BITMODE_16Bit;   // カウンタ長設定:16ビット長指定
  NRF_TIMER2->CC[0] = 62500/2;                         // コンパレータ0の設定:0.5秒周期

/*
  NRF_TIMER2->INTENSET =                               // 割り込み設定:コンパレータ0と比較
      (TIMER_INTENSET_COMPARE0_Enabled << TIMER_INTENSET_COMPARE0_Pos);
*/

  NRF_TIMER2->SHORTS =                                 // ショートカット設定:クリアタスク指定
      (TIMER_SHORTS_COMPARE0_CLEAR_Enabled << TIMER_SHORTS_COMPARE0_CLEAR_Pos);

/*
  // タイマ割り込み設定
  NVIC_SetPriority(TIMER2_IRQn, 3);   // 割り込み優先度設定
  NVIC_ClearPendingIRQ(TIMER2_IRQn);  // 保留割り込みクリア
  NVIC_EnableIRQ(TIMER2_IRQn);        // 割り込み許可
*/  

  // PPIの設定(チャネル0を利用)
  //   TIMER2 コンパレータ0一致イベント と GPIOTE(ch0)LEDピン・トグルタスク を結び付ける
  NRF_PPI->CH[0].TEP  = (uint32_t)&NRF_GPIOTE->TASKS_OUT[0];       // PPI.ch0 にLEDピン・トグルタスク設定
  NRF_PPI->CH[0].EEP  = (uint32_t)&NRF_TIMER2->EVENTS_COMPARE[0];  // PPI ch0 にコンパレータ0一致イベント設定  
  NRF_PPI->CHENSET   |= PPI_CHENSET_CH0_Enabled;                   // PPI ch0 有効

  NRF_TIMER2->TASKS_START = 1;   // タイマスタート
  
}

void loop(){
    __SEV();
    __WFE();
    __WFE();
}


前回からの修正は、
・ 割り込み関数 TIMER2_IRQHandler(void) のコメントアウト
・ タイマー割り込み設定、割り込み関数登録のコメントアウト
・ PPI設定の追加
を行っています。

PPIの設定は簡単です(下記3行で設定)。
  // PPIの設定(チャネル0を利用)
  //   TIMER2 コンパレータ0一致イベント と GPIOTE(ch0)LEDピン・トグルタスク を結び付ける
  NRF_PPI->CH[0].TEP  = (uint32_t)&NRF_GPIOTE->TASKS_OUT[0];       // PPI.ch0 にLEDピン・トグルタスク設定
  NRF_PPI->CH[0].EEP  = (uint32_t)&NRF_TIMER2->EVENTS_COMPARE[0];  // PPI ch0 にコンパレータ0一致イベント設定  
  NRF_PPI->CHENSET   |= PPI_CHENSET_CH0_Enabled;                   // PPI ch0 有効

PPIのチャネル0~15のうち、今回はチャネル0を利用しています。
CH[0].TEPにタスク、CH[0].EEPにイベントのレジスタのアドレスを登録しています。
これにより、タスクとイベントを結び付けることが出来ます。

タイマーのカウンターが指定した値になったら、指定したタスクを実行します。

PPIは、周辺機器の様々なイベント(状態変化)発生のタイミングで、指定したタスクを
実行することが出来る機構です。

micro:bitに採用されているMCU: Nordic nRF51822 ARM Cortex-M0 は、
ハードウェアによる直接PWMを生成する機能は無いのですが
PPIを使うことで、同様のことを行うことが出来ます(たぶん)。
(PWMのHIGH期間、LOW期間の調整はコンパレータを2つ用いて出来ると思います)

2018年1月11日 (木)

ルミちゃんの毛づくろい

最近、=^_^= 成分が少ないというご指摘が各方面からある今日このごろ...

ということで、我が家の愛猫 ルミちゃん(♀)の毛づくろいの様子をご堪能下さい。



ちょっとセクシーかも...

2018年1月10日 (水)

micro:bit用Arduino環境にてrtcの精度が悪い - その対策

micro:bit をArduino環境で利用しています。
時計を実装したいと思い、mbed用の下記のライブラリを参考にしてやってみました。

参考にしたサイト
・Francis Schumacher /  nrf51_rtc
https://os.mbed.com/users/fxschumacher/code/nrf51_rtc/
・Francis Schumacher /  nRF51_rtc_example
https://os.mbed.com/users/fxschumacher/code/nRF51_rtc_example/file/c1f06d0a5e11/main.cpp/

一見、ちゃんと動作していると思いつつ、放置すると徐々に時間が進んでしまいます。
誤差を測定すると私のmicro:bitでは5%も速く時間を刻みます。
(誤差はmicro:bitの個体ごとに異なると思います)

Photo

原因を調べるとArduinoのrtc(リアルタイムクロック)に供給されているクロックソース
LFCLKSRC32.768 kHz RC oscillatorに設定されていました。

micros()、millis()、delay()ではrtc1が利用されており、これらも5%進んでしまいます。
このズレは、micros()、millis()、delay()でパルス幅の生成や測定を行っている場合には
影響を受けるかもしれません。

改善方法として、LFCLKSRCに指定するクロックソースを
16MHz crystal oscillatorをベースにしている LFCLK synthesizerに設定します。
RCオシレータよりクリスタル・オシレータの方が当然精度が良いですね。

具体的には、setup()の頭でLFCLKSRCのクロックソースを次のように設定します。

void setup() {
  NRF_CLOCK->TASKS_LFCLKSTOP = 1;
  NRF_CLOCK->LFCLKSRC = 
    (uint32_t)((CLOCK_LFCLKSRC_SRC_Synth << CLOCK_LFCLKSRC_SRC_Pos) &
    CLOCK_LFCLKSRC_SRC_Msk);
  NRF_CLOCK->TASKS_LFCLKSTART = 1;
   ・・・・

実際に試したところ、当初の5%よりもかなり改善されました。
一晩放置して誤差を調べてみます。

別の方法として、コンパイルオプション -DUSE_LFSYNTを付けることでも対応出来ます。
Arduinoのローカル設定ファイル platform.local.txtを
AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.4.0\に作成して
  compiler.c.extra_flags=-DUSE_LFSYNT
  compiler.cpp.extra_flags=-DUSE_LFSYNT

を定義で対応でいけると思います。

2018/01/11 追記


改善を施した場合の誤差は0.6%でした。
24時間で8分ずれます。思ったほど精度が改善できませんでしたが、
まあ、効果はあるのでこれで良しとします。

2018年1月 9日 (火)

豊四季Tiny BASIC for micro:bit をV0.04に更新しました

豊四季Tiny BASIC for micro:bit をV0.04に更新しました。
MSGコマンドでテキストメッセージ表示、加速度センサーの値取得等に対応しました。

豊四季Tiny Basic for micro:bit V0.04
https://github.com/Tamakichi/ttbasic_microbit




動画は下記のプログラムを動かしている様子です。

10 CLS 1
20 MSG LEFT,200,"コンニチハ"
30 FOR I=O TO 30
40 MSG DOWN,50,I/10
50 WAIT 50
60 MSG LEFT,100,I%10
70 NEXT I
80 WAIT 500
90 GOTO 20

プログラムはシリアルコンソール上にて作成し、即実行することが出来ます。

01


2018年1月 2日 (火)

Aliexpressで見つけたSTM32F407VGT6ボードを購入

こりもせず、Aliexpressで見つけた良さそうなマイコンボードを購入しました。

STM32F4discovery STM32F407VGT6 ARM Cortex-M4 32bit MCU Core Development Board 02

到着したマイコンボード

BluePillボードの2倍くらいの大きさです。STM32F4が乗っている割には非常にシンプルなボードです。

Dscn7437

使い勝手は良さそうなのですが、資料なし。
色々探してみると、このボードを評価しているサイトがありました(感謝!)。

Visuariddim - DIY More STM32F407VGT6 ボード
http://dubstylee.net/v/diy-more-stm32f407vgt6/

上記サイトの情報により、ユーザー利用可能LED、ボタン利用のポート番号や、
USBの問題点を知ることが出来ました。

とりあえず、Arduino STM32環境にてLチカを行うことが出来ました。
書込みはST-Linkを利用しました。

Dscn7442

USBシリアルの利用は上記サイトで指摘のある通り、問題ありです。
D+、D-がプルアップ抵抗、ダンピング抵抗がなくポートに直結の状態。
とりあず1.5kΩの抵抗でプルアップすることで、USBシリアルを使った通信を行うことが出来ましたが、
USBを認識したり、しなかったりと不安定です。

USB経由でDFUを使った書き込みは、DfuSeDemoでは出来ましたが、Arduino IDEからは
出来ませんでした。

(2018/01/05 補足 Arduino IDE for STM32にてF4ボードでUSB経由(.dfu形式イメージ対応)で
  書き込みを行うには、下記のリンク先のカスタマイズ設定が必要です。
  alternative way to use STM DFU in Arduino 1.8.3 on Black F407VET6
  ただし、このボードでは書き込みは出来ても、動作しませんでした。
)

Dscn7443

ボードとしては、シンプルで好きなタイプなのですが...
とりあえず、実験用に使ていこうとは思います。

2018/01/03 追記

端子名が分かるよう、ラベルを貼り付けました。
これでちょっと使いやすくなりました。

Dscn7455

2018/01/10 追記
Arduino for STM32のフォーラムにこのボードに関する投稿記事を見つけました。
[Solved] Anybody using this F4 board and got the USB working?

結論としては、「外部プルアップ抵抗付けなくてもUSB CDCは利用できる~よん」
とのことです。内部でプルアップ処理を施す対応のようです。

2018年1月 1日 (月)

新年あけまして、おめでこうございます!

明けましておめでとうございます。
今年もマイペースでブログやっていきます。

「正月的な何か」をと思い、そのへんに飾ってあった餅を無理やり猫にあてがいました。
(以前もこんなのやった気が ...)

ルミちゃん、ますます太った感じです。

Dscn7429

たまちゃん(たま吉さん)は、一見スリムなのですが、お腹がすごいことになっています。

Dscn7435

今年も例年通り、家族で墓参りに行ってきました。天気も良く一年の始めに日としては申し分のない1日でした。

« 2017年12月 | トップページ | 2018年2月 »