Სარჩევი:
ვიდეო: Rotary Encoder - გაგება და გამოყენება (Arduino/სხვა ΜController): 3 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
მბრუნავი კოდირება არის ელექტრომექანიკური მოწყობილობა, რომელიც გარდაქმნის მოძრაობის ციფრულ ან ანალოგურ ინფორმაციას. ის შეიძლება მოტრიალდეს საათის ისრის მიმართულებით ან ისრის საწინააღმდეგოდ. არსებობს ორი სახის მბრუნავი კოდირება: აბსოლუტური და ნათესავი (ინკრემენტალური) კოდირებით.
მიუხედავად იმისა, რომ აბსოლუტური კოდირება გამოსცემს მნიშვნელობას პროპორციულად ამჟამინდელი ლილვის კუთხისა, დამატებითი შიფრატორი გამოაქვს შახტის საფეხური და მისი მიმართულება. (ამ შემთხვევაში ჩვენ გვაქვს დამატებითი კოდირება)
მბრუნავი კოდირები უფრო პოპულარული ხდება, რადგან თქვენ შეგიძლიათ გამოიყენოთ ორი ფუნქცია ერთ ელექტრო მოდულში: მარტივი გადამრთველი ოპერაციების დასადასტურებლად და მბრუნავი კოდირება ნავიგაციისთვის, მაგ. მენიუს საშუალებით.
დამატებითი მბრუნავი კოდირება წარმოქმნის ორ გამომავალ სიგნალს, როდესაც მისი ლილვი ბრუნავს. მიმართულებიდან გამომდინარე, ერთი სიგნალი მიჰყავს მეორეს. (იხილეთ ქვემოთ)
ნაბიჯი 1: გამომავალი მონაცემების გაგება
როგორც ხედავთ, როდესაც კოდირების ლილვი იწყებს ბრუნვას საათის ისრის მიმართულებით, A გამომავალი პირველი დაეცემა LOW– ზე და B გამოდის მას შემდეგ. საათის ისრის საწინააღმდეგო მიმართულებით ოპერაცია პირიქით ხდება.
ახლა ჩვენ უბრალოდ უნდა განვახორციელოთ ეს ჩვენს μController– ზე (მე გამოვიყენე Arduino Nano).
ნაბიჯი 2: შექმენით წრე
როგორც ადრე აღვნიშნე, შედეგები გამოიმუშავებს HIGH და LOW ფლანგს. ΜC კონტროლერის მონაცემთა A და B პინზე სუფთა HIGH მისაღებად უნდა დავამატოთ Pull-Up რეზისტორები. საერთო Pin C მიდის პირდაპირ მიწაზე დაბალი ფლანგისთვის.
შიდა გადამრთველის შესახებ ინფორმაციის მისაღებად (ღილაკზე დაჭერით) ჩვენ გამოვიყენებთ დანარჩენ ორ ქინძისთავს. ერთი მათგანი გადადის VCC– ზე, ხოლო მეორე - μC კონტროლერის მონაცემთა პინზე. ჩვენ ასევე უნდა დავამატოთ Pull-Down Resistor მონაცემთა პინზე, რომ მივიღოთ სუფთა LOW.
ასევე შესაძლებელია გამოიყენოთ თქვენი μController– ის შიდა Pull-Up და Pull-Down რეზისტორები!
ჩემს შემთხვევაში პინუტი ასე გამოიყურება:
- +3, 3V => +3, 3V (არდუინო) (ასევე შესაძლებელია +5 ვ)
- GND => GND (არდუინო)
- A => Pin10
-
B =>
ჩამაგრება
11
- C => GND
-
SW =>
ჩამაგრება
12
ნაბიჯი 3: კოდის წერა
int pinA = 10; // შიდა გადამრთველი A int pinB = 11; // შიდა გადამრთველი B int pinSW = 12; // გადართვა (დაჭერილი კოდირება) int encoderPosCount = 0; // იწყება ნულიდან, შეცვალეთ თუ გსურთ
int positionval;
bool switchval; int mrotate ბოლო; int mrotate;
void setup () {
int mrotateLast = digitalRead (pinA); სერიული.დაწყება (9600); დაგვიანება (50); }
void loop () {readencoder (); if (readwitch () == 1) {Serial.println ("გადართვა = 1"); }}
int readencoder () {
mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// სახელური ბრუნავს if (digitalRead (pinB)! = mrotate) {// switch A პირველი შეიცვალა -> საათის ისრის მიმართულებით მბრუნავი encoderPosCount ++; Serial.println ("ბრუნავს საათის ისრის მიმართულებით"); } else {// გადამრთველი B შეიცვალა ჯერ-> საათის ისრის საწინააღმდეგო მბრუნავი encoderPosCount--; Serial.println ("ბრუნავს საათის ისრის საწინააღმდეგოდ"); }
Serial.print ("კოდირების პოზიცია:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = მოროტა; encoderPosCount დაბრუნება; } bool readwitch () {
if (digitalRead (pinSW)! = 0) {// გადამრთველი დაჭერილია
while (digitalRead (pinSW)! = 0) {} // გადამრთველი ამჟამად დაჭერილია switchval = 1; } else {switchval = 0;} // switch არის unpressed დაბრუნების switchval; }
ახლა თქვენ შეგიძლიათ ჩართოთ კოდირება და ცვლადი encoderPosCount გამოითვლება, თუ ბრუნავთ საათის ისრის მიმართულებით და ითვლით, თუ ბრუნავთ საათის ისრის საწინააღმდეგოდ.
Ის არის! უბრალოდ და სასარგებლო.
მოგერიდებათ შეცვალოთ და შეასრულოთ კოდი. თქვენ შეგიძლიათ განახორციელოთ იგი თქვენს პროექტში.
მე ასევე ავტვირთავ LED პროექტს, სადაც გამოვიყენე კოდირებით, რომ განვსაზღვრო ჩემი LED- ების სიკაშკაშე.
გირჩევთ:
USB მოცულობის ღილაკი DigiSpark და Rotary Encoder გამოყენებით: 3 ნაბიჯი
USB მოცულობის ღილაკი DigiSpark და Rotary Encoder გამოყენებით: ეს არის სუპერ იაფი USB მოცულობის კონტროლის სახელური. ზოგჯერ ტრადიციული სახელურები უფრო მოსახერხებელია საგნების გასაკონტროლებლად ვიდრე მაუსის ყველგან დაჭერით. ეს პროექტი იყენებს DigiSpark, Rotary Encoder და Adafruit Trinket USB ბიბლიოთეკას (https: //github.c
Rotary Encoder: როგორ მუშაობს და როგორ გამოვიყენოთ Arduino– სთან ერთად: 7 ნაბიჯი
Rotary Encoder: როგორ მუშაობს და როგორ გამოვიყენოთ Arduino– სთან ერთად: შეგიძლიათ წაიკითხოთ ეს და სხვა საოცარი გაკვეთილები ElectroPeak– ის ოფიციალურ ვებ – გვერდზე. მიმოხილვა პირველ რიგში, თქვენ იხილავთ ინფორმაციას ბრუნვის კოდირების შესახებ და შემდეგ ისწავლით თუ როგორ
Rotary Encoder Kit Tutorial: 5 ნაბიჯი
Rotary Encoder Kit Tutorial: აღწერა: ეს მბრუნავი კოდირების ნაკრები შეიძლება გამოყენებულ იქნას ძრავის პოზიციისა და სიჩქარის შესაფასებლად. ეს არის ძალიან მარტივი ნაკრები, რომელიც შედგება ოპტიკური სხივის სენსორისგან (ოპტო გადამრთველი, ფოტოტრანსისტორი) და ნაჭერი დისკიდან. მისი დაკავშირება შესაძლებელია ნებისმიერ მიკროკონტროლთან
ავტომატური კატაპულტი შინაური ცხოველების საკვების (ძაღლი, კატა, ქათამი და სხვა), ბურთების სროლა და სხვა! 4 ნაბიჯი (სურათებით)
ავტომატური კატაპულტი შინაური ცხოველების საკვების (ძაღლი, კატა, ქათამი და სხვა) სროლა, ბურთების სროლა და სხვა !: გამარჯობა და კეთილი იყოს თქვენი მობრძანება ჩემს პირველ სასწავლებელში! ჩვენს ძაღლს უყვარს მისი საკვები, ის ფაქტიურად ყველაფერს შეჭამს წამებში. მე შევიმუშავე გზები, რომ შემეძლებინა ეს, დაწყებული საჭმლის ბურთებიდან დაწყებული, შემოგარენში მთელს შემოგარენში. გასაკვირია, რომ ის
Rotary Encoder– ის სახელმძღვანელო არდუინოსთან ერთად: 6 ნაბიჯი
სახელმძღვანელო Rotary Encoder With Arduino: Rotary encoder არის ელექტრონული კომპონენტი, რომელსაც შეუძლია მოძრაობის და პოზიციის მონიტორინგი ბრუნვის დროს. მბრუნავი კოდირება იყენებს ოპტიკურ სენსორებს, რომლებსაც შეუძლიათ პულსის წარმოქმნა მბრუნავი კოდირების ბრუნვისას. მბრუნავი კოდირების გამოყენება ჩვეულებრივ როგორც მექანიკური