====== 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());
}
}