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 SBDBT arrc_mbed
main.cpp
- Committer:
- guesta
- Date:
- 2022-04-08
- Revision:
- 12:86b5327a79c4
- Parent:
- 11:9ae7fe40a807
File content as of revision 12:86b5327a79c4:
#include "mbed.h"
#include "scrp_slave.hpp"
#include "sbdbt.hpp"
#include "rotary_inc.hpp"
int main()
{
//---------------初期設定---------------
//scrp_slave
ScrpSlave scrp(PC_12,PD_2,PH_1,0x0807f800);
//sbdbt
sbdbt sb(PA_0,PA_1);
//scrp_slaveのid設定
const int wheel_num = 1;
//const int BeanbagGet_num = 2;
const int BeanbagShot_num = 3;
const int TakoGetPut_num = 4;
const int TapeLed_num = 5;
const int send_all = 255;
//コマンド番号設定
//足回り用
const int r_x_component_cmd = 1;
const int r_y_component_cmd = 2;
const int l2_cmd = 3;
const int r2_cmd = 4;
const int l1_cmd = 5;
const int r1_cmd = 8;
const int circle_cmd = 6;
const int switch_cmd = 7;
const int l_x_component_cmd = 9;
const int l_y_component_cmd = 10;
const int right_cmd = 11;
//ビーンバッグ回収用
//const int move = 1;
//ビーンバッグ発射用
const int shot = 2;
//農作物回収・設置用
const int up = 1;
const int down = 2;
/*const int limit1 = 3;
const int limit2 = 4;
const int limit3 = 5;
const int limit4 = 6;*/
//テープLED用
const int voice = 1;
//遠隔非常停止受信用
//全体送信用
const int select = 50;//手動・自動切り替え
const int stop_all = 51;//全プログラム停止,リセット機能
//変数
bool auto_mode = false;
//bool status_start = 0;
bool auto_move = 0;
bool field = 0;
int r_x_component;
int r_y_component;
int l_x_component;
int l_y_component;
int l2_num;
int r2_num;
DigitalIn status_stop(PB_14,PullUp);
DigitalIn sw1(PB_6);
sw1.mode(PullUp);
DigitalOut led(PA_10);
//RotaryInc rot1(PC_0,PC_1,M_PI*2,40*M_PI,4);
//RotaryInc rot2(PC_3,PC_2,M_PI*2,40*M_PI,4);
//count
int count_up;
int count_down;
int count_shot;
int count_auto;
//int count_start;
int count_stop;
int count_circle;
//-------------------------------------
while(true) {
printf("%d\n",sw1.read());
sb.button_state();
r_x_component = sb.rsx();
r_y_component = sb.rsy();
l_x_component = sb.lsx();
l_y_component = sb.lsy();
l2_num = sb.l2An();
r2_num = sb.r2An();
if(sb.select() == 1) {
count_auto++;
printf("%d\n",count_auto);
if(count_auto == 1) {
auto_mode =! auto_mode;
}
} else {
count_auto = 0;
}
if(auto_mode == 1) {
led = 1;
scrp.send1(TapeLed_num,voice,4);
//printf("auto_mode\n");
}else{
led = 0;
//printf("manual_mode\n");
}
//足回り
scrp.send1(wheel_num,r_x_component_cmd,r_x_component);
wait_ms(5);
scrp.send1(wheel_num,r_y_component_cmd,r_y_component);
wait_ms(5);
scrp.send1(wheel_num,l2_cmd,l2_num);
wait_ms(5);
scrp.send1(wheel_num,r2_cmd,r2_num);
wait_ms(5);
scrp.send1(wheel_num,l1_cmd,sb.l1());
wait_ms(5);
scrp.send1(wheel_num,r1_cmd,sb.r1());
wait_ms(5);
scrp.send1(wheel_num,l_x_component_cmd,l_x_component);
wait_ms(5);
scrp.send1(wheel_num,l_y_component_cmd,l_y_component);
wait_ms(5);
if(auto_mode == true){
if(sb.circle() == 1) {
count_circle++;
if(count_circle == 1) {
auto_move =! auto_move;
scrp.send1(BeanbagShot_num,circle_cmd,auto_move);
wait_ms(5);
}
} else {
count_circle = 0;
scrp.send1(wheel_num,right_cmd,sb.right());
wait_ms(5);
}
scrp.send1(wheel_num,circle_cmd,auto_move);
wait_ms(5);
}
if(sw1.read() == 1){
field = 0;
}else{
field = 1;
}
scrp.send1(wheel_num,switch_cmd,field);
wait_ms(5);
//ビーンバッグ回収
if(auto_mode == false) {
scrp.send1(TapeLed_num,1,sb.left());
wait_ms(5);
}
//ビーンバッグ発射
if(auto_mode == true) {
scrp.send1(BeanbagShot_num,shot,sb.square());
wait_ms(5);
if(sb.square() == 1) {
count_shot++;
if(count_shot == 1) {
scrp.send1(TapeLed_num,voice,5);
}
} else {
count_shot = 0;
}
}
//装填
if(auto_mode == false) {
scrp.send1(BeanbagShot_num,10,sb.cross());
wait_ms(5);
}
if(auto_mode == true){
if(sb.cross() == 1){
scrp.send1(TapeLed_num,1,10);
wait_ms(5);
}
}
//農作物回収・設置
if(sb.up() == 1) {
count_up++;
if(count_up == 1) {
scrp.send1(TapeLed_num,voice,3);
}
} else {
count_up = 0;
}
if(sb.down() == 1) {
count_down++;
if(count_down == 1) {
scrp.send1(TapeLed_num,voice,2);
}
} else {
count_down = 0;
}
scrp.send1(TakoGetPut_num,up,sb.up());
wait_ms(5);
scrp.send1(TakoGetPut_num,down,sb.down());
wait_ms(5);
//テープLED
//全体送信
scrp.send1(send_all,select,auto_mode);//自動・手動モード切り替え
wait_ms(5);
if(status_stop.read() == 1) {
count_stop++;
if(count_stop <= 100000){
scrp.send1(send_all,stop_all,1);
}
} else {
scrp.send1(send_all,stop_all,0);
count_stop = 0;
}
scrp.send1(send_all,stop_all,0);
wait_ms(5);
if(sb.start() == 1){
scrp.send1(send_all,stop_all,3);
wait_ms(5);
NVIC_SystemReset();
}
}
}