Firmware for UT Robotex 2018 basketball robot

Dependencies:   mbed USBDevice

Committer:
Reiko
Date:
Mon Nov 11 19:19:43 2019 +0000
Revision:
4:81cb68f1bcbd
Parent:
0:ef6268629f0b
Change default thrower (motor 3) pulsewidth_us from 800 to 100

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Reiko 0:ef6268629f0b 1 #include "qed.h"
Reiko 0:ef6268629f0b 2
Reiko 0:ef6268629f0b 3 QED::QED(PinName channelA, PinName channelB)
Reiko 0:ef6268629f0b 4 : interruptA(channelA), interruptB(channelB) {
Reiko 0:ef6268629f0b 5
Reiko 0:ef6268629f0b 6 pulses = 0;
Reiko 0:ef6268629f0b 7 currState = (interruptA.read() << 1) | (interruptB.read());
Reiko 0:ef6268629f0b 8 prevState = currState;
Reiko 0:ef6268629f0b 9
Reiko 0:ef6268629f0b 10 interruptA.rise(this, &QED::decode);
Reiko 0:ef6268629f0b 11 interruptA.fall(this, &QED::decode);
Reiko 0:ef6268629f0b 12 interruptB.rise(this, &QED::decode);
Reiko 0:ef6268629f0b 13 interruptB.fall(this, &QED::decode);
Reiko 0:ef6268629f0b 14 }
Reiko 0:ef6268629f0b 15
Reiko 0:ef6268629f0b 16 int QED::read() {
Reiko 0:ef6268629f0b 17 int pulseCount = pulses;
Reiko 0:ef6268629f0b 18 pulses = 0;
Reiko 0:ef6268629f0b 19 return pulseCount;
Reiko 0:ef6268629f0b 20 }
Reiko 0:ef6268629f0b 21
Reiko 0:ef6268629f0b 22 void QED::decode() {
Reiko 0:ef6268629f0b 23 currState = (interruptA.read() << 1) | (interruptB.read());
Reiko 0:ef6268629f0b 24
Reiko 0:ef6268629f0b 25 int change = (prevState & PREV_MASK) ^ ((currState & CURR_MASK) >> 1);
Reiko 0:ef6268629f0b 26
Reiko 0:ef6268629f0b 27 if (change == 0) {
Reiko 0:ef6268629f0b 28 change = -1;
Reiko 0:ef6268629f0b 29 }
Reiko 0:ef6268629f0b 30
Reiko 0:ef6268629f0b 31 pulses -= change;
Reiko 0:ef6268629f0b 32 prevState = currState;
Reiko 0:ef6268629f0b 33 }