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

スロットカーレーザートリガーラップタイムGLCDディスプレイ

コンポーネントと消耗品

>
Arduino Mega 2560
× 1
KY008レーザー
× 1

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

>
Arduino IDE

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

イントロ

KY008レーザーモジュールとそれに対応するセンサーのペアを購入しましたが、それを使ってクールなプロジェクトを作成する必要があることはわかっていました。そこでペアを取り、自動運転スロットカープロジェクトのテーブルにすでにあるスロットカートラック用の電気計時ゲートを作成しました。

ハードウェア

3つの主要コンポーネントは、レーザーモジュール、レーザーレシーバーセンサー、GLCDスクリーンです。

私はGLCDを使うのが大好きです。ピン配置に関する情報は、https://playground.arduino.cc/Code/GLCDks0108/

にあります。

そして、ここからライブラリをダウンロードできます:

https://bitbucket.org/bperrybap/openglcd

下の画像に示すように、私はそれのための素晴らしくて簡単なコネクタを作成しました。

<図>

KY008レーザーモジュールには、-、+、Sの3つのピンがあります。Sと+の両方を5Vに短縮します。レーザーを常にオンにしたくない場合は、SピンをArduinoのデジタルピンに接続します。高く設定すると、レーザーがオンになります。

センサーには、GND、VCC、SIGNALEの3つのピンもあります。 Arduinoの電源と入力ピンに接続します。

このビルドで最も困難な課題は、すべてを調整することでした。

<図>

このクリップで最終結果を見ることができます。


コード

  • 無題のファイル
無題のファイル Arduino
 / **タイムキーピングデジタルゲート*コード:Tal Ofer * [email protected] * /#include "openGLCD.h" // laps infounsigned long currentRunStartMillis; unsigned long lastRunInMillis; unsigned long bestRunInMillis; int currentLap; unsigned long savedMillis; gText t1; //ランタイムを後で定義しますgTextt2; //ランタイムを後で定義しますgTextt3; //後でランタイムを定義します// displayint sec_val、milli_valのグローバル; //レーザーゲートconstint gateSensorPin =2; //ゲートセンサーの番号pinintgateSensorState; // sensorintからの現在の読み取りlastgateSensorState =LOW; // Sensorunsigned longlastDebounceTimeからの前回の読み取り=0; //センサーピンが最後に切り替えられた時刻dintdebounceDelay =50; //デバウンス時間;出力がちらつく場合は増加しますsetup(){//ピンモードpinMode(gateSensorPin、INPUT); delay(50); //センサーとレーザーの動作を遅らせるため、ラップがトリガーされません。 // GLCDを開始しますGLCD.Init(NON_INVERTED); //領域を定義しますt1.DefineArea(textAreaTOP、lcdnums14x24); t2.DefineArea(0、GLCD.CenterY、8、2、fixednums7x15); t3.DefineArea(GLCD.CenterX、GLCD.CenterY、8、2、fixednums7x15); t3.SetFontColor(WHITE); //フォントの色を設定しますt3.ClearArea(); //テキストを印刷しますGLCD.SelectFont(System5x7); GLCD.CursorTo(1、4); GLCD.print( "LAST"); GLCD.CursorTo(11、4); GLCD.print( "BEST"); //パラメータをリセットcurrentRunStartMillis =0; lastRunInMillis =0; bestRunInMillis =0; currentLap =0;} void loop(){//レーザーセンサーの状態を読み取ります:int reading =digitalRead(gateSensorPin); //ノイズまたは押すことにより、スイッチが変更された場合:if(reading!=lastgateSensorState){//デバウンスタイマーをリセットしますlastDebounceTime =millis(); } // end if // ifがデバウンス時間を渡すif((millis()-lastDebounceTime)> debounceDelay){if(reading!=gateSensorState){gateSensorState =reading; //低くなった場合、これはビームが壊れたことを意味しますif(gateSensorState ==LOW){//ミリ秒を保存して、すべての計算が同じ値で行われるようにします。 savedMillis =millis(); //最初のラップでない場合if(currentLap>
 0){//最後の実行を保存lastRunInMillis =savedMillis --currentRunStartMillis; //最後の実行が速い場合は最良の実行if(lastRunInMillis 
 0){calcResultFromMillis(savedMillis --currentRunStartMillis、&sec_val、&milli_val); } else {calcResultFromMillis(0、&sec_val、&milli_val); } // end if // CURRENT RUN t1.CursorTo(3、0); //列と行はテキスト領域に相対的ですt1.Printf(F( "%02d。%03d")、sec_val、milli_val); //最後の実行calcResultFromMillis(lastRunInMillis、&sec_val、&milli_val); t2.CursorTo(1、1); //列と行はテキスト領域に相対的ですt2.Printf(F( "%02d。%03d")、sec_val、milli_val); // BEST RUN calcResultFromMillis(bestRunInMillis、&sec_val、&milli_val); t3.CursorTo(1、1); t3.Printf(F( "%02d。%03d")、sec_val、milli_val);} // wnd loop //ミリ秒を2つの値に計算し、displayvoid calcResultFromMillis(unsigned long value、int * sec_val、int * milli_val){* sec_val =int(value / 1000); * mili_val =value- * sec_val * 1000;} 

製造プロセス

  1. アルミニウムレーザーマーキングガイド
  2. レーザーマーキングガイド
  3. ファイバーレーザーマーキングとは何ですか?
  4. レーザーポインター
  5. ジェットコースター
  6. 半導体レーザー
  7. 固体レーザー
  8. 砂時計
  9. レーザー誘導ミサイル
  10. Kuman TFT 3.5 RetroPie 2018
  11. Rpibot –ロボット工学の学習について