Alvaro Cassinelli / Mbed 2 deprecated skinGames_forktest

Dependencies:   mbed

Fork of scoreLight_Advanced by Alvaro Cassinelli

Committer:
mbedalvaro
Date:
Mon Mar 31 10:57:35 2014 +0000
Revision:
44:46e25fa1669b
Parent:
42:c4e9c1116af4
This new version works pretty well, even if the following blob is not as nice as in elasticLoop_OSC. New: fraction rendering / first point wait solved (more regular rendering) / better delay calibration.

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 44:46e25fa1669b 11 m_pinA->mode(PullUp); // this is for use in the case of the simple contact based rotary encoder (common is tied to ground)
mbedalvaro 42:c4e9c1116af4 12 m_pinA->rise(this, &CRotaryEncoder::rise);
mbedalvaro 42:c4e9c1116af4 13 m_pinA->fall(this, &CRotaryEncoder::fall);
mbedalvaro 42:c4e9c1116af4 14
mbedalvaro 42:c4e9c1116af4 15 m_pinB = new DigitalIn(pinB);
mbedalvaro 44:46e25fa1669b 16 m_pinB->mode(PullUp);
mbedalvaro 42:c4e9c1116af4 17 m_position = 0;
mbedalvaro 42:c4e9c1116af4 18
mbedalvaro 42:c4e9c1116af4 19 newValue=true;
mbedalvaro 42:c4e9c1116af4 20 minValue=0; maxValue=360;
mbedalvaro 42:c4e9c1116af4 21 }
mbedalvaro 42:c4e9c1116af4 22
mbedalvaro 42:c4e9c1116af4 23 CRotaryEncoder::~CRotaryEncoder()
mbedalvaro 42:c4e9c1116af4 24 {
mbedalvaro 42:c4e9c1116af4 25 delete m_pinA;
mbedalvaro 42:c4e9c1116af4 26 delete m_pinB;
mbedalvaro 42:c4e9c1116af4 27 }
mbedalvaro 42:c4e9c1116af4 28
mbedalvaro 42:c4e9c1116af4 29 void CRotaryEncoder::SetMinMax(int min, int max) {
mbedalvaro 42:c4e9c1116af4 30 minValue=min;
mbedalvaro 42:c4e9c1116af4 31 maxValue=max;
mbedalvaro 42:c4e9c1116af4 32 }
mbedalvaro 42:c4e9c1116af4 33
mbedalvaro 42:c4e9c1116af4 34 int CRotaryEncoder::Get(void)
mbedalvaro 42:c4e9c1116af4 35 {
mbedalvaro 42:c4e9c1116af4 36 return m_position;
mbedalvaro 42:c4e9c1116af4 37 }
mbedalvaro 42:c4e9c1116af4 38
mbedalvaro 42:c4e9c1116af4 39 void CRotaryEncoder::Set(int value)
mbedalvaro 42:c4e9c1116af4 40 {
mbedalvaro 42:c4e9c1116af4 41 if (value>maxValue) m_position = maxValue;
mbedalvaro 42:c4e9c1116af4 42 if (value<minValue) m_position = minValue;
mbedalvaro 42:c4e9c1116af4 43 m_position = value;
mbedalvaro 42:c4e9c1116af4 44 }
mbedalvaro 42:c4e9c1116af4 45
mbedalvaro 42:c4e9c1116af4 46 bool CRotaryEncoder::CheckNew()
mbedalvaro 42:c4e9c1116af4 47 {
mbedalvaro 42:c4e9c1116af4 48 bool auxValue=newValue;
mbedalvaro 42:c4e9c1116af4 49 newValue=0;
mbedalvaro 42:c4e9c1116af4 50 return(auxValue);
mbedalvaro 42:c4e9c1116af4 51 }
mbedalvaro 42:c4e9c1116af4 52
mbedalvaro 42:c4e9c1116af4 53 void CRotaryEncoder::wrapValue() {
mbedalvaro 42:c4e9c1116af4 54 if (m_position>maxValue) m_position = minValue;
mbedalvaro 42:c4e9c1116af4 55 if (m_position<minValue) m_position = maxValue;
mbedalvaro 42:c4e9c1116af4 56 }
mbedalvaro 42:c4e9c1116af4 57
mbedalvaro 42:c4e9c1116af4 58 void CRotaryEncoder::fall(void)
mbedalvaro 42:c4e9c1116af4 59 {
mbedalvaro 42:c4e9c1116af4 60 if(*m_pinB == 1)
mbedalvaro 42:c4e9c1116af4 61 {
mbedalvaro 42:c4e9c1116af4 62 m_position++;
mbedalvaro 42:c4e9c1116af4 63 }
mbedalvaro 42:c4e9c1116af4 64 else
mbedalvaro 42:c4e9c1116af4 65 {
mbedalvaro 42:c4e9c1116af4 66 m_position--;
mbedalvaro 42:c4e9c1116af4 67 }
mbedalvaro 42:c4e9c1116af4 68
mbedalvaro 42:c4e9c1116af4 69 wrapValue();
mbedalvaro 42:c4e9c1116af4 70
mbedalvaro 42:c4e9c1116af4 71 newValue=true;
mbedalvaro 42:c4e9c1116af4 72 }
mbedalvaro 42:c4e9c1116af4 73
mbedalvaro 42:c4e9c1116af4 74 void CRotaryEncoder::rise(void)
mbedalvaro 42:c4e9c1116af4 75 {
mbedalvaro 42:c4e9c1116af4 76 if(*m_pinB == 1)
mbedalvaro 42:c4e9c1116af4 77 {
mbedalvaro 42:c4e9c1116af4 78 m_position--;
mbedalvaro 42:c4e9c1116af4 79 }
mbedalvaro 42:c4e9c1116af4 80 else
mbedalvaro 42:c4e9c1116af4 81 {
mbedalvaro 42:c4e9c1116af4 82 m_position++;
mbedalvaro 42:c4e9c1116af4 83 }
mbedalvaro 42:c4e9c1116af4 84
mbedalvaro 42:c4e9c1116af4 85 wrapValue();
mbedalvaro 42:c4e9c1116af4 86
mbedalvaro 42:c4e9c1116af4 87 newValue=true;
mbedalvaro 42:c4e9c1116af4 88 }
mbedalvaro 42:c4e9c1116af4 89