Სარჩევი:

Rotary Encoder– ის სახელმძღვანელო არდუინოსთან ერთად: 6 ნაბიჯი
Rotary Encoder– ის სახელმძღვანელო არდუინოსთან ერთად: 6 ნაბიჯი

ვიდეო: Rotary Encoder– ის სახელმძღვანელო არდუინოსთან ერთად: 6 ნაბიჯი

ვიდეო: Rotary Encoder– ის სახელმძღვანელო არდუინოსთან ერთად: 6 ნაბიჯი
ვიდეო: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 2024, ნოემბერი
Anonim
Rotary Encoder– ის სახელმძღვანელო არდუინოსთან ერთად
Rotary Encoder– ის სახელმძღვანელო არდუინოსთან ერთად

მბრუნავი კოდირება არის ელექტრონული კომპონენტი, რომელსაც შეუძლია მოძრაობის და პოზიციის მონიტორინგი ბრუნვის დროს. მბრუნავი კოდირება იყენებს ოპტიკურ სენსორებს, რომლებსაც შეუძლიათ პულსის წარმოქმნა მბრუნავი კოდირების ბრუნვისას. მბრუნავი კოდირების გამოყენება, როგორც მექანიკური ან რობოტული მოძრაობის მონიტორი, ასევე შეიძლება გამოყენებულ იქნას ეკრანზე მენიუს შესარჩევად. მბრუნავ კოდირებას აქვს ორი გამოსავალი ისე, რომ მას შეუძლია განასხვავოს უარყოფითი (CW) და პოზიტიური (CCW) ბრუნვა და ასევე აქვს ერთი ღილაკი.

ნაბიჯი 1: მბრუნავი კოდირების პულსის ნაკადი

მბრუნავი კოდირების პულსის ნაკადი
მბრუნავი კოდირების პულსის ნაკადი

პულსის ნაკადი, რომელიც წარმოიქმნება შემდეგი მბრუნავი კოდირებით, მსგავსია ზემოთ მოცემულ სურათზე.

ნაბიჯი 2: Rotary Encoder– ის Pinout

მბრუნავი კოდირების Pinout
მბრუნავი კოდირების Pinout

ახსნა:

  • GND GND
  • + + 5V
  • დაჭერისას მბრუნავი კოდირების SW ღილაკი
  • DT მონაცემები
  • CLK მონაცემები 2

ერთი DT ან CLK ქინძისთავები უნდა იყოს დაკავშირებული Arduino Uno– ს წყვეტილ ძირთან, ან ორივე DT და CLK დაკავშირებულია შეწყვეტის პინთან.

ნაბიჯი 3: სქემატური

სქემატური
სქემატური
  • GND à GND Arduino Uno
  • + à + 5V არდუინო უნო
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

ნაბიჯი 4: კოდი

კოდი
კოდი

მომდევნო გაკვეთილში, რომელიც გამოყენებული იქნება შეფერხების სახით არის Arduino Uno– ს PIN 2, ხოლო PIN 3 გამოიყენება მხოლოდ როგორც რეგულარული შეყვანა.

#განსაზღვრეთ კოდირება0PinA 2 #განსაზღვრეთ კოდირება0PinB 3 #განსაზღვრეთ კოდირება0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (კოდირება 0PinA, INPUT_PULLUP); pinMode (კოდირება 0PinB, INPUT_PULLUP); pinMode (კოდირება 0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); სერიული. ბეჭდვა (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); დაგვიანება (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = encoder0Pos/2.5; }

ესკიზის მე -10 სტრიქონი გამოიყენება პინ 2 Arduino Uno– ს შეწყვეტის გასააქტიურებლად. "DoEncoder" ფუნქცია გამოითვლება მბრუნავი კოდირებით. თუ DT და CLK მნიშვნელობა (Arduino Uno– ს pin interrupt) იგივეა, მაშინ „encoder0Pos“ცვლადი გაიზრდება / დაემატება, ამ მდგომარეობის გარდა, „encoder0Pos“ცვლადი მცირდება.

ნაბიჯი 5: ახსნა

ValRotary მნიშვნელობა არის გაშვებული ნაბიჯების რაოდენობის მნიშვნელობა. ValRotary მნიშვნელობა მიიღება მბრუნავი სენსორის კოდირების კითხვის მნიშვნელობიდან 2.5 -ზე. გამოცდის შედეგად მიიღება 2.5 მნიშვნელობა, ვინაიდან მბრუნავი კოდირების ერთი საფეხური შეიძლება აღემატებოდეს 1 -ს, ასე რომ გაყავით 2.5 -ზე მისი მნიშვნელობის მიხედვით პერსპეპის მიხედვით და ასევე წაკითხვის შეფერხების დამატებით.

19 - 25 ხაზზე ყოფნისას არის პროგრამა, რათა დადგინდეს მბრუნავი მბრუნავი კოდირება CW თუ CCW. 19 - 25 სტრიქონების ახსნა არის, როდესაც ამჟამინდელი მბრუნავი კოდირების მაჩვენებელი აღემატება წინა მბრუნავ მონაცემებს, რომლებიც მაშინ გამოხატული იყო როგორც CW. ვინაიდან თუ ამჟამინდელი კითხვა უფრო მცირეა ვიდრე წინა წაკითხვა, მაშინ იგი მითითებულია როგორც CCW.

ნაბიჯი 6: გამომავალი

გამომავალი
გამომავალი

1 = ბრუნვის დაწყების ღილაკის მნიშვნელობა, როდესაც ის არ არის დაჭერილი

გირჩევთ: