OITRP_2022 / Mbed OS encoder_motor

Dependencies:   QEI

Committer:
okadaya
Date:
Wed Jun 23 08:34:39 2021 +0000
Revision:
0:ca2a77886231
Child:
1:f0e6a1eb94a8
encoder

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 PwmOut motor1(PF_8);
okadaya 0:ca2a77886231 12 PwmOut motor2(PF_7);
okadaya 0:ca2a77886231 13 // Blinking rate in milliseconds
okadaya 0:ca2a77886231 14 #define BLINKING_RATE_MS 500
okadaya 0:ca2a77886231 15 #define ROTATE_PER_REVOLUTIONS 64 //For QEI's pulse data
okadaya 0:ca2a77886231 16 int r;
okadaya 0:ca2a77886231 17 bool kai=0;
okadaya 0:ca2a77886231 18 DigitalIn btn(USER_BUTTON);
okadaya 0:ca2a77886231 19 DigitalOut led(LED2);
okadaya 0:ca2a77886231 20 void moter(int x){
okadaya 0:ca2a77886231 21 r = x+128;
okadaya 0:ca2a77886231 22 md.putc(r);
okadaya 0:ca2a77886231 23 pc.printf("%d\n",r);
okadaya 0:ca2a77886231 24 }
okadaya 0:ca2a77886231 25 int main()
okadaya 0:ca2a77886231 26 {
okadaya 0:ca2a77886231 27 md.format(8,Serial::None,1);
okadaya 0:ca2a77886231 28 moter(0);
okadaya 0:ca2a77886231 29 while(!btn){
okadaya 0:ca2a77886231 30 led=!led;
okadaya 0:ca2a77886231 31 wait(0.05);
okadaya 0:ca2a77886231 32 }
okadaya 0:ca2a77886231 33 led=1;
okadaya 0:ca2a77886231 34 while(btn){}
okadaya 0:ca2a77886231 35 // Initialise the digital pin LED1 as an output
okadaya 0:ca2a77886231 36 DigitalOut led(LED1);
okadaya 0:ca2a77886231 37 QEI wheel(PC_8, PC_9, NC, ROTATE_PER_REVOLUTIONS, QEI::X4_ENCODING);
okadaya 0:ca2a77886231 38 while(1){
okadaya 0:ca2a77886231 39 pc.printf("c");
okadaya 0:ca2a77886231 40 pc.printf("%d",kai);
okadaya 0:ca2a77886231 41 pc.printf("Pulses: %07d", wheel.getPulses());
okadaya 0:ca2a77886231 42 pc.printf("Rotate: %d\n", (int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4));
okadaya 0:ca2a77886231 43 if((int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4)<100&&kai==0){
okadaya 0:ca2a77886231 44 moter(64);
okadaya 0:ca2a77886231 45 pc.printf("a");
okadaya 0:ca2a77886231 46 if((int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4)==99){
okadaya 0:ca2a77886231 47 kai=1;
okadaya 0:ca2a77886231 48 }
okadaya 0:ca2a77886231 49 }
okadaya 0:ca2a77886231 50 if((int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4)>0&&kai==1){
okadaya 0:ca2a77886231 51 moter(-64);
okadaya 0:ca2a77886231 52 pc.printf("b");
okadaya 0:ca2a77886231 53 if((int)wheel.getPulses()/(ROTATE_PER_REVOLUTIONS*4)==1){
okadaya 0:ca2a77886231 54 kai=0;
okadaya 0:ca2a77886231 55 }
okadaya 0:ca2a77886231 56 }
okadaya 0:ca2a77886231 57 // moter(0);
okadaya 0:ca2a77886231 58 }
okadaya 0:ca2a77886231 59 }