Alvaro Cassinelli / Mbed 2 deprecated skinGames_forktest

Dependencies:   mbed

Fork of scoreLight_Advanced by Alvaro Cassinelli

Committer:
mbedalvaro
Date:
Fri Mar 28 10:18:38 2014 +0000
Revision:
42:c4e9c1116af4
Child:
44:46e25fa1669b
Added functionality for two rotary encoders to control the additional mirror delay and the fixed threshold (instead of a potentiometer), and discarded the use of interrupt based switches to change the threshold mode (instead I use a two-state switch)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedalvaro 42:c4e9c1116af4 1 #include "mbed.h"
mbedalvaro 42:c4e9c1116af4 2 #include "CRotaryEncoder.h"
mbedalvaro 42:c4e9c1116af4 3
mbedalvaro 42:c4e9c1116af4 4
mbedalvaro 42:c4e9c1116af4 5 CRotaryEncoder rotaryEncoder1=CRotaryEncoder(ROTARY_ENCODER1_PINA, ROTARY_ENCODER1_PINB);//pre-instanciation of object lockin with inter-file scope (declared extern in .h file)
mbedalvaro 42:c4e9c1116af4 6 CRotaryEncoder rotaryEncoder2=CRotaryEncoder(ROTARY_ENCODER2_PINA, ROTARY_ENCODER2_PINB);//pre-instanciation of object lockin with inter-file scope (declared extern in .h file)
mbedalvaro 42:c4e9c1116af4 7
mbedalvaro 42:c4e9c1116af4 8 CRotaryEncoder::CRotaryEncoder(PinName pinA, PinName pinB)
mbedalvaro 42:c4e9c1116af4 9 {
mbedalvaro 42:c4e9c1116af4 10 m_pinA = new InterruptIn(pinA);
mbedalvaro 42:c4e9c1116af4 11 m_pinA->rise(this, &CRotaryEncoder::rise);
mbedalvaro 42:c4e9c1116af4 12 m_pinA->fall(this, &CRotaryEncoder::fall);
mbedalvaro 42:c4e9c1116af4 13
mbedalvaro 42:c4e9c1116af4 14 m_pinB = new DigitalIn(pinB);
mbedalvaro 42:c4e9c1116af4 15 m_position = 0;
mbedalvaro 42:c4e9c1116af4 16
mbedalvaro 42:c4e9c1116af4 17 newValue=true;
mbedalvaro 42:c4e9c1116af4 18 minValue=0; maxValue=360;
mbedalvaro 42:c4e9c1116af4 19 }
mbedalvaro 42:c4e9c1116af4 20
mbedalvaro 42:c4e9c1116af4 21 CRotaryEncoder::~CRotaryEncoder()
mbedalvaro 42:c4e9c1116af4 22 {
mbedalvaro 42:c4e9c1116af4 23 delete m_pinA;
mbedalvaro 42:c4e9c1116af4 24 delete m_pinB;
mbedalvaro 42:c4e9c1116af4 25 }
mbedalvaro 42:c4e9c1116af4 26
mbedalvaro 42:c4e9c1116af4 27 void CRotaryEncoder::SetMinMax(int min, int max) {
mbedalvaro 42:c4e9c1116af4 28 minValue=min;
mbedalvaro 42:c4e9c1116af4 29 maxValue=max;
mbedalvaro 42:c4e9c1116af4 30 }
mbedalvaro 42:c4e9c1116af4 31
mbedalvaro 42:c4e9c1116af4 32 int CRotaryEncoder::Get(void)
mbedalvaro 42:c4e9c1116af4 33 {
mbedalvaro 42:c4e9c1116af4 34 return m_position;
mbedalvaro 42:c4e9c1116af4 35 }
mbedalvaro 42:c4e9c1116af4 36
mbedalvaro 42:c4e9c1116af4 37 void CRotaryEncoder::Set(int value)
mbedalvaro 42:c4e9c1116af4 38 {
mbedalvaro 42:c4e9c1116af4 39 if (value>maxValue) m_position = maxValue;
mbedalvaro 42:c4e9c1116af4 40 if (value<minValue) m_position = minValue;
mbedalvaro 42:c4e9c1116af4 41 m_position = value;
mbedalvaro 42:c4e9c1116af4 42 }
mbedalvaro 42:c4e9c1116af4 43
mbedalvaro 42:c4e9c1116af4 44 bool CRotaryEncoder::CheckNew()
mbedalvaro 42:c4e9c1116af4 45 {
mbedalvaro 42:c4e9c1116af4 46 bool auxValue=newValue;
mbedalvaro 42:c4e9c1116af4 47 newValue=0;
mbedalvaro 42:c4e9c1116af4 48 return(auxValue);
mbedalvaro 42:c4e9c1116af4 49 }
mbedalvaro 42:c4e9c1116af4 50
mbedalvaro 42:c4e9c1116af4 51 void CRotaryEncoder::wrapValue() {
mbedalvaro 42:c4e9c1116af4 52 if (m_position>maxValue) m_position = minValue;
mbedalvaro 42:c4e9c1116af4 53 if (m_position<minValue) m_position = maxValue;
mbedalvaro 42:c4e9c1116af4 54 }
mbedalvaro 42:c4e9c1116af4 55
mbedalvaro 42:c4e9c1116af4 56 void CRotaryEncoder::fall(void)
mbedalvaro 42:c4e9c1116af4 57 {
mbedalvaro 42:c4e9c1116af4 58 if(*m_pinB == 1)
mbedalvaro 42:c4e9c1116af4 59 {
mbedalvaro 42:c4e9c1116af4 60 m_position++;
mbedalvaro 42:c4e9c1116af4 61 }
mbedalvaro 42:c4e9c1116af4 62 else
mbedalvaro 42:c4e9c1116af4 63 {
mbedalvaro 42:c4e9c1116af4 64 m_position--;
mbedalvaro 42:c4e9c1116af4 65 }
mbedalvaro 42:c4e9c1116af4 66
mbedalvaro 42:c4e9c1116af4 67 wrapValue();
mbedalvaro 42:c4e9c1116af4 68
mbedalvaro 42:c4e9c1116af4 69 newValue=true;
mbedalvaro 42:c4e9c1116af4 70 }
mbedalvaro 42:c4e9c1116af4 71
mbedalvaro 42:c4e9c1116af4 72 void CRotaryEncoder::rise(void)
mbedalvaro 42:c4e9c1116af4 73 {
mbedalvaro 42:c4e9c1116af4 74 if(*m_pinB == 1)
mbedalvaro 42:c4e9c1116af4 75 {
mbedalvaro 42:c4e9c1116af4 76 m_position--;
mbedalvaro 42:c4e9c1116af4 77 }
mbedalvaro 42:c4e9c1116af4 78 else
mbedalvaro 42:c4e9c1116af4 79 {
mbedalvaro 42:c4e9c1116af4 80 m_position++;
mbedalvaro 42:c4e9c1116af4 81 }
mbedalvaro 42:c4e9c1116af4 82
mbedalvaro 42:c4e9c1116af4 83 wrapValue();
mbedalvaro 42:c4e9c1116af4 84
mbedalvaro 42:c4e9c1116af4 85 newValue=true;
mbedalvaro 42:c4e9c1116af4 86 }
mbedalvaro 42:c4e9c1116af4 87