just a test

Dependencies:   mbed

Fork of scoreLight_Advanced by Alvaro Cassinelli

Committer:
mbedalvaro
Date:
Tue Dec 02 04:28:42 2014 +0000
Revision:
48:7633d8e7b0d3
Parent:
42:c4e9c1116af4
this is the working version of the skin games sowtware (aka, scorelight but with pre-determined "games")

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedalvaro 42:c4e9c1116af4 1 #ifndef CROTENC_H_INCLUDED
mbedalvaro 42:c4e9c1116af4 2 #define CROTENC_H_INCLUDED
mbedalvaro 42:c4e9c1116af4 3
mbedalvaro 42:c4e9c1116af4 4 #include "mbed.h"
mbedalvaro 42:c4e9c1116af4 5
mbedalvaro 42:c4e9c1116af4 6
mbedalvaro 42:c4e9c1116af4 7 /* This Class handles a rotary encoder like the one from Pollin electronic (Panasonic EVEP...).
mbedalvaro 42:c4e9c1116af4 8 * It uses two pins, one creating an interrupt on change.
mbedalvaro 42:c4e9c1116af4 9 * Rotation direction is determined by checking the state of the other pin.
mbedalvaro 42:c4e9c1116af4 10 *
mbedalvaro 42:c4e9c1116af4 11 * Operating the encoder changes an internal integer value that can be read
mbedalvaro 42:c4e9c1116af4 12 * by Get() or the operator int() functions.
mbedalvaro 42:c4e9c1116af4 13 * A new value can be set by Set(value) or opperator=.
mbedalvaro 42:c4e9c1116af4 14 *
mbedalvaro 42:c4e9c1116af4 15 * Autor: Thomas Raab (Raabinator)
mbedalvaro 42:c4e9c1116af4 16 *
mbedalvaro 42:c4e9c1116af4 17 * Dent steady point ! ! !
mbedalvaro 42:c4e9c1116af4 18 * +-----+ +-----+
mbedalvaro 42:c4e9c1116af4 19 * pinA (interrupt) | | | |
mbedalvaro 42:c4e9c1116af4 20 * --+ +-----+ +---
mbedalvaro 42:c4e9c1116af4 21 * +-----+ +-----+
mbedalvaro 42:c4e9c1116af4 22 * pinB | | | |
mbedalvaro 42:c4e9c1116af4 23 * ----+ +-----+ +-
mbedalvaro 42:c4e9c1116af4 24 * --> C.W
mbedalvaro 42:c4e9c1116af4 25 * CW: increases position value
mbedalvaro 42:c4e9c1116af4 26 * CCW: decreases position value
mbedalvaro 42:c4e9c1116af4 27 *
mbedalvaro 42:c4e9c1116af4 28 * changelog:
mbedalvaro 42:c4e9c1116af4 29 *
mbedalvaro 42:c4e9c1116af4 30 * 09. Nov. 2010
mbedalvaro 42:c4e9c1116af4 31 * First version published.
mbedalvaro 42:c4e9c1116af4 32 *
mbedalvaro 42:c4e9c1116af4 33 */
mbedalvaro 42:c4e9c1116af4 34
mbedalvaro 42:c4e9c1116af4 35 #define ROTARY_ENCODER1_PINA p21
mbedalvaro 42:c4e9c1116af4 36 #define ROTARY_ENCODER1_PINB p22
mbedalvaro 42:c4e9c1116af4 37
mbedalvaro 42:c4e9c1116af4 38 #define ROTARY_ENCODER2_PINA p26
mbedalvaro 42:c4e9c1116af4 39 #define ROTARY_ENCODER2_PINB p27
mbedalvaro 42:c4e9c1116af4 40
mbedalvaro 42:c4e9c1116af4 41 class CRotaryEncoder
mbedalvaro 42:c4e9c1116af4 42 {
mbedalvaro 42:c4e9c1116af4 43 public:
mbedalvaro 42:c4e9c1116af4 44 CRotaryEncoder(PinName pinA, PinName pinB);
mbedalvaro 42:c4e9c1116af4 45 ~CRotaryEncoder();
mbedalvaro 42:c4e9c1116af4 46
mbedalvaro 42:c4e9c1116af4 47 int Get(void);
mbedalvaro 42:c4e9c1116af4 48 inline operator int() { return Get(); }
mbedalvaro 42:c4e9c1116af4 49
mbedalvaro 42:c4e9c1116af4 50 void Set(int value);
mbedalvaro 42:c4e9c1116af4 51 inline CRotaryEncoder& operator= ( int value ) { Set(value); return *this; }
mbedalvaro 42:c4e9c1116af4 52
mbedalvaro 42:c4e9c1116af4 53 void SetMinMax(int min, int max);
mbedalvaro 42:c4e9c1116af4 54
mbedalvaro 42:c4e9c1116af4 55 bool CheckNew();
mbedalvaro 42:c4e9c1116af4 56
mbedalvaro 42:c4e9c1116af4 57 private:
mbedalvaro 42:c4e9c1116af4 58 void wrapValue();
mbedalvaro 42:c4e9c1116af4 59 InterruptIn *m_pinA;
mbedalvaro 42:c4e9c1116af4 60 DigitalIn *m_pinB;
mbedalvaro 42:c4e9c1116af4 61 volatile int m_position, maxValue, minValue;
mbedalvaro 42:c4e9c1116af4 62 volatile bool newValue;
mbedalvaro 42:c4e9c1116af4 63
mbedalvaro 42:c4e9c1116af4 64 void rise(void);
mbedalvaro 42:c4e9c1116af4 65 void fall(void);
mbedalvaro 42:c4e9c1116af4 66
mbedalvaro 42:c4e9c1116af4 67
mbedalvaro 42:c4e9c1116af4 68 };
mbedalvaro 42:c4e9c1116af4 69
mbedalvaro 42:c4e9c1116af4 70 extern CRotaryEncoder rotaryEncoder1;
mbedalvaro 42:c4e9c1116af4 71 extern CRotaryEncoder rotaryEncoder2;
mbedalvaro 42:c4e9c1116af4 72
mbedalvaro 42:c4e9c1116af4 73 #endif