This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
en:iot:examples:encoder [2018/02/27 14:07] – Somepub | en:iot:examples:encoder [2021/03/05 10:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Encoder example ====== | ====== Encoder example ====== | ||
- | The encoder sensor device has to be connected to the sensor module. Encoder sensor device has a two 3,5 mm plugs what has to be connected to the sensor module 3,5 mm input jackets. The controller and sensor modules must be connected. | + | The encoder sensor device has to be connected to the sensor module. Encoder sensor device has a two 3,5 mm plugs what has to be connected to the sensor module 3,5 mm input jackets. The controller and sensor modules must be connected. |
{{: | {{: | ||
Line 12: | Line 12: | ||
Needed libraries | Needed libraries | ||
- | < | + | < |
- | The example code will print out encoder current position value | + | The example code will print out and send to the broker |
- | <code c> | + | |
+ | <code c> | ||
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
+ | #include < | ||
- | #include < | + | #define WIFI_NAME " |
+ | #define WIFI_PASSWORD " | ||
- | # | + | // Defining pins as need for the encoder |
- | # | + | # |
+ | # | ||
+ | #define ENC_BTN | ||
+ | #define ENC_STEPS_PER_NOTCH 4 | ||
+ | ClickEncoder encoder = ClickEncoder(ENC_PINA, | ||
- | Encoder myEnc(ENC_PIN_1, | ||
Ticker encTicker; | Ticker encTicker; | ||
- | long oldPosition | ||
bool encFlag; | bool encFlag; | ||
+ | uint16_t button; | ||
+ | // Function started after the connection to the server is established. | ||
void iot_connected() | void iot_connected() | ||
{ | { | ||
Line 45: | Line 51: | ||
void setup() | void setup() | ||
{ | { | ||
- | Serial.begin(115200); | + | Serial.begin(115200); |
Serial.println(" | Serial.println(" | ||
- | | + | |
- | | + | // |
+ | // | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | encoder.setButtonHeldEnabled(true); | ||
+ | encoder.setDoubleClickEnabled(true); | ||
encTicker.attach(1, | encTicker.attach(1, | ||
} | } | ||
+ | //Main code, which runs in loop | ||
void loop() | void loop() | ||
{ | { | ||
- | iot.handle(); | + | iot.handle(); // IoT behind the plan work, it should be periodically called |
+ | delay(10); // wait for 0.01 second | ||
+ | static uint32_t lastService = 0; | ||
- | // Send encoder reading to the serial port, when it changes | + | // Sending message “Button”, when the analogue value is bigger less then 100 |
- | | + | |
- | if (newPosition != oldPosition) | + | |
{ | { | ||
- | | + | Serial.println( "button"); |
- | | + | |
- | Serial.println(newPosition); | + | |
} | } | ||
- | // Send encoder reading to server | + | |
+ | { | ||
+ | lastService = micros(); | ||
+ | encoder.service(); | ||
+ | } | ||
+ | |||
+ | static int16_t last, value; | ||
+ | value += encoder.getValue(); | ||
+ | |||
+ | | ||
+ | if(value != last) | ||
+ | { | ||
+ | last = value; | ||
+ | Serial.print(" | ||
+ | Serial.println(value); | ||
+ | } | ||
+ | // Publishing encoder value in MQTT broker | ||
if(encFlag) | if(encFlag) | ||
{ | { | ||
encFlag = false; | encFlag = false; | ||
- | String msg = String(newPosition); | + | String msg = String(value); |
iot.publishMsg(" | iot.publishMsg(" | ||
} | } | ||
} | } | ||
- | |||
</ | </ |