제조공정
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 |
이 프로젝트를 게시한 수많은 웹사이트가 있으며 다양한 YouTube 채널에 게시되어 있으며 이 웹사이트에도 이러한 프로젝트가 몇 개 있을 수 있습니다. 그래서 솔직히 말해서 원래 아무것도 아닙니다. 하지만 더 간단하고 유익한 방식으로 설명하고 표시할 수 있습니다.
이 프로젝트의 주요 구성 요소는 매트릭스 키패드입니다. 다음과 같은 4x4 멤브레인 키패드를 사용했습니다.
키패드의 키는 기본적으로 푸시 버튼입니다. 이 버튼 스위치는 누르면 '닫히고' 힘이 풀리면 '열림'과 같은 자연스러운 상태로 돌아갑니다.
이것은 키패드가 내부적으로 행과 열로 연결되는 방식입니다. 1을 눌렀을 때 1열과 1행이 연결된다고 가정하자. 9를 누르면 r3과 c3이 함께 연결됩니다.
스캔은 출력으로 구성된 4개의 키와 입력으로 구성된 4개의 키를 사용하여 수행됩니다. 입력 풀업 저항을 사용하여 모든 열을 입력으로 만들고 모든 행을 출력으로 만들었습니다. 프로그래밍을 사용하면 모든 행이 1초에 여러 번 LOW가 됩니다. 따라서 키를 누르면 해당 열이 LOW가 됩니다. 모든 열이 연결된 입력 핀의 상태를 여러 번 읽습니다. LOW 상태를 읽을 때마다 해당 열의 키가 눌렸다는 의미입니다. 특정 행이 낮고 동시에 특정 열이 낮으면 누른 키를 판별합니다.
예를 들어 1을 누르면 열 1이 낮아집니다. 그리고 각 행이 너무 빨리 LOW로 만들어지기 때문에 하나씩 키를 아주 짧게 눌러도 1행이 언젠가는 LOW로 발견되고 1이 눌린 것으로 판단됩니다. row1==low &&column1==low이면 1을 눌렀다는 뜻입니다.
이는 코드 1에 표시됩니다. . 이 코드는 stm32 보드에 업로드하고 싶었고 KEYPAD 라이브러리가 호환되지 않았기 때문에 직접 작성했습니다. 이 코드를 사용하면 위에서 설명한 내용을 이해할 수 있습니다. 또는 단순히 키패드 라이브러리를 사용하고 'customkeypad' 예제를 실행할 수 있습니다. 둘 다 같은 목적을 수행할 것입니다. 그러나 그 코드는 작동을 설명하지 않습니다.
시리얼 모니터를 사용하여 누르는 각 키가 화면에 표시됩니다. 이것은 동영상 1에 표시됩니다. .
키 결정이 제대로 작동하면 암호를 작업할 시간입니다. 너무 간단합니다. 내가 한 것은 - 문자열 "1234"를 만든 것입니다. 제가 설정한 비밀번호입니다. 이제 다른 배열을 만들었습니다. 키 값이 무엇이든 이 배열에 저장됩니다. count가 4에 도달하면 두 문자열이 모두 비교됩니다. 일치하면 암호가 정확하고 그렇지 않으면 정확하지 않습니다. 이는 코드 2에 표시됩니다. . 11번 핀에 LED를 연결했습니다. 비밀번호가 맞으면 불이 들어오도록 했습니다. 동영상 2에 나와 있습니다. .
이제 잠금으로 사용할 구성 요소:12V 선형 액추에이터. 이렇게 생겼습니다.
이것은 일반적으로 '모터 드라이버' IC로 알려진 L293d IC를 사용하여 작동됩니다. 이 IC는 12v 전원에 연결됩니다. Arduino, 즉 5v 입력에서 입력을 받고 12v를 출력 핀(액츄에이터가 연결된)으로 출력합니다. 따라서 비밀번호가 정확하면 핀 11은 높게 설정되고 핀 12는 낮게 설정됩니다. 핀 11과 12는 l293d의 입력에 연결됩니다. 따라서 액추에이터가 안쪽으로 당겨지고 문이 열립니다. 동영상 3에 표시됨 .
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">int rows=4;int columns=4;char readkey(void);char nfunc(void);#define c3 9#define c2 8#define c1 7#define c0 6#define r3 5#define r2 4 #define r1 3#define r0 2void setup() { Serial.begin(9600); 핀모드(c0,INPUT_PULLUP); 핀모드(c1,INPUT_PULLUP); 핀모드(c2,INPUT_PULLUP); 핀모드(c3,INPUT_PULLUP); 핀모드(r0, 출력); 핀모드(r1, 출력); 핀모드(r2,출력); 핀모드(r3, 출력); 핀모드(11, 출력); pinMode(12,OUTPUT);}문자 읽기 키(void){digitalWrite(r0,LOW);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);return '1';}else if(digitalRead(c1)==LOW){delay(500);return '2';}else if(digitalRead(c2)==LOW){지연 (500);return '3';}else if(digitalRead(c3)==LOW){delay(500);return 'A';}digitalWrite(r0,HIGH);digitalWrite(r1,LOW);digitalWrite(r2 ,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);return '4';}else if(digitalRead(c1)==LOW){delay(500); return '5';} else if(digitalRead(c2)==LOW){delay(500); return '6';}else if(digitalRead(c3)==LOW){delay(500);return 'B';}digitalWrite(r0,HIGH);digitalWrite(r1,HIGH);digitalWrite(r2,LOW); digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);return '7';}else if(digitalRead(c1)==LOW){delay(500);return '8';}else if (digitalRead(c2)==LOW){delay(500);return '9';}else if(digitalRead(c3)==LOW){delay(500);return 'C';}digitalWrite( r0,HIGH);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,LOW);if(digitalRead(c0)==LOW){delay(500);return '*';}else if (digitalRead(c1)==LOW){delay(500);return '0';}else if(digitalRead(c2)==LOW){delay(500);return '#';}else if(digitalRead(c3) )==낮음){지연(500);return 'D';}return 'o';}char nfunc(void){ char key='o'; while(key=='o') key=readkey();반환 키;}무효 루프(){char key1=nfunc();if(key1){ Serial.print(key1);}}
int rows=4;int columns=4;int count=0;char readkey(void);char nfunc(void);#define c3 9#define c2 8#define c1 7#define c0 6#define r3 5#define r2 4#define r1 3#define r0 2char password[5]="1234";char typed[5];void setup() { Serial.begin(9600); 핀모드(c0,INPUT_PULLUP); 핀모드(c1,INPUT_PULLUP); 핀모드(c2,INPUT_PULLUP); 핀모드(c3,INPUT_PULLUP); 핀모드(r0, 출력); 핀모드(r1, 출력); 핀모드(r2,출력); 핀모드(r3, 출력); 핀모드(11, 출력); pinMode(12,OUTPUT);}문자 읽기 키(void){digitalWrite(r0,LOW);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);return '1';}else if(digitalRead(c1)==LOW){delay(500);return '2';}else if(digitalRead(c2)==LOW){지연 (500);return '3';}else if(digitalRead(c3)==LOW){delay(500);return 'A';}digitalWrite(r0,HIGH);digitalWrite(r1,LOW);digitalWrite(r2 ,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);return '4';}else if(digitalRead(c1)==LOW){delay(500); return '5';} else if(digitalRead(c2)==LOW){delay(500); return '6';}else if(digitalRead(c3)==LOW){delay(500);return 'B';}digitalWrite(r0,HIGH);digitalWrite(r1,HIGH);digitalWrite(r2,LOW); digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);return '7';}else if(digitalRead(c1)==LOW){delay(500);return '8';}else if (digitalRead(c2)==LOW){delay(500);return '9';}else if(digitalRead(c3)==LOW){delay(500);return 'C';}digitalWrite( r0,HIGH);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,LOW);if(digitalRead(c0)==LOW){delay(500);return '*';}else if (digitalRead(c1)==LOW){delay(500);return '0';}else if(digitalRead(c2)==LOW){delay(500);return '#';}else if(digitalRead(c3) )==낮음){지연(500);return 'D';}return 'o';}char nfunc(void){ char key='o'; while(key=='o') key=readkey();반환 키;}void 루프(){char key1=nfunc();if(key1){typed[count]=key1; 카운트++; Serial.print(key1);}if(count==4){if(strcmp(typed,password)==0){ Serial.println("정확한"); 디지털 쓰기(11, 높음); 디지털 쓰기(12,LOW); 지연(250); digitalWrite(11,LOW);}else{ Serial.println("침입자");}count=0;}}섹션>
제조공정
이 튜토리얼에서는 Arduino 기반 RC Hovercraft를 구축하는 방법을 배웁니다. 프로펠러를 포함한 호버크라프트 부품의 설계 및 3D 프린팅부터 전자 부품 연결 및 Arduino 프로그래밍까지 전체 제작 과정을 보여드리겠습니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. 개요 호버크라프트를 제어하기 위해 이전 비디오 중 하나에서 만든 DIY Arduino 기반 RC 송신기를 사용했습니다. 오른쪽 조이스틱은 스러스트 모터 후면에 러더를 위치시키기 위한 서보 모터를 제어하기 위해 설정하고, 전위차계
현재 인터넷 기술의 빠른 발전은 이메일, 온라인 지불 및 개인 커뮤니케이션의 방대한 적용을 목격합니다. 이러한 배경에서 정보 보안은 전 세계적으로 중요한 연구 주제였습니다. PKI(Public Key Infrastructure) 기술은 공개키 이론과 기술을 이용하여 보안 서비스를 제공합니다. PCIE(Peripheral Component Interface Express) 기술은 직렬 데이터 전송 및 점대점 상호 연결 기술을 적용한 3세대 I/O 버스 표준으로 고속 장치에서 폭넓게 응용되고 있습니다. 디지털 시스템 설계 분야에서 상대