16x2LCDディスプレイでカスタムアニメーションを作成する
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
LiquidCrystalライブラリを使用すると、ArduinoでLCDを簡単に使用できます。そのライブラリの特に興味深い関数はcreateChar()関数です。各行に1つずつ、8バイトの配列で記述されたカスタムグリフ(文字)を作成できます。各バイトの最下位5ビットは、その行のピクセルを決定します。アートを作成するために手でバイトを書くことは、アーティストの理想的なプロセスではないため、作成しました ウェブツール グリフを描画でき、コードが生成されます 。
この記事では、ArduinoボードとLCDだけでカスタムアニメーションを作成する方法を紹介します。これを使用して、ゲーム、短編小説、ミュージックビデオ、またはステータスパネルを飾ります。
<図> <図>
LCDをArduinoに接続する
LCDをArduinoに接続します-画面のモデルによっては、異なる接続がより適切に機能する場合があります。私の画面の1つでは、以下の回路図がうまく機能しましたが、別の画面では、ポテンショメータ(このリンクのチュートリアルのように)を使用し、抵抗の値を微調整して最高のコントラストを得る必要がありました。
このリンクの下にあるTinkerCadのシミュレーションを参照してください。
<図>
アートの作成
https://tusindfryd.github.io/screenduino/のツールにアクセスして、アートを作成します。一度に最大8つのセクションを使用できるため、新しい正方形を選択できない場合は、8つのセクションをまだ使用していないことを確認してください。
コードの生成
最初の画像が完成したら、チェックを外します ボックス 「ただ 機能 " 。コードをクリップボードにコピーして、Arduinoにアップロードします。この時点で、LCDに画像が表示されます。
より多くのフレームを作成する
コードが保存されていることを確認してください。これで、2番目のフレームを作成できます。別の画像を描くだけです。完了したら、確認 ボックス 「ただ 機能 " 。関数をコピーして、コードの最後に貼り付けます。新しい関数の名前を image01()
などの別の名前に変更します 、追跡できるようにします。次に、呼び出しを image()
に移動する必要があります setup()
から loop()
への関数 関数、遅延を追加し、 image01()
を呼び出します 、および遅延を再度追加します。 image()
の名前を変更することを検討してください image00()
へ 一貫性のために。 loop()
関数は次のようになります:
void loop(){image00(); delay(250); image01(); delay(250);}
スケッチをArduinoにアップロードします。フレームを追加するか、遅延時間を変更してみてください。
<図>
コード
- 蝶の変態アニメーション
蝶の変態アニメーション Arduino
これはサンプルコードです(gifからの蝶の変態アニメーションの背後にあるコード)。/ *蝶の変態アニメーション2021〜tusindfrydによるこのコードはパブリックドメインにあります* /#includeLiquidCrystal lcd(12、11 、5、4、3、2); // RS、E、D4、D5、D6、D7void setup(){lcd.begin(16、2);} void loop(){image00(); delay(250); image01(); delay(250); image02(); delay(250); image03(); delay(700); image04(); delay(250); image05(); delay(250); image06(); delay(700); image07(); delay(1250);} void image00(){lcd.clear();バイトimage22 [8] ={B00110、B01101、B11011、B10011、B00111、B01111、B01111、B11111};バイトimage23 [8] ={B01111、B11110、B11100、B11000、B11000、B10000、B10000、B00000};バイトimage07 [8] ={B00000、B00000、B00000、B00000、B00000、B00000、B00001、B00111};バイトimage08 [8] ={B00000、B01000、B10000、B10000、B10000、B11111、B11111、B11000};バイトimage09 [8] ={B00000、B00000、B00000、B00000、B00000、B11000、B11000、B00100}; lcd.createChar(0、image22); lcd.createChar(1、image23); lcd.createChar(2、image07); lcd.createChar(3、image08); lcd.createChar(4、image09); lcd.setCursor(5、1); lcd.write(byte(0)); lcd.setCursor(6、1); lcd.write(byte(1)); lcd.setCursor(6、0); lcd.write(byte(2)); lcd.setCursor(7、0); lcd.write(byte(3)); lcd.setCursor(8、0); lcd.write(byte(4));} void image01(){lcd.clear();バイトimage22 [8] ={B00110、B00101、B00011、B00011、B00111、B01111、B01111、B11111};バイトimage23 [8] ={B01111、B11110、B11100、B11000、B11000、B10000、B10000、B00000};バイトimage07 [8] ={B00000、B00000、B00000、B00000、B00000、B00000、B11001、B10111};バイトimage08 [8] ={B00000、B01000、B10000、B10000、B10000、B11111、B11111、B11000};バイトimage09 [8] ={B00000、B00000、B00000、B00000、B00000、B11000、B11000、B00100};バイトimage06 [8] ={B00000、B00000、B00000、B00000、B00000、B00000、B00000、B00011}; lcd.createChar(0、image22); lcd.createChar(1、image23); lcd.createChar(2、image07); lcd.createChar(3、image08); lcd.createChar(4、image09); lcd.createChar(5、image06); lcd.setCursor(5、1); lcd.write(byte(0)); lcd.setCursor(6、1); lcd.write(byte(1)); lcd.setCursor(6、0); lcd.write(byte(2)); lcd.setCursor(7、0); lcd.write(byte(3)); lcd.setCursor(8、0); lcd.write(byte(4)); lcd.setCursor(5、0); lcd.write(byte(5));} void image02(){lcd.clear();バイトimage22 [8] ={B00000、B00001、B00011、B00011、B00111、B01111、B01111、B11111};バイトimage23 [8] ={B01111、B11110、B11100、B11000、B11000、B10000、B10000、B00000};バイトimage07 [8] ={B00000、B00000、B00000、B00001、B00111、B00100、B11001、B10111};バイトimage08 [8] ={B00000、B01000、B10000、B10000、B10000、B11111、B11111、B11000};バイトimage09 [8] ={B00000、B00000、B00000、B00000、B00000、B11000、B11000、B00100}; lcd.createChar(0、image22); lcd.createChar(1、image23); lcd.createChar(2、image07); lcd.createChar(3、image08); lcd.createChar(4、image09); lcd.setCursor(5、1); lcd.write(byte(0)); lcd.setCursor(6、1); lcd.write(byte(1)); lcd.setCursor(6、0); lcd.write(byte(2)); lcd.setCursor(7、0); lcd.write(byte(3)); lcd.setCursor(8、0); lcd.write(byte(4));} void image03(){lcd.clear();バイトimage22 [8] ={B00000、B00001、B00011、B00011、B00111、B01111、B01111、B11111};バイトimage23 [8] ={B01111、B11110、B11100、B11000、B11000、B10000、B10000、B00000};バイトimage07 [8] ={B00000、B00000、B00000、B00000、B00000、B00000、B00001、B00111};バイトimage08 [8] ={B00000、B01000、B10000、B10000、B10000、B11111、B11111、B11010};バイトimage09 [8] ={B00000、B00000、B00000、B00000、B00000、B11000、B11000、B00100};バイトimage24 [8] ={B00010、B00111、B00111、B00111、B00111、B00111、B00010、B00000}; lcd.createChar(0、image22); lcd.createChar(1、image23); lcd.createChar(2、image07); lcd.createChar(3、image08); lcd.createChar(4、image09); lcd.createChar(5、image24); lcd.setCursor(5、1); lcd.write(byte(0)); lcd.setCursor(6、1); lcd.write(byte(1)); lcd.setCursor(6、0); lcd.write(byte(2)); lcd.setCursor(7、0); lcd.write(byte(3)); lcd.setCursor(8、0); lcd.write(byte(4)); lcd.setCursor(7、1); lcd.write(byte(5));} void image04(){lcd.clear();バイトimage22 [8] ={B00000、B00001、B00011、B00011、B00111、B01111、B01111、B11111};バイトimage23 [8] ={B01111、B11110、B11100、B11000、B11000、B10001、B10000、B00000};バイトimage07 [8] ={B00000、B00000、B00000、B00000、B00000、B00000、B00001、B00111};バイトimage08 [8] ={B00000、B01000、B10000、B10000、B10000、B11111、B11111、B11010};バイトimage09 [8] ={B00000、B00000、B00000、B00000、B00000、B11000、B11000、B00100};バイトimage24 [8] ={B00010、B00100、B01011、B10101、B11010、B10101、B11010、B01110};バイトimage25 [8] ={B00000、B00000、B00000、B10000、B10000、B00000、B00000、B00000}; lcd.createChar(0、image22); lcd.createChar(1、image23); lcd.createChar(2、image07); lcd.createChar(3、image08); lcd.createChar(4、image09); lcd.createChar(5、image24); lcd.createChar(6、image25); lcd.setCursor(5、1); lcd.write(byte(0)); lcd.setCursor(6、1); lcd.write(byte(1)); lcd.setCursor(6、0); lcd.write(byte(2)); lcd.setCursor(7、0); lcd.write(byte(3)); lcd.setCursor(8、0); lcd.write(byte(4)); lcd.setCursor(7、1); lcd.write(byte(5)); lcd.setCursor(8、1); lcd.write(byte(6));} void image05(){lcd.clear();バイトimage24 [8] ={B01010、B10100、B01011、B10101、B11010、B10101、B11010、B01110};バイトimage25 [8] ={B00000、B00000、B00000、B10000、B10000、B00000、B00000、B00000};バイトimage23 [8] ={B01101、B01010、B01101、B00111、B00000、B00000、B00000、B00000};バイトimage07 [8] ={B00000、B00000、B00000、B00000、B00000、B00000、B00001、B00011};バイトimage08 [8] ={B00000、B00000、B00000、B00000、B00000、B00000、B00000、B10000}; lcd.createChar(0、image24); lcd.createChar(1、image25); lcd.createChar(2、image23); lcd.createChar(3、image07); lcd.createChar(4、image08); lcd.setCursor(7、1); lcd.write(byte(0)); lcd.setCursor(8、1); lcd.write(byte(1)); lcd.setCursor(6、1); lcd.write(byte(2)); lcd.setCursor(6、0); lcd.write(byte(3)); lcd.setCursor(7、0); lcd.write(byte(4));} void image06(){lcd.clear();バイトimage08 [8] ={B00000、B00100、B01010、B01010、B10001、B00011、B00110、B01100};バイトimage07 [8] ={B00000、B00000、B00000、B00000、B00001、B00010、B00010、B00001};バイトimage09 [8] ={B00000、B00000、B10000、B11000、B00000、B00000、B11000、B00100};バイトimage24 [8] ={B00100、B00100、B00011、B00000、B00000、B00000、B00000、B00000};バイトimage25 [8] ={B10000、B00000、B00000、B00000、B00000、B00000、B00000、B00000}; lcd.createChar(0、image08); lcd.createChar(1、image07); lcd.createChar(2、image09); lcd.createChar(3、image24); lcd.createChar(4、image25); lcd.setCursor(7、0); lcd.write(byte(0)); lcd.setCursor(6、0); lcd.write(byte(1)); lcd.setCursor(8、0); lcd.write(byte(2)); lcd.setCursor(7、1); lcd.write(byte(3)); lcd.setCursor(8、1); lcd.write(byte(4));} void image07(){lcd.clear();バイトimage24 [8] ={B10101、B01110、B01110、B00100、B10101、B01110、B00100、B11111};バイトimage08 [8] ={B00000、B00100、B01010、B01010、B10001、B00011、B00110、B01100};バイトimage07 [8] ={B00000、B00000、B00000、B00000、B00001、B00010、B00010、B00001};バイトimage09 [8] ={B00000、B00000、B10000、B11000、B00000、B00000、B00000、B00000}; lcd.createChar(0、image24); lcd.createChar(1、image08); lcd.createChar(2、image07); lcd.createChar(3、image09); lcd.setCursor(7、1); lcd.write(byte(0)); lcd.setCursor(7、0); lcd.write(byte(1)); lcd.setCursor(6、0); lcd.write(byte(2)); lcd.setCursor(8、0); lcd.write(byte(3));}
回路図
製造プロセス
- CDS:3D透明LCDディスプレイ
- フライトシミュレータ用のArduinoを備えたLCDパネル
- LCDアニメーションとゲーム
- Arduino UNOを使用してLCDTFTスクリーンに画像を表示する!
- 128x64LCDディスプレイ上のDIY10Hz-50kHzオシロスコープ
- PHPを使用してArduinoと通信するWebサイトを作成する方法
- 16x2LCDのMAX30102心拍数モニター
- Arduino Weather Station
- ロータリーエンコーダーを使用したNokia5110LcdのArduinoメニュー
- DS1302RTCを備えたシンプルな目覚まし時計
- PCBプロトタイププロセス:カスタムPCBを作成する5つのステップ