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

ライト&トーンの米国国歌

コンポーネントと消耗品

>
Arduino Nano R3
これには、328P(古いブートローダー)を使用する4つの異なるプロセッサがあることに注意してください
× 1
ブザー
古いブザーなら16オームのブザーを使用します。
× 1
SparkFunプッシュボタンスイッチ12mm
使用したものとは異なりますが、私のものは6x6x6mmでした
× 2
ロッカースイッチ250V3A
どの電源スイッチでもかまいません。スイッチ付きの9Vケースを使用しましたが、ケースの中に隠れているので、外側にスイッチを追加しました。ロッカースイッチを探すだけです。
× 1
抵抗330オーム
どの抵抗でも機能しますが、LED計算を行い、LED出力を超えないようにします。 Nanoのピンあたり最大40mA。 330オームはどのArduinoスターターパックでもほぼ標準です。
× 3
LED(汎用)
6個のLEDまたは必要な数のLED。赤2個、白2個、青2個。私が使用した赤色LEDは2.2Vで、他の各LEDは3.2Vでした。 330オームを使用すると9.7mAと6.7mAになります。 (出力ごとに2を使用しているので、最大ピン出力電流の半分である〜13 mA&〜20mAを使用していることを思い出してください)
× 6
SparkFunはんだ付け可能なブレッドボード-ミニ
どのブレッドボードでも、どのように見えるかについて電話をかけたり、はんだ付けしたり、はんだ付けしたりできます。または、1つなしでそれを行うことができ、穴と木をドリルして、パーツを所定の位置に熱接着するだけです。
× 1
9Vバッテリー(汎用)
多くの電源オプション。ケースとスイッチ付きの9ボルト電池を使用しました。 Nano入力要件を満たしていれば、USBケーブルだけでなく単3電池4本でも使用できます。別のスイッチを使用していたので、オン/オフスイッチが付いていたものに余分なお金を払ったことを後悔しています。
× 1

必要なツールとマシン

>
はんだごて(汎用)
はんだ付けするかどうかはあなた次第です

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

私はこの1年間、最終的なクリスマスライトと音楽プロジェクトのプログラミングを始めました。これは誰かが私にやるように頼んで、それが楽しいだろうと思ったサイドプロジェクトです。当初、これはライト付きの1曲だけでしたが、それはただのラメです。

ビデオで問題が発生した場合のリンクは次のとおりです。

https://youtu.be/C2jyn80Mjus

このプロジェクトでは、ArduinoNanoを使用しています。このプロジェクトでは、2つの異なるプッシュボタンを使用して、Tone()関数を使用して2つの異なる曲を作成します。 1つは「チャージ」サウンドで、もう1つは「米国国歌」です。ボタンが押されるまで、効果のためにランダムな照明を行います。

このスケッチでは、関数を多用して関数の記述プロセスを簡素化しますが、照明/サウンドプロセスの完全な制御を維持しているため、聞いたり見たりするものが気に入らない場合は、ほとんど問題なく微調整できます。 。

このプロジェクトを投稿する私の目標は、デザイン/コーディングで学んだことのいくつかを共有して、同様のことをしている場合に役立つようにすることです。

システムとコードをテストしたときのブレッドボードの初期デザインは次のとおりです。

<図>

これが電源システムのセットアップです。サイズには9ボルトのバッテリーを選択し、USBの壁やコンピューターの電源に依存していません。

<図>

これは、すべてが内側からはんだ付けされるとどのように見えるかです。トップカバーだけではんだ付けし、後で側面を追加することを強くお勧めします

<図>

コード

  • USA_ANTHEM_Updated.ino
USA_ANTHEM_Updated.ino Arduino
LED、充電、トーン、すべての機能を備えた星条旗。コピーして貼り付けるだけです。
 / * LED付きスタースパンコールバナーRyanAebi作成2018年6月コード構造-他の機能を参照するための基本ループ-プッシュボタンは、スタースパンコールバナーまたはライトでサウンドを充電しますスタースパンコールバナーノート-ファンションには、によって割り当てられたノートがありますFrequncy(Hz)およびduration(time in n)の整数-LEDは、関数を書き込むときに自分で半ランダムに選択します-関数は、再生ごとにピッチが増加するように構築されています(起動時/ハードウェアリセット時に通常のピッチにリセットされます)-ピッチ計算値は全体の1/12または.06ボタンの設計/配線-各チャネルに赤、青、緑の3つのLEDセット(それぞれ2つを並列に含む)-外部リセットボタン-曲の開始ボタン-充電のための中断曲* /// *********************************************** ***************宣言された整数constint ChargeButton =3; //(Nano D3)unoピン2は割り込みピンである必要がありますconst int StartButton =5; //(Nano D5)uno pin 4 const int BuzzerPin =9; //(Nano D9)uno pin 9 const int RedLED =6; //(Nano D6)uno pin 6 const int WhiteLED =7; //(Nano D7)uno pin 7 const int BlueLED =8; //(Nano D8)uno pin 8 int n =1000; //整数を宣言するこの値は曲ごとに変化しますintDurationOn =n; //後で整数を宣言することは、stacatto計算で使用されますint durationRest =n; //後で整数を宣言することはスタッカート計算で使用されます// xとyの合計は1でなければなりませんこれについては後でfloatx =.66に注意があります。 // float y =.34で時間のfloatを宣言します。 //時間オフのfloatを宣言します//ボタン入力を待機している間にライトがランダムに点滅する速度intTwinkle_Rate =250; //大幅に増やすと、ボタンが100%の時間応答しない可能性があることに注意してください//トゥインクルレートを低くすると、ボタンの押下応答が向上します//ボタンの状態に整数を設定しますint StartButtonState; int ChargeButtonState; //中央のCは4C(BフラットとEフラット)であることに注意してくださいint Note1 =233; // 3Bb 233Hz int Note2 =294; // 4D 294Hz int Note3 =330; // 4E 330Hz int Note4 =349; // 4F 349Hz int Note5 =392; // 4G 392Hz int Note6 =440; // 4A 440Hz int Note7 =466; // 4Bb 466Hz int Note8 =523; // 5C 523Hz int Note9 =587; // 5D 587Hz int Note10 =622; // 5Eb 622Hz int Note11 =698; // 5F 698Hz // ******************************************** ****************** Charge Function / Songvoid Charge(){n =600; //曲の進行速度//フォーマット:ピンを書き込み、特定の周波数でトーンを鳴らし(この方法では、//国歌の終わりで変更されません。これについては後で詳しく説明します)、同じ時間遅延します音楽を同期するためのトーン、//オンになっていたピンをオフに書き込み、残りの部分を遅らせるdigitalWrite(RedLED、HIGH);トーン(BuzzerPin、392、n / 3); delay(n / 3); digitalWrite(RedLED、LOW); delay(70); digitalWrite(WhiteLED、HIGH);トーン(BuzzerPin、523、n / 3); delay(n / 3); digitalWrite(WhiteLED、LOW); delay(70); digitalWrite(BlueLED、HIGH);トーン(BuzzerPin、659、n / 3); delay(n / 3); digitalWrite(BlueLED、LOW); delay(70); digitalWrite(RedLED、HIGH); digitalWrite(WhiteLED、HIGH); digitalWrite(BlueLED、HIGH);トーン(BuzzerPin、784、n * 3/4); delay(n * 3/4); digitalWrite(BlueLED、LOW); digitalWrite(RedLED、LOW); digitalWrite(WhiteLED、LOW); delay(70); digitalWrite(BlueLED、HIGH);トーン(BuzzerPin、659、n / 4); delay(n / 4); digitalWrite(BlueLED、LOW); delay(70); digitalWrite(RedLED、HIGH); digitalWrite(WhiteLED、HIGH); digitalWrite(BlueLED、HIGH);トーン(BuzzerPin、784、n * 2); delay(n * 2); digitalWrite(BlueLED、LOW); digitalWrite(RedLED、LOW); digitalWrite(WhiteLED、LOW); delay(70);} // ****************************************** ******************** SingleDW functionvoid SingleDWwithNote(int HZ、int TurnOn、int duration、int Staccato){//ノートが存在するヘルツ(ノート番号を参照)/ / turn on =ピン(赤/白/青のLED)//持続時間は、//スタッカート1 =はい、0 =いいえの場合、音符がわずかに短くなるか、intx値が高くなります。短い一時停止if(Staccato ==1){DurationOn =Duration * x;} //トーンとライトがオンになっている時間はDurationShortelse if(Staccato ==0){DurationOn =Duration;} digitalWrite(TurnOn、HIGH);トーン(BuzzerPin、HZ、DurationOn); delay(DurationOn); digitalWrite(TurnOn、LOW); if(Staccato ==1){DurationRest =duration * y; delay(DurationRest); }} // ********************************************** **************** USA National Anthem Function / Songvoid USNationalAnthem(){n =577; //サウンドの再生速度は次のように計算されます:60,000(ms / BPM係数)/ 104 BPM =577 ms / *四分音符の値はn * 2の8分音符の2分音符の値n / 2の点線の8分音符はn * 3です/ 4 * / // xとyの整数は、スタッカート/音符の後に休符を追加するためのものです// x + yは=1またはintでなければならないことに注意してください。 nレートはスローされます// xを減らし、yを増やしますが、ノートをより発音しやすく、ジャンプ/明るいx =.92にします。 //真のスタッカートは約1/2または2/3の値であるため、真のスタッカートのx値は約.5〜.7ですy =.08; //1.00-.92(x値)=。08 //バー1〜5、行1 SingleDWwithNote(Note4、RedLED、n * 3 / 4、1); SingleDWwithNote(Note2、WhiteLED、n / 4、1); SingleDWwithNote(Note1、RedLED、n、1); SingleDWwithNote(Note2、WhiteLED、n、1); SingleDWwithNote(Note4、RedLED、n、1); SingleDWwithNote(Note7、WhiteLED、n * 2、1); SingleDWwithNote(Note9、BlueLED、n * 3 / 4、1); SingleDWwithNote(Note8、WhiteLED、n / 4、1); SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note2、WhiteLED、n、1); SingleDWwithNote(Note3、BlueLED、n、1); SingleDWwithNote(Note4、RedLED、n * 2、1); SingleDWwithNote(Note4、RedLED、n / 2、1); SingleDWwithNote(Note4、RedLED、n / 2、1); // bar6-9行2SingleDWwithNote(Note9、BlueLED、n * 3 / 2、1); SingleDWwithNote(Note8、WhiteLED、n / 2、1); SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note6、BlueLED、n * 2、1); SingleDWwithNote(Note5、WhiteLED、n / 2、1); SingleDWwithNote(Note6、BlueLED、n / 2、1); SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note4、BlueLED、n、1); SingleDWwithNote(Note2、WhiteLED、n、1); SingleDWwithNote(Note1、BlueLED、n、1); SingleDWwithNote(Note4、RedLED、n * 3 / 4、1); SingleDWwithNote(Note2、WhiteLED、n / 4、1); //バー10-13行3SingleDWwithNote(Note1、RedLED、n、1); SingleDWwithNote(Note2、WhiteLED、n、1); SingleDWwithNote(Note4、RedLED、n、1); SingleDWwithNote(Note7、WhiteLED、n * 2、1); SingleDWwithNote(Note9、BlueLED、n * 3 / 4、1); SingleDWwithNote(Note8、WhiteLED、n / 4、1); SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note2、WhiteLED、n、1); SingleDWwithNote(Note3、BlueLED、n、1); SingleDWwithNote(Note4、RedLED、n * 2、1); SingleDWwithNote(Note4、RedLED、n / 2、1); SingleDWwithNote(Note4、RedLED、n / 2、1); //バー14-17、4行目、1ページ目の終わりSingleDWwithNote(Note9、BlueLED、n * 3 / 2、1); SingleDWwithNote(Note8、WhiteLED、n / 2、1); SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note6、BlueLED、n * 2、1); SingleDWwithNote(Note5、WhiteLED、n / 2、1); SingleDWwithNote(Note6、BlueLED、n / 2、1); SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note4、BlueLED、n、1); SingleDWwithNote(Note2、WhiteLED、n、1); SingleDWwithNote(Note1、RedLED、n、1); SingleDWwithNote(Note9、BlueLED、n / 2、1); SingleDWwithNote(Note9、BlueLED、n / 2、1); // 18〜21小節、5行目、2ページ目の始まりSingleDWwithNote(Note9、BlueLED、n、1); SingleDWwithNote(Note10、RedLED、n、1); SingleDWwithNote(Note11、WhiteLED、n、1); SingleDWwithNote(Note11、WhiteLED、n * 2、1); SingleDWwithNote(Note10、RedLED、n / 2、1); SingleDWwithNote(Note9、BlueLED、n / 2、1); SingleDWwithNote(Note8、WhiteLED、n、1); SingleDWwithNote(Note9、BlueLED、n、1); SingleDWwithNote(Note10、RedLED、n、1); SingleDWwithNote(Note10、RedLED、n * 2、1); SingleDWwithNote(Note10、RedLED、n、1); // 22〜25小節、6行目SingleDWwithNote(Note9、WhiteLED、n * 3 / 2、1); SingleDWwithNote(Note8、BlueLED、n / 2、1); SingleDWwithNote(Note7、WhiteLED、n、1); SingleDWwithNote(Note6、RedLED、n * 2、1); SingleDWwithNote(Note5、BlueLED、n / 2、1); SingleDWwithNote(Note6、RedLED、n / 2、1); SingleDWwithNote(Note7、WhiteLED、n、1); SingleDWwithNote(Note2、BlueLED、n、1); SingleDWwithNote(Note3、RedLED、n、1); SingleDWwithNote(Note4、WhiteLED、n * 2、1); SingleDWwithNote(Note4、RedLED、n、1); n =n * 1.08; // 60,000 / 96 bpm =625 ms;わずかな遅延// 26〜28小節、7行目SingleDWwithNote(Note7、WhiteLED、n、1); SingleDWwithNote(Note7、WhiteLED、n、1); SingleDWwithNote(Note7、WhiteLED、n / 2、1); SingleDWwithNote(Note6、BlueLED、n / 2、1); SingleDWwithNote(Note5、RedLED、n、1); SingleDWwithNote(Note5、RedLED、n、1); SingleDWwithNote(Note5、RedLED、n、1); SingleDWwithNote(Note8、WhiteLED、n、1); SingleDWwithNote(Note10、RedLED、n / 2、1); SingleDWwithNote(Note9、BlueLED、n / 2、1); SingleDWwithNote(Note8、WhiteLED、n / 2、1); SingleDWwithNote(Note7、RedLED、n / 2、1); //小節29-30SingleDWwithNote(Note7、RedLED、n、1); SingleDWwithNote(Note6、BlueLED、n * 2、1); // SingleDWwithNote(Note4、RedLED、n / 2、1);を保持するための2x SingleDWwithNote(Note4、RedLED、n / 2、1); SingleDWwithNote(Note7、BlueLED、n * 3 / 2、1); SingleDWwithNote(Note8、WhiteLED、n / 2、1); SingleDWwithNote(Note9、BlueLED、n / 2、1); SingleDWwithNote(Note10、RedLED、n / 2、1); n =n * 1.2; //大きなリタード// 31〜34小節の曲の終わりSingleDWwithNote(Note11、WhiteLED、n * 2、1); //無料のSingleDWwithNote(Note7、RedLED、n / 2、1);の追加ホールドSingleDWwithNote(Note8、WhiteLED、n / 2、1); SingleDWwithNote(Note9、BlueLED、n * 3 / 2、1); SingleDWwithNote(Note10、RedLED、n / 2、1); SingleDWwithNote(Note8、WhiteLED、n、1); SingleDWwithNote(Note7、RedLED、n * 3、1); // 3つの値のみを保持します// 3ステップですべての音符をレイズします//1.06音楽理論から導き出されます。ヘルツで音符を取り、//その下の音符で除算します(シャープとフラットは音符としてカウントされます)。//この次の段落を削除して周波数の変更を回避するか、Note1 =Note1が必要な場合は変更できます。 * 1.06 * 1.06 * 1.06; Note2 =Note2 * 1.06 * 1.06 * 1.06; Note3 =Note3 * 1.06 * 1.06 * 1.06; Note4 =Note4 * 1.06 * 1.06 * 1.06; Note5 =Note5 * 1.06 * 1.06 * 1.06; Note6 =Note6 * 1.06 * 1.06 * 1.06; Note7 =Note7 * 1.06 * 1.06 * 1.06; Note8 =Note8 * 1.06 * 1.06 * 1.06; Note9 =Note9 * 1.06 * 1.06 * 1.06; Note10 =Note10 * 1.06 * 1.06 * 1.06; Note11 =Note11 * 1.06 * 1.06 * 1.06;} // **************************************** ************************* Twinkle void Twinkle(int Twinkle_Time)//()に数字を入れると、きらめきが発生する時間を示します{//ビルドこの関数は別の用途のために使用されるため、不必要な計算が開始されます。//time&rateをより小さな整数に変更します。フロントエンドは、Twinkle_Time =Twinkle_Time / Twinkle_Rateを丸めます。 //この場合、TiwkleTimeは=to Twinkle Rateなので、値は1ですfor(Twinkle_Time; Twinkle_Time> 0; Twinkle_Time-)//値は1なので、1回だけ処理されます{int B =random(1,4); // 1、2、または3のランダム整数int C =random(1,4); // 1、2、または3のランダムな整数//両方の整数が同じである場合は問題ありません。1つのLEDが点灯し、ランダム性が増します//特定の色のLEDで実行するように各整数を評価しますif(B ==1){ digitalWrite(RedLED、HIGH);} if(B ==2){digitalWrite(WhiteLED、HIGH);} if(B ==3){digitalWrite(BlueLED、HIGH);} if(C ==1){digitalWrite( RedLED、HIGH);} if(C ==2){digitalWrite(WhiteLED、HIGH);} if(C ==3){digitalWrite(BlueLED、HIGH);} delay(Twinkle_Rate); // LEDをオンのままにします期間を設定します//次に、対応するLEDをローに書き込みます。コールドは単純化する可能性があり、3つすべてをローに書き込むだけでタイミングが速くなる可能性がありますif(B ==1){digitalWrite(RedLED、LOW);} if(B ==2){digitalWrite(WhiteLED、LOW);} if(B ==3){digitalWrite(BlueLED、LOW);} if(C ==1){digitalWrite(RedLED、LOW);} if(C ==2){digitalWrite(WhiteLED、LOW);} if(C ==3) {digitalWrite(BlueLED、LOW);}}} // ************************************* ************************* Setupvoid setup(){pinMode(ChargeButton、INPUT_PULLUP); //入力として入力し、ボタンの内部プルアップ抵抗を有効にしますpinMode(StartButton、INPUT_PULLUP); //入力として入力し、ボタンpinMode(RedLED、OUTPUT);の内部プルアップ抵抗を有効にします。 //出力として構成されたLEDpinMode(WhiteLED、OUTPUT); //出力として構成されたLEDpinMode(BlueLED、OUTPUT); //出力として構成されたLEDpinMode(BuzzerPin、OUTPUT); //出力として設定されたブザー// digitalWrite(ChargeButton、HIGH);プルアップとして有効になっているため、必要ありません。//digitalWrite(StartButton、HIGH);プルアップとして有効になっているため必要ありません。//冗長であるため、エラーを回避するためにすべてのLEDがLOWに設定されます。私の設計では、HIGH =ON、LOW =OFF digitalWrite(RedLED、LOW); digitalWrite(WhiteLED、LOW); digitalWrite(BlueLED、LOW); } // *********************************************** *************** Main Loopvoid loop(){//ボタンの状態を読み取り、ピンはハイに設定された内部抵抗にフックされました//押したときにピンはローになりますStartButtonState =digitalRead(StartButton); // low =press ChargeButtonState =digitalRead(ChargeButton); // low =press //整数に対してevaluesして、低いとして抵抗された最初の関数ピンを実行します//ボタンを読み取るためのサンプリングレートはint twinkle_rate(.25秒)if(StartButtonState ==LOW){USNationalAnthem();} else if(ChargeButtonState ==LOW){Charge();} else {Twinkle(Twinkle_Rate);} //ピンが押されていない場合は、きらめきます。もう一度...そしてまた...そしてまた...} 

回路図

ブレッドボードを使用した電気接続を表示します はんだ付けなしの配線接続を示します ワイヤーに従ってください! 各アイテムのコスト、合計コスト、および購入場所を表示します。

製造プロセス

  1. スイッチ付き回路
  2. ホリデーライト
  3. ローション付きティッシュ
  4. Acceed:4つのSFPポートを備えた12ポートギガビットスイッチ
  5. ラズベリーパイで温度を監視する
  6. FS2020用のArduinoを備えたスイッチ/ LEDパネル
  7. C++ Switch Case ステートメントと EXAMPLE
  8. C の switch…case (C の Switch ステートメント) と例
  9. Java Switch-Case 文と例
  10. MEP NationalNetwork™は、マイノリティが所有するメーカーと接続します
  11. プッシュボタンを使用したPWMによる調光ライト