HSVClock
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 |
このプロジェクトについて
HSV時計
前回アメリカを訪れたとき、RadioShackからSeeed 2.8 "TFTタッチシールド(V1.0)を手に入れました。これを使って、父の80歳の誕生日にカラフルな時計を作りました。
HSVClock.zipYouTube重要なポイントは
- 文字盤 長方形のセルのグリッドに基づいています。セルの角はランダムな量で歪んでおり、各セルはランダムな対角線で分割されています。色のランダムな広がりがセル全体に適用され、各三角形は3Dの外観を与えるために陰影が付けられます。内部的には、色はHSV(色相、彩度、値)として表されますが、LCDに送信するためにRGBに変換されます。時刻は、特定のセルを補色で色付けすることにより、シンプルなフォントで表示されます。
- エンクロージャー Inkscapeでデザインされ、Ponokoによってカットされたレーザーカットされた竹です。
- 残念ながら、シールドには取り付け穴がありません。 だから私はそれを効果的に前面に対してエンクロージャーに固定します。 Arduino Unoは、ヘッダーピンを介してシールドにピギーバックします。
- 外部RTC へのI2Cアクセスが必要でした (DS3232)。シールドは未使用のピンを露出させないので、余分なSDA / SCLピンがあるUnoを使用しました。シールドの下にあるこれらの薄型ヘッダーコネクタを作成しました。 ICSPピンの同様のコネクタから電源とアースを引き出しました。これもシールドの下にあります。
- 簡単な夏時間を追加しました スケッチのサポート(年に2回設定する時計が1つ少なくなります!)。 「9月の最後の日曜日」のようなロジックを扱うのではなく、将来の特定の開始日と終了日の小さなテーブルに依存します(私の場合はニュージーランドの場合)。
- タッチライブラリコードを簡略化して、タッチスクリーンを作成しました デバウンスされたボタンの4x4グリッドとして機能します。たとえば、時間は左下と右上の角をタッチすることで設定されます。
- スピードアップするためにかなり英雄的な努力をしました レンダリング:セルの再描画には約4分の1秒かかります。レンダリングは、特定の色のピクセルの水平方向の行を書き込むことに基づいています。修正されたブレゼンハムアルゴリズムを使用して、特定のセルの三角形を構成する一連の線のペアの水平範囲を計算します。ピクセルをLCDに送信するコードはライブラリに基づいていますが、インライン化され、展開され、簡略化され、最適化されています。ピクセルカラーデータは複数のPORTxにまたがって書き込まれるため、カラーを選択するとすべての値が事前に計算され、Nピクセルをそのカラーに連続して設定する方が高速です。
- LCDは横向きで使用されます 。画面を横列に更新するのに長い間苦労しました。コントローラのデータシートは紛らわしいです。 「カーソル」の位置を設定するコマンド「DRAM水平/垂直アドレスセット(R20h、R21h)」があります。ピクセルデータはカーソル位置に書き込まれ、カーソルが更新され、必要に応じて次の行に折り返されます。画面の向きを変更するコマンド「エントリモード(R03h)」もあり、カーソルの行と列の調整についても説明しています。増分。ただし、向きを横向きに変更してからカーソルを配置しても機能しないことがわかりました。私が最終的に見つけた解決策(データシートに埋め込まれている可能性があります)は、カーソルコマンドの代わりに「ウィンドウ」コマンドを使用することです。 「水平および垂直RAMアドレス位置(R50h、R51h、R52h、R53h)」。ウィンドウの左上隅の座標を設定すると、ピクセルデータはそこから始まり、水平方向(横向き)に更新されます。
回路
回路は単純です
- 宇野に取り付けられたTFTシールド。
- + 5VDC、Ground、SDA、およびSDLは、Unoのラベル付きピンからRTCモジュールに接続されます。下の最初の3枚の写真に示されています(シールドが削除されています)。アクセス上の理由から、電源/アースはICSP1コネクタから供給されることに注意してください。
















製造プロセス