Raspberry Pi 3 Model B+ : SG-90 서보 모터 제어

OS/Raspberry Pi 2018.07.08 02:29 Posted by 파란크리스마스

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


출처

SG-90 연결선

  • 노란색 = 제어신호
  • 빨간색 = VCC
  • 갈색(또는 검정색) = GND

SG-90제어 C언어 예제 (servo.c)

#include<stdio.h>
#include<wiringPi.h>
#include<softPwm.h>

#define SERVO 26

int main() {
        char str;

        if(wiringPiSetup()==-1)
                return 1;

        softPwmCreate(SERVO,0,200);

        while(1) {
                fputs("select c ,r , l , q : " , stdout);
                scanf("%c" , &str);
                getchar();
                if(str=='c') softPwmWrite(SERVO,15);     //0 degree
                else if(str=='r') softPwmWrite(SERVO,24); //90 degree
                else if(str=='l') softPwmWrite(SERVO,5); //-90 degree
                else if(str=='q') return 0;
        }

        return 0;
}

C언어 예제 컴파일

$ gcc servo.c -o servo -lwiringPi

C언어 예제 실행

$ ./servo

SG-90 제어 Java 예제 소스

import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.RaspiGpioProvider;
import com.pi4j.io.gpio.RaspiPinNumberingScheme;
import com.pi4j.wiringpi.Gpio;
import com.pi4j.wiringpi.SoftPwm;

public class Servo {

        private static int PIN_NUMBER = 12;

        public static void main(String[] args) throws Exception {
                //
                GpioFactory.setDefaultProvider(new RaspiGpioProvider(RaspiPinNumberingScheme.BROADCOM_PIN_NUMBERING));

                // initialize wiringPi library, this is needed for PWM
                Gpio.wiringPiSetup();

                // softPwmCreate(int pin, int value, int range)
                // the range is set like (min=0 ; max=100)
                SoftPwm.softPwmCreate(PIN_NUMBER, 0, 100);
                int counter = 0;
                while (counter < 3) {
                        // 
                        for (int i = 0; i <= 100; i++) {
                                // softPwmWrite(int pin, int value)
                                // This updates the PWM value on the given pin. The value is
                                // checked to be in-range and pins
                                // that haven't previously been initialized via softPwmCreate
                                // will be silently ignored.
                                SoftPwm.softPwmWrite(PIN_NUMBER, i);
                                Thread.sleep(25);
                        }
                        // 
                        for (int i = 100; i >= 0; i--) {
                                SoftPwm.softPwmWrite(PIN_NUMBER, i);
                                Thread.sleep(25);
                        }
                        counter++;
                }
        }

}

Java 예제 컴파일

$ javac -cp .:lib/pi4j-core.jar Servo.java

Java 예제 실행

$ java -cp .:lib/pi4j-core.jar Servo

실행 영상



라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq



 

티스토리 툴바