====== Enkoodri näidis ====== Enkooder peab olema ühendatud anduri mooduliga. Enkoodril on kaks 3,5 mm pistikut, mis peavad olema ühendatud anduri mooduli 3,5 mm sisendpesadega. Kontrolleri ja anduri moodulid peavad olema omavahel ühendatud. {{:en:iot:examples:encoderpicture1.jpg?200|}} Pistikud peavad olema õigesti ühendatud: nelja kanaliga sisend (D) pesasse (parempoolne) ning kolme kanaliga sisend (A) pesasse (vasakpoolne). {{:en:iot:examples:encoderpicture2.jpg?200|}} {{:en:iot:examples:encoderpicture3.jpg?200|}} Vajaminevad teegid: lib_deps = ITTIoT, ClickEncoder Näidiskood prindib välja ja saadab serverile info enkoodri praeguse asendi väärtuse. Väärtus suureneb enkoodri ratast üht pidi pöörates ning väheneb teist pidi pöörates. Lisaks sellele on enkoodri rattal lüliti, mis aktiveerub alla vajutades. Lülitit vajutades saadetakse info lüliti vajutamise kohta jada- ehk serial porti. #include #include #include #include #define WIFI_NAME "name" #define WIFI_PASSWORD "password" // Defining pins as need for the encoder #define ENC_PINA 12 #define ENC_PINB 13 #define ENC_BTN 0 #define ENC_STEPS_PER_NOTCH 4 ClickEncoder encoder = ClickEncoder(ENC_PINA, ENC_PINB, ENC_BTN, ENC_STEPS_PER_NOTCH); Ticker encTicker; bool encFlag; uint16_t button; // Function started after the connection to the server is established. void iot_connected() { Serial.println("MQTT connected callback"); iot.log("IoT encoder example!"); } void setEncFlag() { encFlag=true; } void setup() { Serial.begin(115200); // setting up serial connection parameter Serial.println("Booting"); //iot.setConfig("wname", WIFI_NAME); //iot.setConfig("wpass", WIFI_PASSWORD); iot.printConfig(); // print json config to serial iot.setup(); // Initialize IoT library // Activating additional button functions encoder.setButtonHeldEnabled(true); encoder.setDoubleClickEnabled(true); encTicker.attach(1, setEncFlag); } //Main code, which runs in loop void loop() { iot.handle(); // IoT behind the plan work, it should be periodically called delay(10); // wait for 0.01 second static uint32_t lastService = 0; // Sending message “Button”, when the analogue value is bigger less then 100 if(analogRead(A0) < 100) { Serial.println( "button"); } if (lastService + 1000 < micros()) { lastService = micros(); encoder.service(); } static int16_t last, value; value += encoder.getValue(); // Send encoder reading to serial monitor, if it has changed if(value != last) { last = value; Serial.print("Encoder Value: "); Serial.println(value); } // Publishing encoder value in MQTT broker if(encFlag) { encFlag = false; String msg = String(value); iot.publishMsg("enc", msg.c_str()); } }