diff options
author | Jeonghoon Park <jh1979.park@samsung.com> | 2017-12-19 14:27:46 +0900 |
---|---|---|
committer | Jeonghoon Park <jh1979.park@samsung.com> | 2017-12-19 14:27:46 +0900 |
commit | ae765965b6522da30af70a365e25903ad2a9cae8 (patch) | |
tree | 994b2cf979a490d58b0288dbe8191eb6a874bfe2 /inc | |
parent | d0cc43db3cd631a59b1bf6b0322fc86df88662dc (diff) | |
download | rcc-ae765965b6522da30af70a365e25903ad2a9cae8.tar.gz rcc-ae765965b6522da30af70a365e25903ad2a9cae8.tar.bz2 rcc-ae765965b6522da30af70a365e25903ad2a9cae8.zip |
adds motor related modules
Change-Id: Ibfa78de491b4064b40224af125a0360034a0608b
Diffstat (limited to 'inc')
-rw-r--r-- | inc/resource/resource_PCA9685.h | 29 | ||||
-rw-r--r-- | inc/resource/resource_motor_driver_L298N.h | 82 | ||||
-rw-r--r-- | inc/resource/resource_motor_driver_L298N_internal.h | 25 | ||||
-rw-r--r-- | inc/resource/resource_servo_motor.h | 36 | ||||
-rw-r--r-- | inc/resource/resource_servo_motor_internal.h | 25 |
5 files changed, 197 insertions, 0 deletions
diff --git a/inc/resource/resource_PCA9685.h b/inc/resource/resource_PCA9685.h new file mode 100644 index 0000000..aa45477 --- /dev/null +++ b/inc/resource/resource_PCA9685.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Contact: Jeonghoon Park <jh1979.park@samsung.com> + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __RESOURCE_PCA9685_H__ +#define __RESOURCE_PCA9685_H__ + +#define PCA9685_CH_MAX 15 + +int resource_pca9685_init(unsigned int ch); +int resource_pca9685_fini(unsigned int ch); +int resource_pca9685_set_frequency(unsigned int freq_hz); +int resource_pca9685_set_value_to_channel(unsigned int channel, int on, int off); + +#endif /* __RESOURCE_PCA9685_H__ */ diff --git a/inc/resource/resource_motor_driver_L298N.h b/inc/resource/resource_motor_driver_L298N.h new file mode 100644 index 0000000..1cf7bae --- /dev/null +++ b/inc/resource/resource_motor_driver_L298N.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Contact: Jeonghoon Park <jh1979.park@samsung.com> + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __RESOURCE_MOTOR_DRIVER_L298N_H__ +#define __RESOURCE_MOTOR_DRIVER_L298N_H__ + +/** + * This module is sample codes to handling DC motors in Tizen platform. + * HW is configured with L298N(motor driver) and PCA9685(PWM controller). + * To control motor, we use two GPIO pins of IoT board(e.g. RPi 3) connected + * with L298N and a PWM channel of PCA9685 connected with L298N + */ + +/* Default GPIO pins of raspberry pi 3 connected with IN pins of L298N */ +#define DEFAULT_MOTOR1_PIN1 26 +#define DEFAULT_MOTOR1_PIN2 20 + +#define DEFAULT_MOTOR2_PIN1 19 +#define DEFAULT_MOTOR2_PIN2 16 + +#define DEFAULT_MOTOR3_PIN1 6 +#define DEFAULT_MOTOR3_PIN2 12 + +#define DEFAULT_MOTOR4_PIN1 22 +#define DEFAULT_MOTOR4_PIN2 23 + +/* Default channel numbers of PCA9685 with enable pins of L298N */ +#define DEFAULT_MOTOR1_EN_CH 1 +#define DEFAULT_MOTOR2_EN_CH 2 +#define DEFAULT_MOTOR3_EN_CH 3 +#define DEFAULT_MOTOR4_EN_CH 4 + + +/** + * @brief Enumeration for motor id. + */ +typedef enum { + MOTOR_ID_1, + MOTOR_ID_2, + MOTOR_ID_3, + MOTOR_ID_4, + MOTOR_ID_MAX +} motor_id_e; + +/** + * @param[in] id The motor id + * @param[in] pin1 The first pin number to control motor + * @param[in] pin2 The second pin number to control motor + * @param[in] en_ch The enable channnel number to control PWM signal + * + * @return 0 on success, otherwise a negative error value + * @before resource_set_motor_driver_L298N_speed() : Optional + */ +int resource_set_motor_driver_L298N_configuration(motor_id_e id, + unsigned int pin1, unsigned int pin2, unsigned en_ch); + +/** + * @param[in] id The motor id + * @param[in] speed The speed to control motor, 0 to stop motor, + * positive value to rotate clockwise and higher value to rotate more fast + * negative value to rotate couterclockwise and lower value to rotate more fast + * @return 0 on success, otherwise a negative error value + * @before resource_set_motor_driver_L298N_speed() : Optional + */ +int resource_set_motor_driver_L298N_speed(motor_id_e id, int speed); + +#endif /* __RESOURCE_MOTOR_DRIVER_L298N_H__ */ diff --git a/inc/resource/resource_motor_driver_L298N_internal.h b/inc/resource/resource_motor_driver_L298N_internal.h new file mode 100644 index 0000000..fa5beb1 --- /dev/null +++ b/inc/resource/resource_motor_driver_L298N_internal.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Contact: Jeonghoon Park <jh1979.park@samsung.com> + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __RESOURCE_MOTOR_DRIVER_L298N_INTERNAL_H__ +#define __RESOURCE_MOTOR_DRIVER_L298N_INTERNAL_H__ + +void resource_close_motor_driver_L298N(motor_id_e id); +void resource_close_motor_driver_L298N_all(void); + +#endif /* __RESOURCE_MOTOR_DRIVER_L298N_INTERNAL_H__ */ diff --git a/inc/resource/resource_servo_motor.h b/inc/resource/resource_servo_motor.h new file mode 100644 index 0000000..924d6cc --- /dev/null +++ b/inc/resource/resource_servo_motor.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Contact: Jeonghoon Park <jh1979.park@samsung.com> + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __RESOURCE_SERVO_MOTOR_H__ +#define __RESOURCE_SERVO_MOTOR_H__ + +/** + * This module is sample codes to handling Servo motors in Tizen platform. + * HW is configured with PCA9685(PWM controller). + */ + +/** + * @param[in] id The motor id + * @param[in] value The value to control servo motor + * + * @return 0 on success, otherwise a negative error value + * @remarks Must adjust servo motor with some value before use to fit your system. + */ +int resource_set_servo_motor_value(unsigned int motor_id, int value); + +#endif /* __RESOURCE_SERVO_MOTOR_H__ */ diff --git a/inc/resource/resource_servo_motor_internal.h b/inc/resource/resource_servo_motor_internal.h new file mode 100644 index 0000000..e038390 --- /dev/null +++ b/inc/resource/resource_servo_motor_internal.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Contact: Jeonghoon Park <jh1979.park@samsung.com> + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __RESOURCE_SERVO_MOTOR_INTERNAL_H__ +#define __RESOURCE_SERVO_MOTOR_INTERNAL_H__ + +void resource_close_servo_motor(unsigned int ch); +void resource_close_servo_motor_all(void); + +#endif /* __RESOURCE_SERVO_MOTOR_INTERNAL_H__ */ |