Differences

This shows you the differences between two versions of the page.

Link to this comparison view

et:iot:examples:encoder [2023/01/28 13:38] – tekitatud karllallet:iot:examples:encoder [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
 +====== 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:
 +<code>lib_deps = ITTIoT, ClickEncoder</code>
 +
 +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.
 +
 +<code c>
 +#include <Arduino.h>
 +#include <ittiot.h>
 +#include <Ticker.h>
 +#include <ClickEncoder.h>
 +
 +#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());
 +  }
 +}
 +
 +</code>
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0