このプログラムはDcMotorDirectDrive libraryのサンプルプログラムです。 mabuchi motor (RF-300C-11440 ,DC3V,18mA,2200rpm)を3個制御します。 モータは正転、逆転を繰り返します。 This program is a sample program DcMotorDirectDrive library. mabuchi motor (RF-300C-11440, DC3V, 18mA, 2200rpm) contains three controls. Motor forward, Reverse rotation repeat. =video 動画 = {{http://www.youtube.com/watch?v=w-ipv5tC5m4}}
main.cpp
- Committer:
- suupen
- Date:
- 2011-12-05
- Revision:
- 0:36fd4dec9f15
File content as of revision 0:36fd4dec9f15:
//============================================ // DcMotorDirectDrive Library Example // // This program controls the motor 3. // Repeat the forward and reverse motor. // Continuously varies the rotational speed of the motor. // // <schematic> // // motor1,2,3 : mabuchi motor RF-300C-11440 DC3V 18mA 2200rpm) // __ // p21(pwmOut) ---------| | motor1 // | |-- // p22(digitalOut) ---------|__| // // __ // p23(pwmOut) ---------| | motor2 // | |-- // p24(digitalOut) ---------|__| // // __ // p25(pwmOut) ---------| | motor3 // | |-- // p26(digitalOut) ---------|__| // //============================================= #include "mbed.h" #include "DcMotorDirectDrive.h" // pwm pin // | // | reference pin // | | DcMotorDirectDrive motor1(p21, p22); DcMotorDirectDrive motor2(p23, p24); DcMotorDirectDrive motor3(p25, p26); DigitalOut led1(LED1); DigitalOut led4(LED4); Timer timer; // data change timer int main() { float siji = 1.0f; // motor output (+1.0 -> ... -> +0.5 -> -1.0 -> ... -> -0.5 -> +1.0) uint8_t fugo = 0; // 0 : normal rotation, 1 : reverse rotation timer.start(); while(1) { // After 100[ms] to start the process if(timer.read_ms() >= 100){ timer.reset(); if(fugo == 0){ // Normal rotation // siji = +1.0 -> +0.5 siji -= 0.005; if(siji < 0.5f){ fugo = 1; siji = -1.0f; } } else{ // Reverse rotation siji += 0.005; if(siji > -0.5f){ fugo = 0; siji = +1.0f; } } // Outputs a control instruction to the motor motor1.DcMotorDirectDrive_main(siji); motor2.DcMotorDirectDrive_main(siji); motor3.DcMotorDirectDrive_main(siji); // rotation display if(siji > 0.5){ // normal rotation led1 = 1; led4 = 0; } else{ // reverse rotation led1 = 0; led4 = 1; } } } }