工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ライトシーケンスクリエーター

コンポーネントと消耗品

>
Arduino UNO
× 1
ブレッドボード(汎用)
× 2
ジャンパー線(汎用)
× 55
74HC595シフトレジスタ
× 1
ボタン
× 4
ロータリーポテンショメータ(汎用)
× 1
LED(汎用)
× 8
抵抗221オーム
× 9
抵抗10kオーム
× 4

必要なツールとマシン

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

私はライトと配列を楽しんでいますが、シフトレジスタとLCD画面を使用して、コードにアクセスして手動でアニメーションを作成しなくても、ライトアニメーションを変更および表示できるプログラムを作成すると思いました。毎回。

4つのボタンがあり、左から右に1〜4の番号が付けられています。これらのボタンを使用すると、メニューをナビゲートしたり、変数を変更したりできます。ボタン1は、値をインクリメントしたり、ライトの状態をHIGHに変更したりするために使用されます。ボタン2は、値をデクリメントするため、およびライトの状態をLOWに切り替えるために使用されます。ボタン3は、フレームの作成中にカーソルを後方に移動でき、ボタン4は「戻る」ボタンとして使用されます。

プログラムは、アニメーションの速度とループする回数を変更できます。複数のアニメーションを許可する別のバージョンをリリースする可能性があります。

コードの上部にあるARR_SIZEを変更することで、フレームを変更できます

お楽しみください

コード

  • ライトシーケンサー
ライトシーケンサー C / C ++
このコードを接続して実行します。配線が正しければ、問題は発生しません。
エンジョイ
 #include  #define ARR_SIZE 16 //これを任意の数のフレームに変更#defineLIGHTS 8 //ゲームボタンの入力を制御しますconstint btn1 =7、btn2 =8、btn3 =9、btn4 =10; //プッシュボタンステータスを読み取るための変数intbs1 =0、bs2 =0、bs3 =0、bs4 =0; // 74HC595constのST_CPに接続されたピンintlatchPin =11; // 74HC595constのSH_CPに接続されたピンintclockPin =13; // 74HC595のDSに接続されたピンconstint dataPin =12; //パスバイトデータを渡す情報のホルダー; // 1または0boolのいずれかを読み取るために使用ArrOne [ARR_SIZE] [LIGHTS] ={false}; //アニメーション//レジスタをbytesbyteとして変換lightArrOne [ARR_SIZE] ={0xFF}; //アニメーションに影響を与える変数intanimSpeed =50; //各frameintloopCount間のミリ秒=5; //実行回数// LCD値を制御constint rs =15、en =14、d4 =3、d5 =4、d6 =5、d7 =6; LiquidCrystal lcd(rs、en、d4、d5、d6 、d7); void setup(){//各ボタンを設定しますpinMode(btn1、INPUT_PULLUP); pinMode(btn2、INPUT_PULLUP); pinMode(btn3、INPUT_PULLUP); pinMode(btn4、INPUT_PULLUP); // LCDの列と行の数を設定します:lcd.begin(16、2); //レジスタラッチを設定しますpinMode(latchPin、OUTPUT); PrintMenu();} void loop(){bs1 =digitalRead(btn1); bs2 =digitalRead(btn2); bs3 =digitalRead(btn3); bs4 =digitalRead(btn4); //アニメーションを再生しますif(bs1 ==HIGH){bs1 =LOW; //不正な/二重の入力遅延を防ぐために使用されます(150);演奏する(); //アニメーションを変更します} else if(bs2 ==HIGH){bs2 =LOW; delay(150); Create(ArrOne); //アニメーションの速度を変更します} else if(bs3 ==HIGH){bs3 =LOW; delay(150); SetSpeed(); //アニメーションが再生される回数を変更します} else if(bs4 ==HIGH){bs4 =LOW; delay(150); SetLoop(); } PrintMenu(); delay(150);} //メインメニューの情報を出力する関数voidPrintMenu(){ClearScreen(); lcd.print( "1-Play 3-Speed"); lcd.setCursor(0、1); lcd.print( "2-Create 4-Loops");} //フレームを作成するための情報を出力する関数voidPrintCreate(bool Arr [] [LIGHTS]、int frame、int _bit){ClearScreen(); lcd.print( "フレーム:"); lcd.print(frame + 1); if(frame <9)lcd.print( ""); for(int j =0; j <_bit; j ++)lcd.print( ""); lcd.print( "v"); lcd.setCursor(0、1); lcd.print( ""); for(int j =0; j <8; j ++)lcd.print(Arr [frame] [j]);} //速度を設定するための情報を出力する関数PrintSetSpeed(){ClearScreen(); lcd.print( "Set Speed(ms)"); lcd.setCursor(0、1); lcd.print(animSpeed);} //アニメーションループの数を変更するための情報を出力する関数voidPrintSetLoop(){ClearScreen(); lcd.print( "ループカウントの設定"); lcd.setCursor(0、1); lcd.print(loopCount);} //指定されたパラメーターを使用してアニメーションを再生する関数voidPlay(){//アニメーションfor(int count =0; count  0){b =LIGHTS-1;フレーム -; } bs1 =digitalRead(btn1); bs2 =digitalRead(btn2); bs3 =digitalRead(btn3); bs4 =digitalRead(btn4); if(bs1 ==HIGH){delay(150); Arr [frame] [b] =true; b ++; } else if(bs2 ==HIGH){delay(150); Arr [frame] [b] =false; b ++; } else if(bs3 ==HIGH){delay(150); b--; } else if(bs4 ==HIGH){delay(150);残す=true; } delay(10); } PrintCreate(Arr、frame、b); IntToHexToByte(Arr); delay(500); }} //レジスタがreadvoidになるように配列をバイトに変換する関数IntToHexToByte(bool Arr [] [LIGHTS]){for(int row =0; row  1)animSpeed--; } //速度を上げるif(bs4 ==HIGH){delay(150);残す=true; } delay(30); }} // anim loopsvoid SetLoop(){bool Leaveing =false;の回数を変更する関数while(!leaving){PrintSetLoop(); bs1 =digitalRead(btn1); bs2 =digitalRead(btn2); bs3 =digitalRead(btn3); bs4 =digitalRead(btn4); if(bs1 ==HIGH){delay(10); loopCount ++; } if(bs2 ==HIGH){delay(10); if(animSpeed> 1)loopCount--; } if(bs4 ==HIGH){delay(150);残す=true; } delay(30); }} //レジスタ内のビットを実際にシフトする関数voidshiftOut(int myDataPin、int myClockPin、byte myDataOut){//これは最初に8ビットをMSBからシフトアウトし、//クロックの立ち上がりエッジで//クロックがアイドル状態になりますlow //内部関数の設定inti =0; int pinState; pinMode(myClockPin、OUTPUT); pinMode(myDataPin、OUTPUT); //ビットシフト用のシフトレジスタを準備するために//すべてをクリアしますdigitalWrite(myDataPin、0); digitalWrite(myClockPin、0); //バイト内の各ビットmyDataOutfor(i =7; i> =0; i-){digitalWrite(myClockPin、0); if(myDataOut&(1 < 

回路図

プログラム内の抵抗の長さの制限のため、また読みやすさのために、実際のビルドと同じように圧縮することはできませんでした。構築した後、私はあなたにそれをきれいにする方法を見つけるように挑戦します。

製造プロセス

  1. TinyML-言語検出器-エッジインパルスとArduinoに基づく
  2. MPU-6050を搭載したArduinoジャイロスコープゲーム
  3. Arduino Digital Dice
  4. DIY 37LEDルーレットゲーム
  5. ATtiny85ミニアーケード:スネーク
  6. ポータブルレンジ検出器
  7. Arduinoオーディオリアクティブデスクライト
  8. スマートフェイストラッキングロボットカー
  9. 銅による電気めっき
  10. NeoMatrix Arduino Pong
  11. Pick to Light Project 2 WiFi