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

arduino를 사용한 소나 및 IDE 처리 시 표시

구성품 및 소모품

Arduino UNO
× 1
SG90 마이크로 서보 모터
× 1
초음파 센서 - HC-SR04(일반)
× 1
점퍼 와이어(일반)
× 1
무납땜 브레드보드 전체 크기
× 1

필요한 도구 및 기계

뜨거운 글루건(일반)
납땜 인두 키트, SolderPro 150

앱 및 온라인 서비스

Arduino IDE
처리 기반 처리

이 프로젝트 정보

안녕하세요 여러분 장애물회피차를 만들어보자는 제의를 받았지만 만들기엔 너무 흔하고 비현실적이라 생각해서 장애물회피차의 서보와 HC-SR04 센서의 개념을 이용하여 소나를 만들어보기로 했습니다.

나는 tft lcd 화면이 없었기 때문에 소나의 출력을 표시하는 방법을 몰랐습니다. 그런 다음 처리 IDE를 사용하여 내 PC에 소나의 출력을 좋은 해상도로 표시할 수 있다고 생각했습니다! 하지만 IDE를 처리하는 것이 처음이었으므로 나는 그것을 사용하는 것을 몰랐기 때문에 연습을 위해 Ide와 일부 라이브러리를 처리하여 수중 음파 탐지기의 출력을 읽고 PC에 표시하는 데 사용한 것보다 p5 웹 편집기(연습용)를 사용했습니다!

초음파 센서가 서보와 함께 회전하고 180도 범위를 커버하도록 핫 글루건을 사용하여 서보 모터에 초음파 센서를 부착한 다음 처리 IDE에서 물체 감지 여부를 출력하고 다음 코드를 추가로 작성했습니다. 거리와 각도를 정확하게 표시합니다!

친구 여러분의 프로젝트에서 이미지를 참조로 사용할 수 있는 것처럼 보이는 IDE 처리 출력도 공유했습니다. :)

조립과 출력이 어떻게 보이는지 알기에 출력 영상만 남아서 영상을 끝까지 시청하시면 출력을 더 제대로 이해하실 수 있습니다.

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

코드

<울>
  • arduino IDE용 소나 코드
  • IDE 처리를 위한 소나 코드
  • arduino IDE용 소나 코드C/C++
    #include const int trigPin=12;const int echoPin=11;long duration;int distance;Servo s1;void setup() { Serial.begin(9600); 핀모드(trigPin,OUTPUT); 핀모드(에코핀,입력); s1.attach(9);}무효 루프(){ for(int i=0;i<180;i=i+1){ s1.write(i); 지연(30); 거리 =calDist(); Serial.print(i); Serial.print(","); Serial.print(거리); Serial.print("."); } for(int i=180;i>0;i=i-1){ s1.write(i); 지연(30); 거리 =calDist(); Serial.print(i); Serial.print(","); Serial.print(거리); Serial.print("."); }} int calDist(){ digitalWrite(trigPin, LOW); 지연 마이크로초(2); digitalWrite(trigPin, HIGH); 지연마이크로초(10); digitalWrite(trigPin, LOW); 지속 시간 =pulseIn(echoPin, HIGH); 거리=지속시간*0.034/2; 반환 거리;}
    IDEJava 처리를 위한 소나 코드
    <사전>가져오기 processing.serial.*; 직렬 myPort; String ang="";String distance="";String data="";int angle, dist;void setup() { 크기(2000,800); myPort =new Serial(this,"COM3", 9600); myPort.bufferUntil('.'); background(0);}무효 그리기() { 채우기(0,5); 노스트로크(); rect(0, 0, 너비, 높이*0.93); 노스트로크(); 채우기(0,255); rect(0, 높이*0.93, 너비, 높이); 드로레이더(); 그리기선(); 그리기 개체(); drawText();} 무효 serialEvent(직렬 myPort) { 데이터 =myPort.readStringUntil('.'); 데이터 =data.substring(0,data.length()-1); int index1 =data.indexOf(","); ang=data.substring(0, index1); 거리=data.substring(index1+1, data.length()); 각도 =int(ang); 거리 =int(거리); System.out.println(각도);}무효 drawRadar(){ pushMatrix(); 채우기(); 스트로크 무게(0.5); 뇌졸중(10,255,10); 번역(너비/2, 높이-높이*0.06); 라인(-너비/2,0,너비/2,0); 호(0,0,(폭*0.5),(폭*0.5),PI,TWO_PI); 호(0,0,(폭*0.25),(폭*0.25),PI,TWO_PI); 호(0,0,(폭*0.75),(폭*0.75),PI,TWO_PI); 호(0,0,(폭*0.95),(폭*0.95),PI,TWO_PI); line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30))); line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60))); line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90))); line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120))); line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150))); 뇌졸중(175,255,175); line(0,0,(-width/2)*cos(radians(15)),(-width/2)*sin(radians(15))); line(0,0,(-width/2)*cos(radians(45)),(-width/2)*sin(radians(45))); line(0,0,(-width/2)*cos(radians(75)),(-width/2)*sin(radians(75))); line(0,0,(-width/2)*cos(radians(105)),(-width/2)*sin(radians(105))); line(0,0,(-width/2)*cos(radians(135)),(-width/2)*sin(radians(135))); line(0,0,(-width/2)*cos(radians(165)),(-width/2)*sin(radians(165))); popMatrix();}무효 drawLine() { pushMatrix(); 스트로크 무게(9); 스트로크(0,255,0); 번역(너비/2, 높이-높이*0.06); line(0,0,(width/2)*cos(radians(angle)),(-width/2)*sin(radians(angle))); popMatrix();}무효 drawObject() { pushMatrix(); 스트로크 무게(9); 스트로크(255,0,0); 번역(너비/2, 높이-높이*0.06); float pixleDist =(dist/40.0)*(너비/2.0); float pd=(너비/2)-pixleDist; float x=-pixleDist*cos(라디안(각도)); float y=-pixleDist*sin(라디안(각도)); if(dist<=40){ line(-x,y,-x+(pd*cos(radians(angle))),y-(pd*sin(radians(angle)))); } popMatrix();}무효 drawText(){ pushMatrix(); 채우기(100,200,255); 텍스트 크기(25); text("10cm",(너비/2)+(너비*0.115),높이*0.93); text("20cm",(너비/2)+(너비*0.24),높이*0.93); text("30cm",(너비/2)+(너비*0.365),높이*0.93); text("40cm",(너비/2)+(너비*0.45),높이*0.93); if(dist<=40) { text("거리:"+dist,width*0.7,height*0.99); } 번역(너비/2, 높이-높이*0.06); 텍스트 크기(25); text(" 30",(너비/2)*cos(라디안(30)),(-너비/2)*sin(라디안(30))); 텍스트("60",(폭/2)*cos(라디안(60)),(-너비/2)*sin(라디안(60))); text("90",(width/2)*cos(radians(91)),(-width/2)*sin(radians(90))); text("120",(width/2)*cos(radians(123)),(-width/2)*sin(radians(118))); text("150",(width/2)*cos(radians(160)),(-width/2)*sin(radians(150))); 팝매트릭스(); }

    회로도


    제조공정

    1. TinyML-Language Detector 기반 Edge Impulse 및 Arduino
    2. MPU-6050을 사용한 Arduino 자이로스코프 게임
    3. Arduino 디지털 주사위
    4. ARDUINO를 사용하는 초음파 부상 기계
    5. Arduino와 스마트폰을 사용한 DIY 전압계
    6. 온도 및 습도 데이터 로거
    7. IOT - ESP8266, Arduino 및 초음파 센서를 사용하는 스마트 항아리
    8. Arduino + Processing + PHP를 사용한 자동차 카운터
    9. 볼트와 Arduino를 사용하여 LED 밝기 제어
    10. Arduino 및 Processing IDE를 사용하여 나침반을 만드는 방법