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.
main.cpp@2:d213999ee436, 2020-03-05 (annotated)
- Committer:
- maxnagazumi
- Date:
- Thu Mar 05 01:58:48 2020 +0000
- Revision:
- 2:d213999ee436
- Parent:
- 1:9732c03b0de4
3/5;
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| maxnagazumi | 0:ef259ff25554 | 1 | #include "mbed.h" | 
| maxnagazumi | 0:ef259ff25554 | 2 | #include "EC.h" //Encoderライブラリをインクルード | 
| maxnagazumi | 0:ef259ff25554 | 3 | #define RESOLUTION 500 | 
| maxnagazumi | 0:ef259ff25554 | 4 | |
| maxnagazumi | 2:d213999ee436 | 5 | //Serial pc(USBTX, USBRX); // tx, rx | 
| maxnagazumi | 2:d213999ee436 | 6 | PwmOut f(p26); | 
| maxnagazumi | 2:d213999ee436 | 7 | PwmOut b(p25); | 
| maxnagazumi | 1:9732c03b0de4 | 8 | Ticker ticker; | 
| maxnagazumi | 2:d213999ee436 | 9 | Ec1multi EC(p16,p17,RESOLUTION); | 
| maxnagazumi | 2:d213999ee436 | 10 | InterruptIn X(p15); | 
| maxnagazumi | 2:d213999ee436 | 11 | DigitalOut led1(LED1); | 
| maxnagazumi | 2:d213999ee436 | 12 | DigitalOut led2(LED2); | 
| maxnagazumi | 2:d213999ee436 | 13 | DigitalOut led3(LED3); | 
| maxnagazumi | 2:d213999ee436 | 14 | DigitalOut led4(LED4); | 
| maxnagazumi | 0:ef259ff25554 | 15 | |
| maxnagazumi | 2:d213999ee436 | 16 | DigitalOut out(p20); | 
| maxnagazumi | 2:d213999ee436 | 17 | |
| maxnagazumi | 2:d213999ee436 | 18 | void cal() | 
| maxnagazumi | 1:9732c03b0de4 | 19 | { | 
| maxnagazumi | 1:9732c03b0de4 | 20 | EC.calOmega(); | 
| maxnagazumi | 1:9732c03b0de4 | 21 | } | 
| maxnagazumi | 1:9732c03b0de4 | 22 | |
| maxnagazumi | 1:9732c03b0de4 | 23 | int X_count=0; | 
| maxnagazumi | 1:9732c03b0de4 | 24 | |
| maxnagazumi | 1:9732c03b0de4 | 25 | void Xcount() | 
| maxnagazumi | 1:9732c03b0de4 | 26 | { | 
| maxnagazumi | 1:9732c03b0de4 | 27 | X_count++; | 
| maxnagazumi | 1:9732c03b0de4 | 28 | } | 
| maxnagazumi | 2:d213999ee436 | 29 | |
| maxnagazumi | 0:ef259ff25554 | 30 | int main() | 
| maxnagazumi | 0:ef259ff25554 | 31 | { | 
| maxnagazumi | 1:9732c03b0de4 | 32 | X.rise(&Xcount); | 
| maxnagazumi | 2:d213999ee436 | 33 | f.period_us(50); | 
| maxnagazumi | 2:d213999ee436 | 34 | b.period_us(50); | 
| maxnagazumi | 2:d213999ee436 | 35 | out=1; | 
| maxnagazumi | 2:d213999ee436 | 36 | double a=0,r=0.4,v=0; | 
| maxnagazumi | 2:d213999ee436 | 37 | int i=0,count;//rで半径指定 a*r=v | 
| maxnagazumi | 2:d213999ee436 | 38 | ticker.attach(&cal,0.05); | 
| maxnagazumi | 2:d213999ee436 | 39 | |
| maxnagazumi | 2:d213999ee436 | 40 | |
| maxnagazumi | 2:d213999ee436 | 41 | while(1) { | 
| maxnagazumi | 2:d213999ee436 | 42 | printf("set"); | 
| maxnagazumi | 2:d213999ee436 | 43 | if(X_count ==1) { | 
| maxnagazumi | 2:d213999ee436 | 44 | EC.reset(); | 
| maxnagazumi | 2:d213999ee436 | 45 | X_count =0; | 
| maxnagazumi | 2:d213999ee436 | 46 | break; | 
| maxnagazumi | 2:d213999ee436 | 47 | } | 
| maxnagazumi | 2:d213999ee436 | 48 | } | 
| maxnagazumi | 2:d213999ee436 | 49 | //角度リセット | 
| maxnagazumi | 2:d213999ee436 | 50 | out = 0; | 
| maxnagazumi | 2:d213999ee436 | 51 | wait(5); | 
| maxnagazumi | 0:ef259ff25554 | 52 | while(1) { | 
| maxnagazumi | 2:d213999ee436 | 53 | printf("%.3f %.3f %d %d\r\n",a,v,X_count,i); | 
| maxnagazumi | 2:d213999ee436 | 54 | a=EC.getOmega(); | 
| maxnagazumi | 2:d213999ee436 | 55 | count=EC.getCount(); | 
| maxnagazumi | 2:d213999ee436 | 56 | i =count%500; | 
| maxnagazumi | 2:d213999ee436 | 57 | v=a*r; | 
| maxnagazumi | 2:d213999ee436 | 58 | f=0.45;//速度一定 | 
| maxnagazumi | 2:d213999ee436 | 59 | b=0.0; | 
| maxnagazumi | 2:d213999ee436 | 60 | led1=1; | 
| maxnagazumi | 2:d213999ee436 | 61 | led2=0; | 
| maxnagazumi | 2:d213999ee436 | 62 | led3=0; | 
| maxnagazumi | 2:d213999ee436 | 63 | led4=1; | 
| maxnagazumi | 2:d213999ee436 | 64 | if(X_count>3) { | 
| maxnagazumi | 2:d213999ee436 | 65 | if(i < -380 && i > -390) {//離す角度を決める | 
| maxnagazumi | 2:d213999ee436 | 66 | out=1; //ボールを離す | 
| maxnagazumi | 2:d213999ee436 | 67 | printf("shot\r\n"); | 
| maxnagazumi | 2:d213999ee436 | 68 | led1=1; | 
| maxnagazumi | 2:d213999ee436 | 69 | led2=1; | 
| maxnagazumi | 2:d213999ee436 | 70 | led3=1; | 
| maxnagazumi | 2:d213999ee436 | 71 | led4=1; | 
| maxnagazumi | 2:d213999ee436 | 72 | break; | 
| maxnagazumi | 1:9732c03b0de4 | 73 | } | 
| maxnagazumi | 1:9732c03b0de4 | 74 | } | 
| maxnagazumi | 2:d213999ee436 | 75 | } | 
| maxnagazumi | 2:d213999ee436 | 76 | printf("stop\r\n"); | 
| maxnagazumi | 2:d213999ee436 | 77 | while(1) { | 
| maxnagazumi | 2:d213999ee436 | 78 | printf("%.3f %.3f %d %d stop\r\n",a,v,X_count,i); | 
| maxnagazumi | 2:d213999ee436 | 79 | X.rise(&Xcount); | 
| maxnagazumi | 2:d213999ee436 | 80 | a=EC.getOmega(); | 
| maxnagazumi | 2:d213999ee436 | 81 | count=EC.getCount(); | 
| maxnagazumi | 2:d213999ee436 | 82 | i =count%500; | 
| maxnagazumi | 2:d213999ee436 | 83 | f=0; | 
| maxnagazumi | 2:d213999ee436 | 84 | b=0; | 
| maxnagazumi | 2:d213999ee436 | 85 | led1=0; | 
| maxnagazumi | 2:d213999ee436 | 86 | led2=1; | 
| maxnagazumi | 2:d213999ee436 | 87 | led3=1; | 
| maxnagazumi | 2:d213999ee436 | 88 | led4=0; | 
| maxnagazumi | 2:d213999ee436 | 89 | } | 
| maxnagazumi | 2:d213999ee436 | 90 | } | 
| maxnagazumi | 1:9732c03b0de4 | 91 |