OITRP_2022 / Mbed OS encoder_motor

Dependencies:   QEI

Committer:
okadaya
Date:
Wed Apr 27 03:39:55 2022 +0000
Revision:
1:f0e6a1eb94a8
Parent:
0:ca2a77886231
encorder_moter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okadaya 0:ca2a77886231 1 /* mbed Microcontroller Library
okadaya 0:ca2a77886231 2 * Copyright (c) 2019 ARM Limited
okadaya 0:ca2a77886231 3 * SPDX-License-Identifier: Apache-2.0
okadaya 0:ca2a77886231 4 */
okadaya 0:ca2a77886231 5
okadaya 0:ca2a77886231 6 #include "mbed.h"
okadaya 0:ca2a77886231 7 #include "platform/mbed_thread.h"
okadaya 0:ca2a77886231 8 #include "QEI.h"
okadaya 0:ca2a77886231 9 Serial pc(USBTX, USBRX, 115200);
okadaya 0:ca2a77886231 10 Serial md(PC_10, PC_11, 38400);
okadaya 0:ca2a77886231 11 // Blinking rate in milliseconds
okadaya 0:ca2a77886231 12 #define BLINKING_RATE_MS 500
okadaya 0:ca2a77886231 13 #define ROTATE_PER_REVOLUTIONS 64 //For QEI's pulse data
okadaya 0:ca2a77886231 14 int r;
okadaya 0:ca2a77886231 15 bool kai=0;
okadaya 0:ca2a77886231 16 DigitalIn btn(USER_BUTTON);
okadaya 0:ca2a77886231 17 DigitalOut led(LED2);
okadaya 0:ca2a77886231 18 void moter(int x){
okadaya 0:ca2a77886231 19 r = x+128;
okadaya 0:ca2a77886231 20 md.putc(r);
okadaya 0:ca2a77886231 21 pc.printf("%d\n",r);
okadaya 0:ca2a77886231 22 }
okadaya 0:ca2a77886231 23 int main()
okadaya 0:ca2a77886231 24 {
okadaya 0:ca2a77886231 25 md.format(8,Serial::None,1);
okadaya 0:ca2a77886231 26 moter(0);
okadaya 0:ca2a77886231 27 while(!btn){
okadaya 0:ca2a77886231 28 led=!led;
okadaya 0:ca2a77886231 29 wait(0.05);
okadaya 0:ca2a77886231 30 }
okadaya 0:ca2a77886231 31 led=1;
okadaya 0:ca2a77886231 32 while(btn){}
okadaya 0:ca2a77886231 33 // Initialise the digital pin LED1 as an output
okadaya 0:ca2a77886231 34 DigitalOut led(LED1);
okadaya 0:ca2a77886231 35 QEI wheel(PC_8, PC_9, NC, ROTATE_PER_REVOLUTIONS, QEI::X4_ENCODING);
okadaya 0:ca2a77886231 36 while(1){
okadaya 0:ca2a77886231 37 pc.printf("c");
okadaya 0:ca2a77886231 38 pc.printf("%d",kai);
okadaya 0:ca2a77886231 39 pc.printf("Pulses: %07d", wheel.getPulses());
okadaya 0:ca2a77886231 40 pc.printf("Rotate: %d\n", (int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4));
okadaya 1:f0e6a1eb94a8 41 if((int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4)<10&&kai==0){
okadaya 1:f0e6a1eb94a8 42 moter(48);
okadaya 0:ca2a77886231 43 pc.printf("a");
okadaya 1:f0e6a1eb94a8 44 if((int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4)==9){
okadaya 0:ca2a77886231 45 kai=1;
okadaya 0:ca2a77886231 46 }
okadaya 0:ca2a77886231 47 }
okadaya 0:ca2a77886231 48 if((int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4)>0&&kai==1){
okadaya 1:f0e6a1eb94a8 49 moter(-48);
okadaya 0:ca2a77886231 50 pc.printf("b");
okadaya 0:ca2a77886231 51 if((int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4)==1){
okadaya 0:ca2a77886231 52 kai=0;
okadaya 0:ca2a77886231 53 }
okadaya 0:ca2a77886231 54 }
okadaya 0:ca2a77886231 55 // moter(0);
okadaya 0:ca2a77886231 56 }
okadaya 0:ca2a77886231 57 }