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.

Pistikud peavad olema õigesti ühendatud: nelja kanaliga sisend (D) pesasse (parempoolne) ning kolme kanaliga sisend (A) pesasse (vasakpoolne).

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 <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());
  }
}
et/iot/examples/encoder.txt · Last modified: 2023/01/28 10:00 (external edit)
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