マタニティー日記 〜生まれてくるあなたへ〜 |
日記等の思い出を書き込んだり、写真を貼ったりできるアプリです。
日記以外でも診療記録や胎児の超音波写真の記録もや体重管理もできます。
妊娠から出産までを記録できます。
NECの国民機 PC-98シリーズの起動音をArduinoで超簡単に再現してみました。
今回はArduino UNO R3を使用しましたが、特別なことはしていないので、何でもよいです。
またArduinoエントリーキットだけで作ることができるので、初めての方はこれがお勧めです。
他に用意したものは圧電スピーカーとタクトスイッチのみです。
接続は下の図のように、DIGITAL3番に圧電スピーカー、DIGITAL4番にタクトスイッチを接続しました。
圧電スピーカーとタクトスイッチは両方とも、反対のピンはGNDに接続しています。
このままではスピーカーによっては結構大きな音がするので、その場合は適当に抵抗を挟んでください。
この構成でタクトスイッチを押すと、PC98の起動音が鳴るようにします。
PC98の起動音について調べたところ、
2000Hz 1秒
1000Hz 1秒
のようです。
これをArduinoのtone関数で再現してみると
tone(3, 2000); // 3番ピンに接続されたスピーカーを2000Hzで鳴らす delay(100); // 100ms(1秒)待つ tone(3, 1000); // 3番ピンに接続されたスピーカーを1000Hzで鳴らす delay(100); // 100ms(1秒)待つ noTone(3); // 3番ピンに接続されたスピーカーを止める
になります
これを適用した全ソースコードは以下になります。
int is_button = 0; void setup() { pinMode(4, INPUT_PULLUP); // DIGITAL4番ピン プルアップで入力 } void loop() { if (digitalRead(4) == LOW) { is_button = 1; } else { if (is_button == 1) { // ボタンを押して離したときに実行 tone(3, 2000); // 3番ピンに接続されたスピーカーを2000Hzで鳴らす delay(100); // 100ms(1秒)待つ tone(3, 1000); // 3番ピンに接続されたスピーカーを1000Hzで鳴らす delay(100); // 100ms(1秒)待つ noTone(3); // 3番ピンに接続されたスピーカーを止める } is_button = 0; } }
これだけです。
初めての方はこれを機にArduinoの手軽さを実感できたらと思います。
Arduino エントリーキット(Uno版)- Physical Computing Lab
ハードウェア音源全盛期に定番だったRolandのGS音源のSoundCanvasがiOSアプリとしてリリースされました。
現在でもSC-88pro等の音源はオークションで頻繁に取引されています。
MIDIファイルの再生機能があるのでネットで公開されているファイルを再生して楽しめる他、CoreMIDIに対応しているので、MIDI機器と接続してそのまま音源としても楽しめます。
手持ちのIK Multimedia iRig KEYSを接続しただけで使用することができました。
MIDIファイルのプレイヤーとしても、そのままハードウェア音源としても使えるので、非常に便利です。
音色マップはSC-8820, SC-88Pro, SC-88, SC-55に対応しています。
チャンネル数は16チャンネルでPC-88Proより減っていますが、ほとんどのMIDIデータは16チャンネル以下で作られているので、軽く楽しむ分には問題はないと思います。
現在でもSC-8820を所有しているため、同じデータを聞き比べたところ、音は確かに同じです。
実機は古いので、かすかにノイズが乗ります。iOSはノイズが無い分実機よりクリアに聞こえました。
古くからのDTMファンは必須のアプリだと思います。
ROLAND ローランド SoundCanvas SC-88Pro
Roland SC-8820 音源モジュール Sound Module ローランド
今回もArdionoネタです。
携帯ゲーム機のような外観のArduino ESPLORAで遊びたいと思います。
こちらもATmega32u4を搭載し、USB機器にもなれるので、今回はESPLORAのジョイスティックとボタンでマウスを作ってみました。
ソースコード中にコメントで処理の説明を書いているので、参考にしてください
#include <Esplora.h> void setup() { Mouse.begin(); // マウス開始 } void loop() { int moveX = Esplora.readJoystickX(); // X軸のアナログ値を取得 (-512〜+512) int moveY = Esplora.readJoystickY(); // Y軸のアナログ値を取得 (-512〜+512) Mouse.move(-moveX / 100, moveY / 100, 0); // 適当に調整してマウスカーソルを移動 if (Esplora.readButton(SWITCH_1) == LOW) { // SWITCH_1が押されているときの処理 Mouse.press(MOUSE_LEFT); // 左ボタン押下送信 } else { // SWITCH_1が押されていないときの処理 Mouse.release(MOUSE_LEFT); // 左ボタン解放送信 } if (Esplora.readButton(SWITCH_4) == LOW) { // SWITCH_4が押されているときの処理 Mouse.press(MOUSE_RIGHT); // 右ボタン押下送信 } else { // SWITCH_4が押されていないときの処理 Mouse.release(MOUSE_RIGHT); // 右ボタン解放送信 } // 適当にウェイトを入れる(お好みで調整してください) delay(5); }
これ1冊でできる! Arduinoではじめる電子工作 超入門
今回はArdionoネタです。
ATmega32u4を搭載し、USB機器にもなれるArduino LEONARDOを入手したので、ちょっと遊んでみます。
USBキーボードとして接続されて、タクトスイッチを押すと、"TEST"と送信されるものを作ってみます。
配線は下の図のように、デジタル2番ピン-タクトスイッチ-Gndと接続しました。
図ではUNOとなっていますが、実際はLEONARDOです。
タクトスイッチの押下終了時に"TEST"を出力する処理のソースコードです
int key_enable = 1; // キー入力フラグ void setup() { pinMode( 2, INPUT_PULLUP); // デジタル2ピンを内部プルアップ抵抗を有効にして出力に設定 Keyboard.begin(); // キーボード開始 } void loop() { if (digitalRead(2) == LOW) { // タクトスイッチを押している時はキー入力フラグを0にする key_enable = 0; } else { // 直前のキー入力フラグが0の時に文字列出力を実行する // (タクトスイッチの押下終了時に実行) if (key_enable == 0) { Keyboard.print("TEST"); // 文字列出力 key_enable = 1; } } }
これだけです。
キーボードだけではなく、マウスも簡単に扱えるので、Arduino LEONARDOは一番のお気に入りの機種になりました。
Arduino Leonardo 開発ボード ソケット・ヘッダ付 A000057
サインスマート Arduino(Leonardo R3)をはじめよう互換キット 初心者にArduino基本チュートリアルプロジェクト付き!(内容リストは本ページの商品の仕様をご参考下さい)
久しぶりにiOS SDKの開発メモです。
今回はSwiftで簡単に折れ線グラフを書く方法を紹介します。
簡単に使えるオープンソースのライブラリ BEMSimpleLineGraph を見つけたので、これを使います
BEMSimpleLineGraphはObjective-Cで書かれていますが、Swiftから使う方法を紹介します。
BEMSimpleLineGraph
入手先はGitHubです。
どんな方法で入手しても良いですが、今回はこのページにある"Download Zip"ボタンによりZipファイルをダウンロードしました。
SwiftからObjective-Cのクラスを使うためにBridging-Headerを追加します
ファイル名は"TestGraph-Bridging-Header.h"とします。(<プロジェクト名>-Bridging-Header.h)
このファイルにBEMSimpleLineGraphのimport文を書きます
TestGraph-Bridging-Header.h
#import "BEMSimpleLineGraphView.h"
作成した"TestGraph-Bridging-Header.h"をBuild SettingsのSwift Compiler - Code Generationにある項目 Objective-C Bridge Headerに設定します
簡単な例として、SampleLabelにX軸のラベル、SampleDataにY軸の値がセットされた要素数がそれぞれ5個の配列を用意して、この値をグラフ表示するコードを"ViewController.swift"へ書きます。
ライブラリの使い方はコード中のコメントを参考にしてください
import UIKit // BEMSimpleLineGraphDelegateとBEMSimpleLineGraphDataSourceの2つのプロトコルを追加 class ViewController: UIViewController, BEMSimpleLineGraphDelegate, BEMSimpleLineGraphDataSource { // サンプルラベル var SampleLabel: Array<String> = ["ラベルA", "ラベルB", "ラベルD", "ラベルE", "ラベルF"] // サンプルデータ var SampleData: Array<Float> = [10.5, 20.8, 5.3, 12.1, 25.9] override func viewDidLoad() { super.viewDidLoad() // グラフのViewを作成(今回はメインビューと同じ大きさのビューを作ります) var GraphView: BEMSimpleLineGraphView = BEMSimpleLineGraphView(frame: CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height)) // データソースを設定 (今回はこのクラスの中にメソッドを書くので、selfを設定) GraphView.dataSource = self // delegateを設定 (今回はこのクラスの中にメソッドを書くので、selfを設定) GraphView.delegate = self // メインビューにグラフのViewを追加 self.view.addSubview(GraphView) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } // グラフのX軸の最大個数を返すメソッドを作成 func numberOfPointsInLineGraph(graph: BEMSimpleLineGraphView) -> NSInteger { // 今回はSampleData配列の数を返します return SampleData.count } // Y軸の値を返すメソッドを作成 func lineGraph(graph: BEMSimpleLineGraphView, valueForPointAtIndex index: NSInteger) -> CGFloat { //何個目のX軸のポイントかはindexで取得できるので、今回はSampleData配列の中にあるindexの要素をそのまま返します return CGFloat(SampleData[index]) } // X軸のラベルを返すメソッドを作成 func lineGraph(graph: BEMSimpleLineGraphView, labelOnXAxisForIndex index: NSInteger) -> NSString { //何個目のX軸のポイントかはindexで取得できるので、今回はSampleLabel配列の中にあるindexの要素をそのまま返します return NSString(string: SampleLabel[index]) } }
グラフオブジェクトに対して下のような設定プロパティがあります
colorTop: UIColor | グラフViewの上部の色 |
colorBottom: UIColor | グラフViewの下部の色 |
colorLine: UIColor | 各ポイントを結んだ線の色 |
colorXaxisLabel: UIColor | X軸のラベルの文字の色 |
colorYaxisLabel: UIColor | Y軸のラベルの文字の色 |
widthLine: CGFloat | 各ポイントを結んだ線の太さ |
enableTouchReport: Bool | GraphViewのタッチイベントを取得するかどうか |
enablePopUpReport: Bool | 画面をタッチした時に値をポップアップで表示するか |
enableBezierCurve: Bool | 各ポイントを結ぶ線を滑らかに表示するか |
enableYAxisLabel: Bool | Y軸のラベルを表示するか |
autoScaleYAxis: Bool | Y軸をViewの高さに合わせてスケールするか |
alwaysDisplayDots: Bool | 各ポイントを常に表示するか |
enableReferenceAxisFrame: Bool | X, Y軸のフレーム(外枠)を表示するか |
enableReferenceAxisLines: Bool | X, Y軸の補助線を表示するか |
animationGraphStyle: BEMLineAnimation | 表示するときのアニメーション |
いくつか設定してみた例です。
// GraphView.delegate = self の次の行から以下を追加した例 GraphView.enableYAxisLabel = true GraphView.enableXAxisLabel = true GraphView.enableReferenceAxisFrame = true GraphView.enableReferenceXAxisLines = true GraphView.enableReferenceYAxisLines = true GraphView.enableBezierCurve = false GraphView.widthLine = 2 GraphView.colorLine = UIColor.orangeColor() GraphView.colorTop = UIColor.whiteColor() GraphView.colorBottom = UIColor.whiteColor()
このように非常に簡単に扱えるので、ちょっとした折れ線グラフを描きたいときに便利です。
詳細! Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応
今までずっとHP-16cが欲しくて探していました。
もう製造も終了した機種で、ebayでも3万円以上で取引されているものでずっと手が出ずにいました。
色々探してるうちにクローン機の存在を知り、ついに手に入れてしまいました。
こちらで販売しています。
SwissMicros | Home
送料も合わせると13,000円ほど、決して安くはないです。
HP-16cの機能はほぼ完全にエミュレートされているようです。プログラミングもできます。
キーは小さくて押しにくいですが、触ってて楽しいです。
他にもHP-11c,HP-12c,HP-15cのクローン機も販売しています。
なぜ一番有名なHP-15cではなく、HP-16cにこだわったかというと、2,8,10,16進数が相互にワンタッチで変換できることです。
HP-16cはもともとプログラマ向け関数電卓なので、プログラミングで使える事が非常に多いです。
詳しくはwiki
HP-10Cシリーズ - Wikipedia
を参考にしてください
現在このシリーズで手に入るのは、金融向け電卓のHP-12cだけです。
hp 12c Platinum ブラック 金融電卓 日マニュアル付