Darasi 97-1: Gano Juyawar Rotary Encoder da Danna Maɓallin
Wannan jagorar tana nuna yadda ake gina ingantaccen kuma mai ɗorewa kayan sarrafawa don ayyukan Arduino naka ta amfani da rotary encoder. Ba kamar potentiometer ba, wanda ke da iyakataccen kewayon motsi, rotary encoder na iya juyawa ci gaba a kowane bangare, yana sa ya zama zaɓi mai kyau don aikace-aikacen da ke buƙatar gyare-gyare na ƙari ko juyawa marar iyaka. Wannan aikin yana mai da hankali kan ainihin aikin gano alkiblar juyawa da matsayin encoder, da kuma yin rijista lokacin da aka danna maɓallin turawa mai haɗe. Wannan yana samar da ainihin dabaru don ayyuka masu ci gaba da yawa, kamar ƙirƙirar tsarin kewayawa na menu, daidaita ƙarar dijital, ko daidaita mitar da kyau. Abubuwan sadarwa na injiniya na rotary encoder suma sun fi ɗorewa sosai fiye da hanyar carbon ta potentiometer, suna tabbatar da tsawon rayuwar ayyukanka.
Ga wasu ra'ayoyi masu amfani game da abin da za ka iya ginawa da wannan tushe:
- Tsarin Kewayawa na Menu: Juya encoder don gungura ta zaɓuɓɓuka akan LCD kuma danna maɓallin don zaɓar abu.
- Kayan Aikin Daidaitawa: Yi amfani da shi don daidaita siga, kamar saita lokaci ko daidaita saurin mota a ƙananan ƙayyadaddun matakai.
- Mai Sarrafa Hannun Robotic: Maye gurbin joystick da encoder don ingantaccen sarrafa matsayin servo motor mataki-mataki.
Kayan Aikin da Ake Bukata
Don bin wannan darasi, za ka buƙaci waɗannan abubuwan:
- Arduino Uno (ko wani kwamfuta mai jituwa makamancin haka)
- Rotary Encoder Module (tare da PCB) ko rotary encoder mara kayan aiki tare da resistors 10kΩ guda uku
- Breadboard da wayoyi masu haɗawa
- USB kebul don shirya Arduino
Jagorar Haɗin Waya
Rotary encoder yana sauƙaƙa tsarin bin diddigin juyawa. Yana da filaye biyu na fitarwa (sau da yawa ana lakafta su A da B) waɗanda ke samar da takamaiman jerin sigina yayin da ake juya ƙullin. Ta hanyar karanta waɗannan sigina, Arduino na iya tantance alkibla da adadin juyawa. Encoder kuma ya haɗa da maɓallin turawa mai ginanne, wanda ake kunna shi ta hanyar danna ƙullin ƙasa, yana ba da ƙarin shigarwa don hulɗar mai amfani.
Haɗin waya don wannan aikin yana da sauƙi. Hoton da aka bayar yana nuna yadda ake haɗa module na encoder zuwa Arduino. Filin CLK (ko A) an haɗa shi da dijital pin 2, filin DT (ko B) an haɗa shi da dijital pin 3, kuma filin SW (Switch) an haɗa shi da dijital pin 4. Filin + (VCC) na encoder an haɗa shi da samar da 3.3V, kuma filin GND an haɗa shi da ƙasa gama gari.
Idan kana amfani da rotary encoder mara kayan aiki ba tare da PCB ba, za ka buƙaci ƙara resistors guda uku na ɗagawa (tsakanin 1kΩ da 100kΩ) zuwa filayensa na fitarwa don tabbatar da tsabtataccen sigina ga Arduino.
Bayanin Lambar
Lambar wannan aikin an tsara ta don zama mai sauƙi da ilmantarwa. Tana mai da hankali kan sassan da mai amfani zai iya daidaitawa a saman sketch, yana ba ka damar sauƙaƙa daidaita shi don filaye daban-daban ko ayyuka.
Sashe na farko yana bayyana filayen da aka haɗa encoder da su. Waɗannan su ne ƙimar farko da za ka buƙaci canza idan kayan aikin ka an haɗa su daban.
const int SW_PIN = 4;
const int PIN_A =2;
const int PIN_B =3;
SW_PIN: Wannan akai-akai yana bayyana filin Arduino da aka haɗa da maɓallin turawa na encoder.PIN_AdaPIN_B: Waɗannan akai-akai suna bayyana filayen Arduino da aka haɗa da tashoshi biyu na fitarwa na encoder, A da B. Ana amfani da waɗannan filaye ta hanyar ɗakin karatu naEncoderdon bin diddigin juyawar ƙullin.
Na gaba, lambar ta haɗa da ɗakin karatu da ake buƙata kuma ta ƙirƙiri misali na abin encoder, tana haɗa shi da filayen da muka bayyana.
#include <Encoder.h>
Encoder myEnc(PIN_A, PIN_B);
A cikin aikin setup(), an fara sarrafa serial monitor don sadarwa, kuma an saita filin switch azaman shigarwa.
void setup() {
Serial.begin(9600);
pinMode(SW_PIN, INPUT);
Serial.println("Basic Encoder Test:");
}
Babban dabaru a cikin aikin loop() yana yin ayyuka biyu masu mahimmanci. Na farko, yana ci gaba da karanta matsayin encoder na yanzu. Idan wannan matsayi ya canza daga ƙimar da aka yi rikodin a baya, yana nufin an juya ƙullin, kuma ana buga sabon matsayi zuwa serial monitor. Na biyu, yana duba yanayin switch. Lokacin da aka danna switch, filin sa yana ja ƙasa, kuma lambar tana buga saƙo don nuna danna.
long oldPosition = -999;
void loop() {
long newPosition = myEnc.read();
if (newPosition != oldPosition) {
oldPosition = newPosition;
Serial.println(newPosition);
}
if( digitalRead(SW_PIN) == LOW)
{
Serial.println("Switch Pressed");
}
delay(200);
}
Aikin myEnc.read() aiki ne na musamman daga ɗakin karatu na Encoder. Yana dawo da ƙidayar matsayin encoder na yanzu. Ta hanyar kwatanta karatun na yanzu da na baya, za ka iya gano motsi. Aikin digitalRead(SW_PIN) aiki ne na yau da kullun na Arduino wanda ke karanta yanayin filin switch.
Nunin Aiki na Kai Tsaye
Da zar ka loda lambar zuwa Arduino ɗinka, za ka iya buɗe Serial Monitor (saita shi zuwa 9600 baud) don ganin sakamakon. Idan ka juya ƙullin encoder zuwa agogo, za ka ga lambobin suna ƙaruwa. Juya shi zuwa gaba da agogo zai sa lambobin su ragu. Idan ka danna ƙullin ƙasa, saƙon "An Danna Maɓallin" zai bayyana. Wannan yana tabbatar da cewa duka juyawa da danna maɓallin ana gano su daidai ta tsarin.
Ayyukan da suka shafi wannan bidiyo
- Darasi 97-2: Sarrafa Motar Servo Ta Amfani da Rotary Encoder
- Darasi 97-3: Sarrafa Motar Servo Ta Amfani da Rotary Encoder da Nuna Kwana akan LCD
Babuka
- [00:01] Gabatarwa ga sarrafa servo da rotary encoder
- [01:41] Me ya sa ake amfani da rotary encoder maimakon potentiometer
- [04:18] Bayanin kayan aikin rotary encoder da haɗin waya
- [13:28] Shigar da ɗakunan karatu da ake buƙata
- [14:54] Bayanin misalin lambar encoder na asali
- [16:43] Nuna lambar encoder na asali
- [17:52] Lambar da aka gyara tare da maɓallin turawa
- [20:20] Cikakken bayanin lambar don sarrafa servo da LCD
- [23:47] Nemo adireshin I2C na LCD
- [30:01] Nuna cikakken aikin
/*
* Lesson 97-1: Rotary Encoder with switch
* This code detects rotation of the encoder knob
* and also detects when it is pushed
* Download and resource page https://robojax.com/RJT453
* Watch full details video: https://youtu.be/6xVLbNlmK-g
This video is part of the Arduino Step by Step Course, which starts here: https://youtu.be/-6qSrDUA5a8
If you found this tutorial helpful, please support me so I can continue creating
content like this. Make a donation using PayPal by credit card: https://bit.ly/donate-robojax
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact. *
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
* Updated by Ahmad Shamshiri on Jan 23, 2022
* Encoder Library - Basic Example
* http://www.pjrc.com/teensy/td_libs_Encoder.html
*
* This example code is in the public domain.
*/
const int SW_PIN = 4;
const int PIN_A =2;
const int PIN_B =3;
#include <Encoder.h>
// Change these two numbers to the pins connected to your encoder.
// Best Performance: both pins have interrupt capability
// Good Performance: only the first pin has interrupt capability
// Low Performance: neither pin has interrupt capability
Encoder myEnc(PIN_A, PIN_B);
// avoid using pins with LEDs attached
void setup() {
Serial.begin(9600);
pinMode(SW_PIN, INPUT);
Serial.println("Basic Encoder Test:");
}
long oldPosition = -999;
void loop() {
long newPosition = myEnc.read();
if (newPosition != oldPosition) {
oldPosition = newPosition;
Serial.println(newPosition);
}
if( digitalRead(SW_PIN) == LOW)
{
Serial.println("Switch Pressed");
}
delay(200);
//Watch video details: https://youtu.be/6xVLbNlmK-g
}
Abin da zaka iya bukata
-
Amazon
-
Amazon
-
Amazon
-
eBay
-
eBay
-
AliExpressPurchase an LCD1602 from AliExpresss.click.aliexpress.com
Albarkatun da kuma shafukan da za a duba
-
WajePAC9685 Library (from GitHub)github.com
-
WajePurchase an LCD1602 from AliExpresss.click.aliexpress.com
-
Waje
-
Waje
-
WajePurchase ZK-5DA from Amazon UKamzn.to
-
WajeSG90 Servo on Amazon USAamzn.to
-
WajeSG90 Servosamzn.to
Fayiloli📁
Babu fayiloli da ake da su.