Breakout Rotary Encoder 360 Derajat PWM

      Breakout Rotary Encoder 360 Derajat PWM

      USD
      Model #
      Quantity
      qty limit cart limit

      Pengukur Biaya Pengiriman

      Note: You must have items in your cart already before you can see the estimated costs to ship your cart. This shipping tool will estimate the total shipping cost for your entire basket.

      Deskripsi

      Jenis sakelar ini adalah encoder putar inkremental. Faktanya, ini adalah yang paling banyak digunakan dari semua pembuat enkode putar karena biayanya yang rendah dan kemampuannya untuk memberikan sinyal yang dapat dengan mudah ditafsirkan untuk memberikan informasi terkait gerakan seperti kecepatan.

      Dengan memutar, encoder putar dapat menghitung frekuensi pulsa keluaran dalam arah positif dan sebaliknya selama rotasi, tidak seperti penghitung potensiometer putar tanpa batasan penghitungan. Dengan tombol pada rotary encoder, itu dapat diatur ulang ke keadaan awal mulai dari nol.

      Kode pengujian

      int redPin = 2;
      int yellowPin = 3;
      int greenPin = 4;
      int aPin = 6;
      int bPin = 7;
      int buttonPin = 5;
      int negara = 0;
      int longPeriod = 5000; // Waktu di hijau atau merah
      int shortPeriod = 700; // Jangka waktu saat berubah
      int targetCount = shortPeriod;
      int hitung = 0;
      batal penyiapan ()
      {
      pinMode (aPin, INPUT);
      pinMode (bPin, INPUT);
      pinMode (buttonPin, INPUT);
      pinMode (redPin, OUTPUT);
      pinMode (yellowPin, OUTPUT);
      pinMode (greenPin, OUTPUT);
      }
      void loop ()
      {
      hitung ++;
      if (digitalRead (buttonPin))
        {
      setLights (TINGGI, TINGGI, TINGGI);
        }
      lain
        {
      int perubahan = getEncoderTurn ();
      int newPeriod = longPeriod + (ubah * 1000);
      if (newPeriod> = 1000 && newPeriod <= 10000)
          {
      longPeriod = newPeriod;
          }
      if (count> targetCount)
          {
      setState ();
      hitung = 0;
          }
        }
      penundaan (1);
      }
      int getEncoderTurn ()
      {

      // return -1, 0, atau +1
      static int oldA = LOW;
      statis int oldB = RENDAH;
      hasil int = 0;
      int newA = digitalRead (aPin);
      int newB = digitalRead (bPin);
      if (newA! = oldA || newB! = oldB)
        {
      // sesuatu telah berubah
      jika (lamaA == RENDAH && baruA == TINGGI)
          {
      hasil = - (oldB * 2 - 1);
          }
        }
      oldA = newA;
      oldB = newB;
      hasil pengembalian;
      }
      int setState ()
        {
      jika (negara bagian == 0)
          {
      setLights (TINGGI, RENDAH, RENDAH);
      targetCount = longPeriod;
      negara = 1;
          }
      else if (state == 1)
          {
      setLights (TINGGI, TINGGI, RENDAH);
      targetCount = shortPeriod;
      negara = 2;
          }
      lain jika (negara bagian == 2)
          {
      setLights (RENDAH, RENDAH, TINGGI);
      targetCount = longPeriod;
      negara = 3;
          }
      lain jika (negara bagian == 3)
          {
      setLights (RENDAH, TINGGI, RENDAH);
      targetCount = shortPeriod;
      negara = 0;
          }
        }
      void setLights (int merah, int kuning, int hijau)
      {
      digitalWrite (redPin, red);
      digitalWrite (yellowPin, kuning);
      digitalWrite (greenPin, hijau);