산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

슬롯카 레이저 트리거 랩 타임 GLCD 디스플레이

구성품 및 소모품

Arduino Mega 2560
× 1
KY 008 레이저
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

소개

나는 한 쌍의 KY008 레이저 모듈과 일치하는 센서를 구입했고, 그것으로 멋진 프로젝트를 만들어야 한다는 것을 알고 있었습니다. 그래서 한 쌍을 가져 와서 내 자동 운전 슬롯 카 프로젝트를 위해 이미 테이블에 있던 슬롯 카 트랙에 대한 전자 시간 측정 게이트를 만들었습니다.

하드웨어

3가지 주요 구성 요소는 레이저 모듈, 레이저 수신기 센서 및 GLCD 화면입니다.

저는 GLCD를 사용하는 것을 정말 좋아합니다. 여기에서 핀아웃에 대한 정보를 찾을 수 있습니다. https://playground.arduino.cc/Code/GLCDks0108/

여기에서 라이브러리를 다운로드할 수 있습니다.

https://bitbucket.org/bperrybap/openglcd

아래 이미지와 같이 멋지고 쉬운 커넥터를 만들었습니다.

KY008 레이저 모듈에는 3개의 핀, -, + 및 S가 있습니다. 저는 S와 +를 모두 5V로 줄입니다. 레이저가 항상 켜져 있는 것을 원하지 않으면 S 핀을 Arduino의 디지털 핀에 연결하십시오. 높게 설정하면 레이저가 켜집니다.

센서에는 GND, VCC 및 SIGNALE의 3 핀도 있습니다. Arduino의 전원과 입력 핀에 연결합니다.

이 빌드에서 가장 어려운 문제는 모든 것을 정렬하는 것이었습니다.

이 클립에서 최종 결과를 볼 수 있습니다.


<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 제목 없는 파일
  • 제목 없는 파일Arduino
    /** 시간 유지 디지털 게이트* 코드 작성자:Tal Ofer* [email protected]*/#include "openGLCD.h"// laps infounsigned long currentRunStartMillis;unsigned long lastRunInMillis;unsigned long bestRunInMillis;int currentLap;unsigned 오래 저장됨Millis;gText t1; // 런타임을 나중에 정의합니다.gText t2; // 런타임을 나중에 정의합니다.gText t3; // 나중에 런타임을 정의합니다. // displayint sec_val, milli_val에 대한 전역;// laser gate const int gateSensorPin =2; // 게이트 센서의 번호 pinint gateSensorState; // sensorint lastgateSensorState =LOW; // sensorunsigned의 이전 판독값 long lastDebounceTime =0; // 마지막으로 센서 핀이 토글된 시간dint debounceDelay =50; // 디바운스 시간; 출력이 깜박이면 증가합니다. setup() { // 핀 모드 pinMode(gateSensorPin, INPUT); 지연(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(화이트); // 글꼴 색상 설정 t3.ClearArea(); // 텍스트 인쇄 GLCD.SelectFont(System5x7); GLCD.CursorTo(1, 4); GLCD.print("마지막"); GLCD.CursorTo(11, 4); GLCD.print("최고"); // 매개변수 재설정 currentRunStartMillis =0; lastRunInMillis =0; bestRunInMillis =0; currentLap =0;}void loop(){ // 레이저 센서의 상태를 읽습니다. int reading =digitalRead(gateSensorPin); // 노이즈 또는 누름으로 인해 스위치가 변경된 경우:if (reading !=lastgateSensorState) { // 디바운싱 타이머 재설정 lastDebounceTime =millis(); } //end if // 디바운스 시간이 지나면 if ((millis() - lastDebounceTime)> debounceDelay) { if (reading !=gateSensorState) { gateSensorState =reading; // 낮게 갔다면 빔이 끊어졌음을 의미합니다. if (gateSensorState ==LOW) { // 모든 수학이 동일한 값으로 수행되도록 밀리초를 저장합니다. saveMillis =millis(); // 첫 번째 랩이 아닌 경우 if (currentLap>
     0) { // 마지막 실행을 저장합니다. lastRunInMillis =saveMillis - currentRunStartMillis; // 마지막 실행이 더 빠른 경우 가장 좋은 실행 if (lastRunInMillis 
     0) { calcResultFromMillis(savedMillis - currentRunStartMillis, &sec_val, &milli_val); } else { calcResultFromMillis(0, &sec_val, &milli_val); } //현재 실행 중이면 // 종료 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); // 베스트 런 calcResultFromMillis(bestRunInMillis, &sec_val, &milli_val); t3.CursorTo(1, 1); t3.Printf(F("%02d.%03d"), sec_val, milli_val);} //wnd 루프 // displayvoid calcResultFromMillis(unsigned long value, int *sec_val, int * 밀리 발) { *sec_val =int(값 / 1000); *milli_val =값 - *sec_val * 1000;}

    제조공정

    1. 알루미늄 레이저 마킹 가이드
    2. 레이저 마킹 가이드
    3. 파이버 레이저 마킹이란 무엇입니까?
    4. 레이저 포인터
    5. 롤러코스터
    6. 반도체 레이저
    7. 고체 레이저
    8. 모래시계
    9. Kuman TFT 3.5 RetroPie 2018
    10. Rpibot – 로봇 공학 학습 정보