제조공정
![]() |
| × | 1 | |||
| × | 1 |
![]() |
|
소개
나는 한 쌍의 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의 전원과 입력 핀에 연결합니다.
이 빌드에서 가장 어려운 문제는 모든 것을 정렬하는 것이었습니다.
이 클립에서 최종 결과를 볼 수 있습니다.
/** 시간 유지 디지털 게이트* 코드 작성자: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;}
제조공정
구성품 및 소모품 Arduino UNO × 1 초음파 센서 - HC-SR04(일반) × 1 Adafruit 128X64 LED LCD OLED × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보 OLED 화면 사용 방법 여기에 대한 이전 자습서가 있습니다. #포함 및 #define , setup(): 실행 전 #include //OLED를 위한 모든 불쾌한 라이브러리가 필요합니다.#inclu
구성품 및 소모품 Arduino Mega 2560 모든 arduino가 작동해야 합니다. × 1 4자리 7세그먼트 표시 × 1 푸시 버튼 × 4 부저 × 1 점퍼 와이어(일반) × 21 무납땜 브레드보드 전체 크기 × 1 이 프로젝트 정보 카운트다운 타이머는 아마도 4자리 7세그먼트 디스플레이를 위한 가장 자연스러운 프로젝트일 것입니다. 온라인에서 사용할 수 있는 것을 탐색하는 동안 여러 프로젝트를