Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed CalPID MotorController Encoder_GEAR ros_lib_melodic
Revision 0:dface1689d87, committed 2021-07-17
- Comitter:
- maxnagazumi
- Date:
- Sat Jul 17 05:58:55 2021 +0000
- Commit message:
- mbed
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CalPID.lib Sat Jul 17 05:58:55 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/teams/7th_DENSOU/code/CalPID/#0668932f9d5d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Encoder_GERA.lib Sat Jul 17 05:58:55 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/teams/7th_DENSOU/code/Encoder_GEAR/#7ee4ff55191d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MotorController.lib Sat Jul 17 05:58:55 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/teams/7th_DENSOU/code/MotorController/#d7677caf013a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Jul 17 05:58:55 2021 +0000 @@ -0,0 +1,168 @@ +#include "mbed.h" +#include "EC.h" +#include "CalPID.h" +#include "MotorController.h" + +#include <ros.h> +#include <std_msgs/String.h> +#include <geometry_msgs/Point.h> + +#define RESOLUTION 500 +#define pi 3.1415926 +#define DELTA_T 0.001 +#define DUTY_MAX 0.8 +#define OMEGA_MAX 3 + +//Serial pc(USBTX, USBRX); +CAN can(p30, p29); +Ticker ticker; +Ticker motor_ticker; +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); + +char can_now[1]; +char can_new[1]; +int status_now = 0; +int status_new = 0; +double theta=0; +double omega=0; +CANMessage msg; + +DigitalIn button1(p15); +DigitalIn button2(p16); + +//角度制御 +Ec2multi ec = Ec2multi(p28, p27, RESOLUTION); +CalPID speed_pid(0.9281,0,0.0003086,DELTA_T,DUTY_MAX); +CalPID angle_duty_pid(0,0,0,DELTA_T,DUTY_MAX); +CalPID angle_omega_pid(6.726,0,0.0007063,DELTA_T,OMEGA_MAX); +MotorController motor= MotorController(p25,p26, 0.001, ec, speed_pid, angle_duty_pid, angle_omega_pid); + +// + +void status_read(int id) +{ + if (can.read(msg) && msg.id == id) + { + status_now = (int)msg.data[0]; + } + if(status_new<status_now)status_new=status_now; +} + +void status_write(int id) +{ + can_new[0] = status_new & 255; + can.write(CANMessage(id, can_new, 1)); +} + +void status() +{ + status_read(1); + status_write(0); +} + +void led_light() +{ + led2 = status_now % 2; + led3 = status_now / 2 % 2; + led4 = status_now / 4 % 2; +} + +void motor_move(){ + //motor.AcOmega(theta); + motor.Sc(omega); +} + +float Arrow_NO=21; //arrow number + fire +float L=21; //length +float X=21; //rad + +void messageCallback(const geometry_msgs::Point &self_position) +{ + Arrow_NO = self_position.x; + L = self_position.y; + X = self_position.z; + led4=1; +} + +ros::NodeHandle nh; +ros::Subscriber<geometry_msgs::Point> sub("/coordinate",&messageCallback); + +int main() +{ + nh.getHardware()->setBaud(115200); + nh.initNode(); + nh.subscribe(sub); + + + motor.setDutyLimit(0.3); + button1.mode(PullUp); + button2.mode(PullUp); + + led1 = 1; + wait(0.5); + led1 = 0; + can.frequency(1000000); + ticker.attach(&status, 0.001); + motor_ticker.attach(&motor_move, 0.001); + led4=0; + while (1) + { + nh.spinOnce(); + if(Arrow_NO==1001)led1=1; + else led1=0; + if(L==6.545)led2=1; + else led2=0; + float pi_ = 3.1415; + if(X==pi_/5)led3=1; + else led3=0; + //pc.printf("%f %f %f\n",Arrow_NO,L,X); + //pc.printf("now state %d new %d, %f\r\n",status_now,status_new,theta); + switch (status_now) + { + case 0: + break; + case 1: + break; + case 2: + theta=pi;//掴む位置 + omega=1; + if (button1==0) + { + wait(1); + status_new = 3; + } + break; + case 3: + break; + case 4: + theta=pi/4;//半開で矢を落とす位置 + if (button1==0) + { + wait(1); + status_new = 5; + } + break; + case 5: + break; + case 6: + theta=0;//打つ位置 + if (button1==0) + { + wait(1); + status_new = 7; + } + break; + case 7: + break; + case 8: + //打つ + break; + } + //led_light(); + //wait_ms(1); + wait(0.1); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Jul 17 05:58:55 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ros_lib_melodic.lib Sat Jul 17 05:58:55 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/garyservin/code/ros_lib_melodic/#da82487f547e