聖パトリックの日「チャグメーター」自作 – Circuito.ioで作るビール飲み速度計測デバイス
必要な部品と用品
| SparkFun 圧力センサー (FSR) 0.5インチ × 1 |
| SparkFun ミニプッシュボタンスイッチ × 1 |
| Arduino UNO × 1 |
| SparkFun 7セグメントシリアルディスプレイ - 赤 × 1 |
| SparkFun ミニスピーカー - PCマウント 12mm 2.048kHz × 1 |
アプリとオンラインサービス
- circuito.io
- Arduino IDE
このプロジェクトについて
アイデア出し
ついに決着をつけよう - 誰が一番の早飲み王だ?
聖パトリックの日がやってきました。仕事中にビールを飲む絶好の口実です!このお祭りのために贈るのが、「チャグメーター (Chug Meter)」。これで早飲み王を決定しましょう!
※責任を持ってお飲みください
まず最初に、カウンターを作ってから飲み始めることをお勧めします。当たり前のことですが、念のため。
回路の組み立て方
回路はシンプルです:
- FSR (圧力感知抵抗)
- プッシュボタン
- ピエゾスピーカー
- 7セグメントディスプレイ
マジックリンク をクリックすると circuito.io に飛び、コンポーネントがプリセレクトされています。
カスタマイズ
いつものように電子部品は変更可能です。例:
- 7セグメントをLCDスクリーンに置き換え
- FSRをIRダイオードに置き換え
- RGB LEDを追加
聖パトリックの日だから、好きにカスタマイズしてください!
「Generate」をクリック したら、返ってくる3つのパート BoM (部品表)、ステップバイステップ配線ガイド、コード を確認し、指示に従って組み立ててください。困ったらコメントで質問してください。
次のステップ
すべて動作したら:
- circuito.ioから得たサンプルコードを、本チュートリアル添付のコードで置き換え。Firmwareタブにペーストするだけで、コンポーネントライブラリはそのままでメイン関数だけ変更されます。
- FSR (圧力センサー) をビールコースターの下にテープで固定。グラスが持ち上げられると(圧力解除)タイマー開始、置き戻すと停止。ボタンでリセット。
- 7セグメント用ケースを3Dプリント
- 飲み始めよう!
ハッピー・聖パトリックデー!責任を持ってお楽しみください!
コード
チャグメーター用コード (Arduino)
circuito.ioから得たコードの setup() と loop() を以下で置き換えてください:
int start_flag = 0;
bool glassState = 0;
long finalTime, time0;
int timer;
void setup() {
Serial.begin(9600);
Serial.println("start");
pushButton.init();
s7s.clearDisplay();
s7s.setBrightness(255);
s7s.setDecimals(0b00010000);
s7s.writeInt(0);
}
void loop() {
float fsrForce = fsr.getForce();
Serial.print(" Force: "); Serial.print(fsrForce); Serial.println(" [g]");
bool pushButtonVal = pushButton.onPress();
Serial.println(pushButtonVal);
// リセットボタン押下時
if (pushButtonVal == 1) {
start_flag = 0;
glassState = 0;
s7s.writeInt(0);
time0 = millis();
}
// タイマー状態管理
if (start_flag == 0) {
// グラスが置かれている
if (fsrForce > 50) {
glassState = 1;
s7s.writeInt(0);
time0 = millis();
}
// グラスが持ち上げられた
else if (fsrForce < 50 && glassState) {
finalTime = millis() - time0;
start_flag = 1;
}
}
// 飲んでいる最中
else if (start_flag == 1) {
if (fsrForce < 100) {
finalTime = (millis() - time0) / 10;
s7s.writeInt(finalTime);
}
// 飲み終わった
else {
start_flag = 2;
finalTime = (millis() - time0) / 10;
s7s.writeInt(finalTime);
piezoSpeaker.playMelody(piezoSpeakerHoorayLength, piezoSpeakerHoorayMelody, piezoSpeakerHoorayNoteDurations);
delay(500);
}
}
// リセットされるまで最終タイムを表示
else {
s7s.writeInt(finalTime);
}
}
製造プロセス
- 自由のために命を捧げた人々を偲ぶメモリアルデー
- 製造向け設計 (DFM): エンジニアとデザイナーのための実践ガイド
- SIGHT:視覚障害者を支援するスマートグラス
- DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
- DIYクラウドコスチューム: LEDストリップ、Arduino Nano & SparkFunパーツで光る雲に
- 産業用ラインフォロワーロボット - 物資輸送用自律走行ロボット
- スマートArduino水筒:リアルタイム監視とアラート機能付き
- 製造業の日2018に備える:イノベーションとキャリアの機会を祝おう
- MFG Day 2021:製造業最大のイベントへの招待
- フローメーター選定の完全ガイド:失敗しないための実践的ポイント
- Isabellenhütte、IEM-DCC発表:高速充電課金向け校正済みDCメータ