수색…


서보 모터 제어

이 예제에서는 다음과 같은 특성을 가진 서보가 있다고 가정합니다.

  • 0도에서 180도 사이의 움직임
  • 20ms의 펄스주기
  • 최소 펄스 길이 0.5 ms
  • 최대 펄스 길이 2.5 ms

이러한 값이 하드웨어와 일치하는지 확인해야합니다. 지정된 작동 범위를 벗어나면 서보가 손상 될 수 있습니다. 차례대로 서보가 손상되면 Android Things 기기가 손상 될 수 있습니다. 예제 ServoController 클래스는 setup()setPosition() 의 두 가지 메소드로 구성됩니다.

public class ServoController {
    private double periodMs, maxTimeMs, minTimeMs;
    private Pwm pin;

    public void setup(String pinName) throws IOException {
        periodMs  = 20;
        maxTimeMs = 2.5;
        minTimeMs = 0.5;

        PeripheralManagerService service = new PeripheralManagerService();
        pin = service.openPwm(pinName);

        pin.setPwmFrequencyHz(1000.0d / periodMs);
        setPosition(90);
        pin.setEnabled(true);
    }

    public void setPosition(double degrees) {
        double pulseLengthMs = (degrees / 180.0 * (maxTimeMs - minTimeMs)) + minTimeMs;

        if (pulseLengthMs < minTimeMs) {
            pulseLengthMs = minTimeMs;
        } else if (pulseLengthMs > maxTimeMs) {
            pulseLengthMs = maxTimeMs;
        }

        double dutyCycle = pulseLengthMs / periodMs * 100.0;

        Log.i(TAG, "Duty cycle = " + dutyCycle + " pulse length = " + pulseLengthMs);

        try {
            pin.setPwmDutyCycle(dutyCycle);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

다음과 같이 장치에서 PWM을 지원하는 핀 이름을 찾을 수 있습니다.

PeripheralManagerService service = new PeripheralManagerService();

for (String pinName : service.getPwmList() ) {
    Log.i("ServoControlled","Pwm pin found: " + pinName);
}

서보가 80도에서 100도 사이에서 영원히 움직이게하려면 다음 코드를 사용하면됩니다.

final ServoController servoController = new ServoController(pinName);

Thread th = new Thread(new Runnable() {
    @Override
    public void run() {
        while (true) {
            try {
                servoController.setPosition(80);
                Thread.sleep(500);
                servoController.setPosition(100);
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
});
th.start();

서보 모터를 컴퓨팅 장치에 실제로 연결하지 않고도 위 코드를 모두 컴파일하고 배포 할 수 있습니다. 배선은 컴퓨팅 장치의 핀 출력 차트를 참조하십시오 (예 : Raspberry Pi3 핀아웃 차트는 여기에서 사용 가능).

그런 다음 서보를 Vcc, Gnd 및 신호에 연결해야합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow