質問編集履歴

2

文字数がオーバーしてしまうため省略させていただいてました。今文字数が入る分を追加させていただきました、見にくくて申し訳ございません

2021/12/23 17:43

投稿

mt_1012121
mt_1012121

スコア0

test CHANGED
File without changes
test CHANGED
@@ -456,20 +456,308 @@
456
456
 
457
457
  }
458
458
 
459
-
459
+ int wait_sec(int waitsec) {//移動時間倍数決定
460
+
460
-
461
+ if (waitsec >= 0 && waitsec < 3259) return(1) ; //32.59%
462
+
463
+ if (waitsec >= 3259 && waitsec < 4677) return(2) ; //14.18%
464
+
465
+ if (waitsec >= 4677 && waitsec < 5549) return(3) ; //8.72%
466
+
467
+ if (waitsec >= 5549 && waitsec < 6166) return(4) ; //6.17%
468
+
469
+ if (waitsec >= 6166 && waitsec < 6638) return(5) ; //4.72%
470
+
471
+ if (waitsec >= 6638 && waitsec < 7017) return(6) ; //3.79%
472
+
473
+ if (waitsec >= 7017 && waitsec < 7332) return(7) ; //3.15%
474
+
475
+ if (waitsec >= 7332 && waitsec < 7600) return(8) ; //2.68%
476
+
477
+ if (waitsec >= 7600 && waitsec < 7833) return(9) ; //2.33%
478
+
479
+ if (waitsec >= 7833 && waitsec < 8038) return(10) ; //2.05%
480
+
481
+ if (waitsec >= 8038 && waitsec < 8221) return(11) ; //1.83%
482
+
483
+ if (waitsec >= 8221 && waitsec < 8386) return(12) ; //1.65%
484
+
485
+ if (waitsec >= 8386 && waitsec < 8536) return(13) ; //1.50%
486
+
487
+ if (waitsec >= 8536 && waitsec < 8673) return(14) ; //1.37%
488
+
489
+ if (waitsec >= 8673 && waitsec < 8799) return(15) ; //1.26%
490
+
491
+ if (waitsec >= 8799 && waitsec < 8916) return(16) ; //1.17%
492
+
493
+ if (waitsec >= 8916 && waitsec < 9024) return(17) ; //1.08%
494
+
495
+ if (waitsec >= 9024 && waitsec < 9125) return(18) ; //1.01%
496
+
497
+ if (waitsec >= 9125 && waitsec < 9220) return(19) ; //0.95%
498
+
499
+ if (waitsec >= 9220 && waitsec < 9309) return(20) ; //0.89%
500
+
501
+ if (waitsec >= 9309 && waitsec < 9393) return(21) ; //0.84%
502
+
503
+ if (waitsec >= 9393 && waitsec < 9472) return(22) ; //0.79%
504
+
505
+ if (waitsec >= 9472 && waitsec < 9547) return(23) ; //0.75%
506
+
507
+ if (waitsec >= 9547 && waitsec < 9618) return(24) ; //0.71%
508
+
509
+ if (waitsec >= 9618 && waitsec < 9686) return(25) ; //0.68%
510
+
511
+ if (waitsec >= 9686 && waitsec < 9751) return(26) ; //0.65%
512
+
513
+ if (waitsec >= 9751 && waitsec < 9813) return(27) ; //0.62%
514
+
515
+ if (waitsec >= 9813 && waitsec < 9872) return(28) ; //0.59%
516
+
517
+ if (waitsec >= 9872 && waitsec < 9929) return(29) ; //0.57%
518
+
519
+ if (waitsec >= 9929) return(30) ; //0.55%
520
+
521
+ return(-1) ;
522
+
461
-
523
+ }
524
+
462
-
525
+ void Random_Walk(int c)//
526
+
527
+ {
528
+
529
+ const int wait = c; //30 回転
530
+
531
+ const int wait2 = 6000;//移動時間基準値
532
+
463
- 文字数制限により省略
533
+ double a,b;
534
+
464
-
535
+ if(rnd_rst==false){//ランダム値決定
536
+
537
+ rnd_f =Random_value(9999); //移動距離決定
538
+
539
+ rnd_d =Random_value(2); //回転方向決定
540
+
541
+ rnd_c =Random_value(3)+1; //回転角度決定
542
+
543
+ rnd_rst =true;
544
+
545
+ a=wait_sec(rnd_f);
546
+
547
+ F_time =wait2 * a ;//
548
+
549
+ V_wait = wait * rnd_c;//deg 30 60 90
550
+
551
+ }
552
+
553
+ if(millis() - before <=V_wait && advancea==0 && rnd_d == 0){//左 30 回転
554
+
555
+ Motor_Drive('L');
556
+
557
+ Motor_Power(Motor_Out2);
558
+
559
+ }
560
+
561
+ else if(millis() - before <=V_wait + 2000 && advancea==0 && rnd_d ==0){//前進時
562
+
563
+
564
+
565
+ advancea=1;
566
+
567
+ before=millis();
568
+
465
- ・ランダムウォークのプログラム
569
+ rnd_rst =false;
570
+
571
+ }
572
+
573
+ else if(millis() - before <=V_wait && advancea==0 && rnd_d ==1){//右 30 回転
574
+
575
+ Motor_Drive('R');
576
+
577
+ Motor_Power(Motor_Out2);
578
+
579
+ }
580
+
581
+ else if(millis() - before <=V_wait + 2000 && advancea==0 && rnd_d ==1){//前進時
582
+
583
+ advancea=1;
584
+
585
+ before=millis();
586
+
587
+ rnd_rst =false;
588
+
589
+ }
590
+
591
+ //前進
592
+
593
+ else if(millis() - before <= F_time && advancea==1){ //直進:障害物軽回避
594
+
595
+ stackL=0;
596
+
597
+ stackR=0;
598
+
599
+ direc=false;
600
+
601
+ Motor_Drive('F');
602
+
603
+ Motor_Power(Motor_Out);
604
+
605
+ }
606
+
607
+ //後進
608
+
609
+ else if(millis() - before <= F_time && advancea==2){
610
+
611
+ stackL=0;
612
+
613
+ stackR=0;
614
+
615
+ direc=true;
616
+
617
+ Motor_Drive('B');
618
+
619
+ Motor_Power(Motor_Out);
620
+
621
+ }
622
+
623
+ //初期化&同期
624
+
625
+ else{
626
+
627
+ advancea=0;
628
+
629
+ before=millis();
630
+
631
+ stackL = 0;
632
+
633
+ stackR = 0;
634
+
635
+ rnd_rst=false;
636
+
637
+ }
638
+
639
+ return;
640
+
641
+ }
642
+
643
+ void No_Delay_Avoid(){
644
+
645
+ const int wait = 400;//回転時間基準値
646
+
647
+ if(rnd_rst2==false){//ランダム値決定
648
+
649
+ before3=millis();
650
+
651
+ rnd_rst2 =true;
652
+
653
+ }
654
+
655
+ if(L1_blo==true){//左前方障害物フラグがオンのとき実行
656
+
657
+ if(millis()-before3<=wait){
658
+
659
+ Motor_Drive('R');
660
+
661
+ Motor_Power(Motor_Out2);
662
+
663
+ }
664
+
665
+ else{
666
+
667
+ before=before+wait;
668
+
669
+ L1_blo=false;
670
+
671
+ rnd_rst2 =false;
672
+
673
+ return;
674
+
675
+ }
676
+
677
+ }
678
+
679
+ else if(R1_blo==true){
680
+
681
+ if(millis()-before3<=wait){
682
+
683
+ Motor_Drive('L');
684
+
685
+ Motor_Power(Motor_Out2);
686
+
687
+ }
688
+
689
+ else{
690
+
691
+ before=before+wait;
692
+
693
+ R1_blo=false;
694
+
695
+ rnd_rst2 =false;
696
+
697
+ return;
698
+
699
+ }
700
+
701
+ }
702
+
703
+ else if(L2_blo==true){
704
+
705
+ if(millis()-before3<=wait*0.5){
706
+
707
+ Motor_Drive('R');
708
+
709
+ Motor_Power(Motor_Out2);
710
+
711
+ }
712
+
713
+ else{
714
+
715
+ before=before+wait;
716
+
717
+ L2_blo=false;
718
+
719
+ rnd_rst2 =false;
720
+
721
+ return;
722
+
723
+ }
724
+
725
+ }
726
+
727
+ else{
728
+
729
+ if(millis()-before3<=wait*0.5){
730
+
731
+ Motor_Drive('L');
732
+
733
+ Motor_Power(Motor_Out2);
734
+
735
+ }
736
+
737
+ else{
738
+
739
+ before=before+wait;
740
+
741
+ R2_blo=false;
742
+
743
+ rnd_rst2 =false;
744
+
745
+ return;
746
+
747
+ }
748
+
749
+ }
750
+
751
+ return;
752
+
753
+ }
754
+
755
+
466
756
 
467
757
  ・障害物回避のプログラム
468
758
 
469
759
  ・ターゲット探索のプログラム
470
760
 
471
-
472
-
473
761
 
474
762
 
475
763
  //シリアルモニタ用プログラム

1

ソースコードについて

2021/12/23 17:43

投稿

mt_1012121
mt_1012121

スコア0

test CHANGED
File without changes
test CHANGED
@@ -458,9 +458,17 @@
458
458
 
459
459
 
460
460
 
461
-
461
+
462
+
462
-
463
+ 文字数制限により省略
464
+
463
-
465
+ ・ランダムウォークのプログラム
466
+
467
+ ・障害物回避のプログラム
468
+
469
+ ・ターゲット探索のプログラム
470
+
471
+
464
472
 
465
473
 
466
474