時計製作(フィラメント管) その4

設置場所:
・パソコンの横に置く予定


仕様:
・5V配給
・給電はACアダプタ
・電池、バッテリーなし
・タイマーブザーなし
・4桁表示
・ボタンは4つ
  表示「点灯、点滅」
  表示「時、分と分、秒」
  調整「1分進む」
  調整「1分戻る」


主な部品:
IV-9       x 4
TPIC6B595  x 4
ATMEGA328P x 1
RTC-8564NB x 1 (秋月さんのDIP済みのもの)

時計製作(フィラメント管) その3

今日の進捗はRTCのテストです。
秋月さんで売られているRTC-8564NBを使用しました。


ライブラリについては「Arduinoで遊ぶページ」さんものを参考にしています。
蛇足ですけど、この方のホームページは隅から隅まで読む価値があるので
Arduinoに興味ある方にお勧めです。特にトラブルもなく、無事動きました。

日差:0.46秒
月差:13.8秒(30日)
#include <Wire.h>
#include "RTC8564.h"
 
int latchPin = 8;
int dataPin  = 9;
int clockPin = 10;
int interruptPin = 12;

const byte num[10] = {
  0b11011110,   // 0
  0b00000110,
  0b11101010,
  0b01101110,
  0b00110110,
  0b01111100,
  0b11111100,
  0b00001110,
  0b11111110,
  0b01111110,     // 9
};

void setup()
{
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin,  OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);

  struct dateTime dt = {50, 0, 0, 1, 1, 13, 2};  // 2013 January 1st, Tue 00:00:50
  RTC8564.begin(&dt);
}

void loop()
{
  struct dateTime dt;
  memset(&dt, 0x00, sizeof(dt));

  RTC8564.getDateTime(&dt);
 
  for(int i=0; i<10; i++)
  {
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, num[dt.second / 10]);
    shiftOut(dataPin, clockPin, MSBFIRST, num[dt.second % 10]);
    digitalWrite(latchPin, HIGH);
  }

  delay(1000);
}

取得した時間はCRCチェックなどしていないのでヘタすると
妙な数字が入ることもあるかも。本番ではifチェックを入れる予定です。

pokitto 注文done

Pokitto - easy-to-learn and program Gaming Gadget! by Daniel deBeer — Kickstarter

Pokitto Gaming Gadget - EARLYBIRD kit! ($39) 
Shipping to Japan ($7)

Estimated delivery Jul 2017

pokitto

最近、nintendo switch ゼルダの伝説にハマってます。
マップを埋めるのが面白すぎて電子工作どころではありません。
来月まで休業中です。


ところでpokittoキックスターターがもうすぐ始まるそうです。
アーリーバードは39ドル。スペックは見ていただくとして、開発環境はmbed。
そしてgamebuinoとarduboyのゲームも動くという現状です。


初めて見た時はpocket chipのgpio、ゲームボーイを意識したボタン配置、
イメージキャラクターはどーも君でした(汗。


ディスプレイは220×176でしかもカラー。これは魅力的です。
さらにMicro SD付きとなると開発に制約があまり無くなり、
富豪プログラミングできてしまいます。


ウルフェンシュタイン3Dが動くってことはエミュ的なことも
いけるのかもしれないです。


んー、ただあんまり自由だと開発する側に負担がかかりますし、
あまりにリソース過多だとwindowsでいいのではないか
というジレンマも発生しそうです。
面白そうなのでしばらく追っかけしようと思います。


最後に1つ。
なぜ筐体の後ろに日本語使ってるのですか、って
ツッコミ入れさせていただきます。 :)

時計製作(フィラメント管) その2

今日の進捗。ATMEGA328Pの3.3v化(外部水晶なし)をしました。
1chipでも動作済みです。


最初「Arduino Pro or Pro mini」の「3.3v 8MHz」を
選択したのですけど、ダメでした。やはり説明書通り
「ATmega328 on a breadboard (8 MHz internal clock)」を
選ばないといけないようです。


参考URL:
ATMEGA328をArduino化(内蔵クロック) | 半田付け日記
Atmega328にArduinoのブートローダを書き込む(8MHz 16MHz) - ddpp's blog

RustとGBA その2

電子書籍版が始まりました。勝手に宣伝です。
RustでGBAのプログラムを作ろう! - ひみつラボ - BOOTH


なんというか、2017年になって本でGBAとか、ブートケーブル、
モード3などの単語を見れるとは思いませんでした。
感涙ものです。


内容は「BareMetalで遊ぶ Raspberry Pi」と同じように、
ひたすらツールやアーキーテクチャの説明。
コマンドラインは挿絵!と言わんばかりのストイックさがあります。
(後半、線や四角形の描画スクリーンキャプチャがありますけど)



OSなし、標準ライブラリなしの環境で、どう料理しようかということに
特化した内容となっています。GBAとRust環境構築の話は6:4ぐらいかな。
特にrustup。今時のツールってこう使うんだと新鮮な気持ちになりました。


ただp20の「プログラムのロード時アドレス」のところ。
単純にカードリッジ用ROMを作ろうとリンカスクリプト
0x02000000から0x08000000にしても、GBAヘッダ追加とセクション分けしてないから
ハマるような気もしないでもなく。
GNUツールで作ったGBAプログラムを白ロムに書き込む - Qiita


あとROMの生成について、build.rom.map、(細かくならない程度で)obj-dumpなど、
Rustで作るとどういう結果になるか説明ほしかったかなぁー。


GBAでゲーム作りというにはモード3まででちょっと弱いです。
Bare Metalに興味ありという方にいいように思いました。