2012-06-03 1 views
1

나는 방금 Arduino를 시작했고 고급스런 것들에 대해 더 이상 생각하지 못했습니다. 그것은 매우 직설적 인 것처럼 보입니다. 이제 저는 보통 두 개의 장치를 통합하는 것을 좋아하는 사람입니다. 그래서 컴퓨터의 키보드로 서보를 제어 할 수 있는지 또는 Arduino 보드에 연결된 두 개의 하드웨어 푸시 버튼을 제어 할 수 있는지 궁금합니다.키보드 또는 다른 하드웨어 버튼으로 서보를 제어 하시겠습니까?

도움이 될 경우, 저는 Arduino Uno 보드를 사용하고 있습니다. 여기에 이제

  1. 지금

    // Sweep 
    // by BARRAGAN <http://barraganstudio.com> 
    // This example code is in the public domain. 
    
    
    #include <Servo.h> 
    
    Servo myservo; // create servo object to control a servo 
          // a maximum of eight servo objects can be created 
    
    int pos = 0; // variable to store the servo position 
    
    void setup() 
    { 
        myservo.attach(11); // attaches the servo on pin 9 to the servo object 
    } 
    
    
    void loop() 
    { 
        for(pos = 0; pos < 45; pos += 1) // goes from 0 degrees to 180 degrees 
        {         // in steps of 1 degree 
        myservo.write(pos);    // tell servo to go to position in variable 'pos' 
        delay(10);      // waits 15ms for the servo to reach the position 
        } 
        for(pos = 45; pos>=1; pos-=1)  // goes from 180 degrees to 0 degrees 
        {         
        myservo.write(pos);    // tell servo to go to position in variable 'pos' 
        delay(10);      // waits 15ms for the servo to reach the position 
        } 
    } 
    
    에 내가 서보을 청소하기 위해 사용하고있는 예제 코드, 이제 내 컴퓨터의 키보드에있는 왼쪽/오른쪽 화살표 키를 눌러를 통해 서보의 각도 변경을 원 가정 해 봅시다. 그 일에 대해 내가 어떻게 에 가겠습니까?

  2. 달리, 난의 Arduino, 두 푸시 버튼 부착을 누르면 왼쪽 또는 오른쪽 버튼 을 따라 어느 서보 이동한다면 어떤. 어느 포트에 버튼을 연결합니까? 모든 코드 샘플 또는 다이어그램이 크게 도움이됩니다.

+0

http://arduino.cc/en/Tutorial/Button 저 찾고 계신가요? 컴퓨터 키보드를 사용하는 경우 Arduino 또는 Arduino에 연결된 컴퓨터에 직접 연결되어 있습니까? – howardh

+0

arduino는 컴퓨터에 연결되어 있습니다. 그리고 그 컴퓨터의 키보드에서 제어하려고합니다. 방정식에 하나의 컴퓨터 만. –

답변

1

컴퓨터에 연결된 arduino에 연결된 서보를 이동하려면 두 가지 구성 요소가 필요합니다.

키보드 명령을 받아들이고 직렬 포트를 통해 arduino에 명령을 보내려면 컴퓨터에 소프트웨어가 있어야합니다. 간단한 응용 프로그램을 아주 쉽게 작성할 수 있으므로 python이나 java와 같은 언어를 사용하는 것이 좋습니다.

자바를 사용하는 예를 보려면 playground link을 확인하십시오. 그리고 파이썬의 예제는 this project을 확인하십시오.

arduino에 내장 된 버그/기능으로 인해 계속 진행되는 동안 슬픔을 줄 수 있습니다. arduino는 USB를 통해 시리얼 연결이 이루어지면 자동으로 리셋되도록 설계되었습니다. This page에는 문제에 대한 자세한 설명이 나와 있으며 문제를 다루는 여러 가지 방법이 나와 있습니다.

arduino에서 스케치를 수정하여 직렬 포트를 듣고 컴퓨터에서받은 명령에 따라 서보의 위치를 ​​조정해야합니다. 위의 파이썬 링크를 확인하십시오. 그것은 당신이하려고하는 것과 매우 비슷한 것을하기 위해 고안된 완벽한 (하드웨어, PC 소프트웨어 및 arduino 스케치) 프로젝트입니다.

두 구성 요소 중 하나를 시작하여 시작하는 것이 좋습니다. 문제가 발생하면 코드를 게시하면 누군가가 더 도움이 될 것입니다.

두 번째 질문의 경우 arduino에 버튼을 추가하는 것이 매우 간단합니다. 디지털 입력에 연결합니다. 웹에는 수백 가지 예제가 있습니다. "arduino에 버튼 추가"를 검색하여 얻은 것을 확인하십시오. (권자 ... 130 만 히트). 여기서도 다시 시도해보고 자세한 내용을 게시하십시오.시리얼 통신을 사용 퍼티를 들어

+0

개념 증명을 위해 IDE와 함께 제공되는 Arduino 직렬 모니터로 직렬 명령을 보낼 수 있습니다. java/python 스크립트를 실행하기 전에 먼저 IDE로 시도해보십시오. – FoamyGuy

0


그 것이다 왼쪽 및 오른쪽 화살표 명령에 대한 크로스 플랫폼 직렬 및 SSH 클라이언트

:
화살표의에 대한 ASCII 문자가없는 :하지만 UTF-8이있다;
putty 또는 다른 클라이언트가 utf-8 문자를 기본 ASCII 문자로 전송하는 경우 utf-8과 ascii는 정확히 동일합니다.

arduino는 ASCII 문자 만 읽습니다.

아두 이노 읽
-> 27, 91,
< 67 - 27, 91, 68

그래서 그 읽어 간단하지 않다.

는 27 그래서 당신은 91, 97을 읽어 플러시 할 수는 플러시 할 때 엔 3 바이트를 보내 당신이

int pos = 0; 
Serial.flush(); // flush all received data 
while(Serial.avaialble()<3); // wait for the 3 ascii chars 
if(Serial.read()==27){ // first char 
    if(Serial.read()==91){ //second char 
    switch (Serial.read()){ 
     case 67: // Right arrow 
     myservo.write(++pos); // increment pos with 1 before write it 
     break; 
     case 68: // left arrow 
     myservo.write(--pos); // derement pos with 1 before write it 
     break; 
     case 65: // up arrow 
     myservo.write(++pos); // increment pos with 1 before write it 
     break; 
     case 66: // down arrow 
     myservo.write(--pos); // decrement pos with 1 before write it 
     break; 
     case default: 
     break; 
    } 
    } 
} 

같은 것을 사용할 수 있지만,이 때문에 화살표 캐릭터의 좋은 해결책 아니다 , 27;

작동하지 않습니다에, 그래서 그것은 당신이 5 아스키에서 화살표 명령을 뺄 수있는 알고리즘을 쓸 수없는 유효하지 않은 문자의

또는 왼쪽으로 이동하려면 4를 사용할 수 있으며 6 오른쪽으로 이동하는; ASCII 문자이며 숫자 키패드에는 해당 키에 그려진 화살표가 표시됩니다

관련 문제