제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
며칠 동안 집을 비울 때 고양이에게 먹이를 주는 것은 항상 큰 도전입니다. 친구나 친척에게 고양이를 돌봐달라고 부탁해야 합니다. 인터넷에서 해결책을 찾다가 반려동물용 디스펜서 제품을 많이 찾았지만 마음에 들지 않았습니다. 첫째, 그들은 매우 비쌉니다. 둘째, 고양이용 건사료를 취급하는 데만 적합합니다(mycat은 대부분 습식사료를 먹습니다). 마지막으로, 그것들은 너무 커서 내 아파트에 공간이 많지 않습니다. 그래서 나는 소형의 자동 습식 사료에 최적화된 고양이 사료 공급기를 만들기로 결정했습니다. 젖은 음식의 문제는 매우 빨리 상한다는 것입니다. 고양이 사료 통조림을 개봉한 후 최대 1일 동안 사용할 수 있다는 것을 깨달았습니다. 공간을 절약하고 음식의 품질을 유지하고 이 프로젝트를 가능한 한 저렴하고 간단하게 만들기 위해 애완 동물에게 한 끼만 제공할 수 있는 기계를 설계했습니다. 고양이 먹이는 일(자유:)에서 이틀을 쉬게 됩니다.
피더는 매우 간단하게 작동합니다. 나는 음식 용기(빈 요구르트 상자)에 음식을 채우고 용기의 문을 닫고 콘센트 타이머가 있는 케이블을 230VAC 네트워크에 연결합니다. 하루가 지나면 피더의 전원이 켜지도록 타이머를 설정했습니다. 기기의 전원이 켜지면 식품 용기가 서보 모터에 의해 열립니다. 하루가 지나면 문이 열리고 고양이가 좋은 식사를 할 수 있습니다. 집에 도착하면 음식 용기를 꺼내서 남은 음식을 정리하고 신선한 음식으로 채운 다음 다시 넣고, 상자의 상단을 닫으면 사이클이 다시 시작됩니다.…
모든 주요 단계는 다음 동영상에서 볼 수 있습니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
// 자동 고양이 사료 공급기 제작:J. Rundhall//스테퍼의 원본 코드:R. Jordan Kreindler가 2016년 10월에 작성한 스케치, 회전 float RPM;boolean isButtonpressed =false;unsigned long timee;// 핀 할당int buttonPIN =6;int aPin =4; //IN1:코일 a 1 endint bPin =3; //IN2:코일 b 1 endint aPrimePin =5; //IN3:코일 aPrime 코일의 다른 쪽 끝 aint bPrimePin =2; //IN4:코일 bPrime 코일의 다른 쪽 끝 bint one =aPin;int two =bPin;int three =aPrimePin;int four =bPrimePin;int도 =0;//int delay1 =20; // 각 단계 간의 지연(밀리초 단위)sint delay1 =5; // 각 단계 간의 지연(밀리초)//int delay2 =50; // 전체 회전 후 지연(밀리초 단위)sint delay2 =200; // 전체 회전 후 지연(밀리초 단위) count =0; // 단계 수int numberOfRotations =1; // 회전자가 360도 회전한 횟수// 360도.void setup() {// 모든 핀을 출력으로 설정하여 Arduino// UNO의 출력 신호를 statorSerial.begin(9600)의 코일 권선으로 보냅니다. // 직렬 포트를 열고 데이터 속도를 9600bps로 설정합니다. pinMode(6, INPUT_PULLUP); //ButtonpinMode(aPin, OUTPUT);pinMode(bPin, OUTPUT);pinMode(aPrimePin, OUTPUT);pinMode(bPrimePin, OUTPUT);Serial.println(" 시계 방향");// 모든 코일로 시작 offdigitalWrite(aPin, LOW );digitalWrite(bPin, LOW);digitalWrite(aPrimePin, LOW);digitalWrite(bPrimePin, LOW);for(int ii=0;ii<20;ii++) doTurn();}void loop() { //읽기 푸시버튼 값을 변수로 int sensorVal =digitalRead(6); // 풀업은 푸시 버튼의 논리가 반전되었음을 의미합니다. // 열리면 HIGH가 되고 눌려지면 LOW가 됩니다. // 버튼이 눌렸을 때 13번 핀을 켜고, 누르지 않았을 때 끕니다. if (sensorVal ==LOW) { isButtonpressed =true; } else { if(isButtonpressed) { isButtonpressed =거짓; 도턴(); 디지털 쓰기(핀, 낮음); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); } }}void doTurn(){ // 전류를 // 1. aPin // 2. aPin 및 bPin // 3. bPin // 4. 그런 다음 bPin 및 aPrimePin // 5로 보냅니다. 그런 다음 aPrimePin으로 // 6. 그런 다음 aPrimePin 및 bPrime Pin으로 // 7. 그런 다음 bPrimePin으로 // 8. 그런 다음 bPrimePin 및 aPin. // 따라서 반스텝 방식을 사용하여 스텝을 생성합니다. // 1. aPin을 High로 설정합니다. digitalWrite(aPin, HIGH); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서, delay1 // 2. aPin과 bPin을 HIGH로 활성화합니다. digitalWrite(aPin, HIGH); 디지털 쓰기(bPin, HIGH); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 3. bPin을 High로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, HIGH); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 4. bPin과 aPrimePin을 HIGH로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, HIGH); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 5. aPrime 핀을 high로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 6. aPrimePin과 bPrime Pin을 HIGH로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, HIGH); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 milliseconds // 7. bPrimePin을 HIGH로 설정합니다. digitalWrite(aPin, LOW); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HIGH); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 그래서, delay1 milliseconds // 8. bPrimePin과 aPin을 HIGH로 설정합니다. digitalWrite(aPin, HIGH); 디지털 쓰기(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HIGH); // 코일에 전원을 공급하는 사이에 약간의 지연을 허용하여 // 스테퍼 로터 시간이 응답할 수 있도록 합니다. 지연(delay1); // 따라서 delay1 밀리초 count =count + 8; 도 =(360.0 * (카운트 / 400.0)); if ((numberOfRotations % 2) ==1) { // 회전수가 짝수인지 확인 Serial.println(" Clockwise "); Serial.println(도); // 각도 위치를 도 단위로 출력 } else { // numberOfRotations가 홀수인 경우 Serial.println(" Anti-Clockwise "); 도 =360 - 도; Serial.print(" -"); // 빼기 기호를 출력합니다. Serial.println(degrees); // 각도 위치를 도 단위로 출력 } if (count ==160) { // 스테퍼의 전체 회전 numberOfRotations =++numberOfRotations; timee =밀리(); RPM =timee / numberOfRotations; // 평균 회전 시간 RPM =(60000.00 / RPM); // 분당 회전 수 if (numberOfRotations>=10) { Serial.print("RPM:"); Serial.println(라운드(RPM)); //RPM을 정수로 출력 } delay(delay2); // 각 전체 회전 후 delay2/1000초 카운트 =0; // 스텝 카운터를 0으로 재설정 // 각 회전 후 방향을 반대로 if ((numberOfRotations) % 2 ==0) { // 회전 수가 짝수인지 확인 // 그렇다면 반대 방향 aPin =4; bPin =3; aPrimePin =2; bPrimePin =1; } else { // 회전수가 홀수인 경우 aPin =1; bPin =2; aPrimePin =3; bPrimePin =4; } 디지털 쓰기(핀, 낮음); 디지털 쓰기(b핀, 낮음); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); } }섹션>
제조공정
이 튜토리얼에서는 Arduino 기반 RC Hovercraft를 구축하는 방법을 배웁니다. 프로펠러를 포함한 호버크라프트 부품의 설계 및 3D 프린팅부터 전자 부품 연결 및 Arduino 프로그래밍까지 전체 제작 과정을 보여드리겠습니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. 개요 호버크라프트를 제어하기 위해 이전 비디오 중 하나에서 만든 DIY Arduino 기반 RC 송신기를 사용했습니다. 오른쪽 조이스틱은 스러스트 모터 후면에 러더를 위치시키기 위한 서보 모터를 제어하기 위해 설정하고, 전위차계
튜토리얼에서 우리는 DIY Arduino RC 송신기를 만드는 방법을 배울 것입니다. 종종 내가 만드는 프로젝트에 무선 제어가 필요하므로 거의 모든 작업에 사용할 수 있는 이 다기능 라디오 컨트롤러를 만들었습니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. 개요 이제 수신기 측에서 약간의 조정만 하면 모든 Arduino 프로젝트를 무선으로 제어할 수 있습니다. 이 송신기는 RC 장난감, 자동차, 드론 등을 제어하기 위한 상업용 RC 송신기로도 사용할 수 있습니다. 이를 위해서는 상용 RC 장치를 제어하기