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
Diff: main.cpp
- Revision:
- 0:7a6b6c687fa3
- Child:
- 1:f6b396987546
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Dec 17 05:54:30 2018 +0000
@@ -0,0 +1,171 @@
+#include "function.h"
+
+PwmOut pwm11(D5); //左正転
+PwmOut pwm12(D1); //左逆転
+PwmOut pwm21(D6); //右正転
+PwmOut pwm22(D9); //右逆転
+DigitalOut LED(D2);
+InterruptIn button1(A2); //フォトインタラプタ左
+InterruptIn button2(A1); //フォトインタラプタ右
+AnalogIn in1(A6); //フォトリフレクタ左
+AnalogIn in2(A4); //フォトリフレクタ真ん中
+AnalogIn in3(A3); //フォトリフレクタ右
+
+float g = 0.0f;
+float gain1 = 0.0f;
+float gain2 = 0.0f;
+float dif1 = 0.0f;
+float dif2 = 0.0f;
+float thr1 = 0.40f;
+float thr2 = 0.40f;
+float thr3 = 0.40f;
+int judge1 = 0;
+int judge2 = 0;
+int judge3 = 0;
+
+int main() {
+ pwm11.period(0.01f); //100Hz
+ pwm12.period(0.01f); //100Hz
+ pwm21.period(0.01f); //100Hz
+ pwm22.period(0.01f); //100Hz
+ button1.rise(&flip1);
+ button2.rise(&flip2);
+ int n;//3biteで状態を表現
+
+ flipper.attach(&flip3,0.05);//0.1秒ごとに回転数cを更新
+
+ while(1) {
+
+ if( led_count1 + led_count2 > 43*2*12){ //200mm毎にLEDを点滅
+ LED = 1.0f;
+ wait(0.5f);
+ LED = 0;
+ led_count1 = 0;
+ led_count2 = 0;
+ }
+//////////////////floatのinをintのjudgeに変換
+ if(in1 > thr1){
+ judge1 = 1;
+ }
+ else{
+ judge1 = 0;
+ }
+ if(in2 > thr2){
+ judge2 = 1;
+ }
+ else{
+ judge2 = 0;
+ }
+ if(in3 > thr3){
+ judge3 = 1;
+ }
+ else{
+ judge3 = 0;
+ }
+/////////////////
+ n = judge1 + judge2*2 + judge3*4;
+ /* distance = (distance1 + distance2) / 2;
+ if(ditance < 43*12*){
+ */
+ switch(n){
+ case(2)://白黒白ゆっくり進む
+ g = 500.0f;
+ dif1 = g - c2;
+ dif2 = g - c1;
+ gain1 = 0.0006f;
+ gain2 = 0.0006f;
+ pwm11.write(0.45f + dif1*gain1);
+ pwm12.write(0.30f);
+ pwm21.write(0.45f + dif2*gain2);
+ pwm22.write(0.30f);
+ break;
+
+ case(0)://白白白バック
+ g = 500.0f;
+ dif1 = g - c1;
+ dif2 = g - c2;
+ gain1 = 0.001f;
+ gain2 = 0.001f;
+
+ pwm11.write(0.10f);
+ pwm12.write(0.27f +dif1*gain1);
+ pwm21.write(0.10f);
+ pwm22.write(0.27f +dif2*gain2);
+ break;
+
+
+
+ case(1)://黒白白左回転かなり強
+ g = 500.0f;
+ dif1 = g - c1;
+ dif2 = g - c2;
+ gain1 = 0.0002f;
+ gain2 = 0.0002f;
+
+ pwm11.write(0.30f + dif1*gain1);
+ pwm12.write(0.30f);
+ pwm21.write(0.50f + dif2*gain2);
+ pwm22.write(0.30f);
+ break;
+
+ case(4)://白白黒右回転かなり強
+ g = 500.0f;
+ dif1 = g - c1;
+ dif2 = g - c2;
+ gain1 = 0.0002f;
+ gain2 = 0.0002f;
+
+ pwm11.write(0.50f + dif1*gain1);
+ pwm12.write(0.30f);
+ pwm21.write(0.20f);
+ pwm22.write(0.30f + dif2*gain2);
+ break;
+
+ case(3)://黒黒白左回転強
+ g = 500.0f;
+ dif1 = g - c1;
+ dif2 = g - c2;
+ gain1 = 0.0002f;
+ gain2 = 0.0002f;
+
+ pwm11.write(0.00f);
+ pwm12.write(0.00f);
+ pwm21.write(0.40f + dif2*gain2);
+ pwm22.write(0.20f);
+ break;
+
+ case(6)://白黒黒右回転強
+ g = 500.0f;
+ dif1 = g - c1;
+ dif2 = g - c2;
+ gain1 = 0.0002f;
+ gain2 = 0.0002f;
+
+ pwm11.write(0.40f + dif1*gain1);
+ pwm12.write(0.20f);
+ pwm21.write(0.00f);
+ pwm22.write(0.00f);
+ break;
+
+ case(7)://黒黒黒ゆっくり
+ dif1 = g - c1;
+ dif2 = g - c2;
+ gain1 = 0.0004f;
+ gain2 = 0.0004f;
+
+ pwm11.write(0.45f + dif1*gain1);
+ pwm12.write(0.30f);
+ pwm21.write(0.45f + dif2*gain2);
+ pwm22.write(0.30f);
+ break;
+
+ default://それ以外(多分ないけど)
+ pwm11.write(0.10f);
+ pwm12.write(0.70f);
+ pwm21.write(0.10f);
+ pwm22.write(0.70f);
+ break;
+
+ }
+ }
+}
\ No newline at end of file