Სარჩევი:
- ნაბიჯი 1: DS1803 კავშირი
- ნაბიჯი 2: ბრძანების ბაიტი
- ნაბიჯი 3: კონტროლი DS1803
- ნაბიჯი 4: დაყენება
- ნაბიჯი 5: პროგრამა
ვიდეო: DS1803 Dual Digital Potentiometer With Arduino: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
მე მომწონს DS1803 ციფრული ჭურჭლის გამოყენების გაზიარება არდუინოსთან. ეს IC შეიცავს ორ ციფრულ ჭურჭელს, რომელთა კონტროლი შესაძლებელია ორი მავთულის ინტერფეისზე, ამისათვის მე ვიყენებ wire.h ბიბლიოთეკას.
ამ IC- ს შეუძლია შეცვალოს ჩვეულებრივი ანალოგური ქოთმეტრი. ამ გზით თქვენ შეგიძლიათ აკონტროლოთ მაგალითად გამაძლიერებელი ან კვების წყარო.
ამ ინსტრუქციურად მე ვაკონტროლებ ორი LED- ის სიკაშკაშეს, რომ ნახოთ მუშაობა.
არდუინო ითვლის მბრუნავი კოდირების იმპულსებს და ათავსებს მნიშვნელობას ცვლად ქოთანში [0] და ქოთანში [1]. როდესაც თქვენ ატვირთავთ გადამრთველს გადამრთველზე, შეგიძლიათ გადახვიდეთ ქოთანს [0] და ქოთანს [1].
ქოთნების რეალური მნიშვნელობა იკითხება DS1803– დან და მოთავსებულია ცვლადი potValue [0] და potValue [1] და ნაჩვენებია LCD– ზე.
ნაბიჯი 1: DS1803 კავშირი
აქ შეგიძლიათ ნახოთ DS1803 კავშირი. H არის პოტენომეტრის მაღალი მხარე, L დაბალი მხარე და W გამწმენდი. SCL და SDA არის ავტობუსის კავშირი.
A0, A1 და A2 კავშირით თქვენ შეგიძლიათ მისცეთ DS1803 საკუთარი მისამართი, ამ გზით თქვენ შეგიძლიათ გააკონტროლოთ მეტი მოწყობილობა ერთი ავტობუსის საშუალებით. ჩემს მაგალითში მე მივეცი DS1803 მისამართი 0, ყველა ქინძისთავის მიწასთან შეერთებით.
ნაბიჯი 2: ბრძანების ბაიტი
როგორ მუშაობს DS1803 შეიძლება გამოყენებულ იქნას ბრძანების ბაიტში. როდესაც თქვენ ირჩევთ "დაწერეთ პოტენომეტრი -0" ორივე პოტენომეტრი არის შერჩეული, როდესაც გსურთ მხოლოდ პოტენომეტრი -0-ის მორგება, თქვენ უნდა გაგზავნოთ მხოლოდ პირველი მონაცემთა ბაიტი. "დაწერეთ პოტენომეტრი 1" მხოლოდ მორგება potmeter-1. "დაწერეთ ორივე პოტენომეტრზე" ორივე პოტენომეტრს აძლევს ერთსა და იმავე მნიშვნელობას.
ნაბიჯი 3: კონტროლი DS1803
საკონტროლო ბაიტს (სურათი 3) აქვს მოწყობილობის იდენტიფიკატორი, ის ყოველთვის უცვლელი რჩება. ჩემს მაგალითში A0, A1 და A2 არის 0, რადგან ჩვენ ვირჩევთ მისამართს ყველა A- ქინძისთავის დასაყენებლად. ბოლო ბიტ R/W იქნება მითითებული 0 ან 1 ბრძანებით "Wire.beginTransmission" და "Wire.requestFrom" არდუინოში. ფიგურაში 5 შეგიძლიათ ნახოთ მთელი დეპეშა. წაკითხული დეპეშა ნაჩვენებია ფიგურაში 4.
ნაბიჯი 4: დაყენება
ეს წრე გვიჩვენებს, თუ როგორ უნდა დააკავშიროთ ყველაფერი. Nokia LCD ხელმისაწვდომია სხვადასხვა კავშირებით, დარწმუნდით, რომ თქვენ სწორად დააკავშირებთ. ასევე მბრუნავი კოდირების მისი სხვადასხვა ვერსიები, ზოგიერთი აქვს საერთო შუა pin სხვები არა. მე დავამატე პატარა ფილტრის ქსელი (470 Ohm რეზისტორი 100nF თავსახურით), რათა გამფილტრავდეს A და B გამომავალი სიგნალები. მე მჭირდება ეს ფილტრი, რადგან გამომავალს ჰქონდა ბევრი ხმაური. მე ასევე ჩავდე დებონუსის ტაიმერი ჩემს პროგრამაში, რომ ხმაური გავაუქმო. დანარჩენი მგონი წრე ნათელია. LCD– ის შეკვეთა შესაძლებელია Adafruit– ის საშუალებით
ნაბიჯი 5: პროგრამა
2 მავთულის ავტობუსის გამოსაყენებლად, მე შევიტან Wire.h ბიბლიოთეკას. LCD– ის გამოსაყენებლად შევიტან Adafruit ბიბლიოთეკას, რომელიც შეგიძლიათ გადმოწეროთ https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library ასევე Adafruit_GFX.h ბიბლიოთეკა აქ არის https:// github. com/adafruit/Adafruit-GFX- ბიბლიოთეკა.
#ჩართეთ
#ჩართეთ
#ჩართეთ
Adafruit_PCD8544 ჩვენება = Adafruit_PCD8544 (7, 6, 5, 4, 3);
აქ თქვენ შეგიძლიათ ნახოთ ყველა ცვლადი. აკონტროლეთ ბაიტი და ბრძანეთ ბაიტი, როგორც აღწერილია ადრე. DeBounceTime შეიძლება მორგებული იყოს თქვენს კოდირზე არსებული ხმაურის მიხედვით.
ბაიტის ქოთანი [2] = {1, 1}; ბაიტი controlByte = B0101000; // 7 ბიტი, ბაიტი commandByte = B10101001; // ბოლო 2 ბიტი არის potmeter შერჩევა. ბაიტი potValue [2]; int i = 0; int deBounceTime = 10; // დაარეგულირეთ ეს მნიშვნელობა დამოკიდებულია ხმაურის const int encoder_A = 8; const int encoder_B = 9; const int buttonPin = 2; ხელმოუწერელი გრძელი newDebounceTime = 0; ხელმოუწერელი long oldTime; ბული დაჭერილი = 0; ლოგიკური რაოდენობა = 1;
კონფიგურაციაში მე განვსაზღვრავ მარჯვენა ქინძისთავებს და სტატიკურ ტექსტს ვდებ LCD- ზე
void setup () {Wire.begin (); სერიული.დაწყება (9600); pinMode (encoder_A, INPUT); pinMode (encoder_B, INPUT); pinMode (buttonPin, INPUT); newDebounceTime = მილი ();
ჩვენება.დაწყება ();
ჩვენება. setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (შავი); display.setCursor (0, 10); display.println ("POT 1 ="); display.setCursor (0, 22); display.println ("POT 2 ="); ჩვენება. ჩვენება ();
}
მარყუჟში მე პირველად ვამოწმებ არის თუ არა ინტერვალი 500ms- ზე მეტი, თუ კი LCD განახლდება. თუ არა, კოდირების ღილაკი შემოწმებულია. თუ დააჭირეთ toggleBuffer დარეკეთ. ამის შემდეგ კოდირების შემოწმება ხდება. თუ შესასვლელი 0 დაბალია (ბრუნვა გამოვლენილია) მე ვამოწმებ შეყვანას B, თუ შეყვანა B არის 0 I გაზრდის ქოთანი , სხვები მე ვამცირებ. ამის შემდეგ მნიშვნელობა გაიგზავნება DS1803- ზე wire.write- ის საშუალებით.
ბათილი მარყუჟი () {
ინტერვალი ();
if (digitalRead (buttonPin) == 1 && (დაჭერილი == 0)) {toggleBuffer ();} if (digitalRead (buttonPin) == 0) {დაჭერილი = 0;}
if (digitalRead (encoder_A) == 0 && count == 0 && (millis () - newDebounceTime> deBounceTime)) {if (digitalRead (encoder_B) == 0) {pot ++; if (pot > 25) {pot = 25;}} სხვა {pot -; if (pot <1) {pot = 1;}} რაოდენობა = 1; newDebounceTime = მილი ();
Wire.beginTransmission (controlByte); // დაიწყეთ გადაცემა
Wire.write (commandByte); // potmeters შერჩევა Wire.write (ქოთანი [0] * 10); // გაგზავნეთ potmeter მონაცემების 1 ბაიტი Wire.write (pot [1] * 10); // გაგზავნეთ potmeter მონაცემების მე -2 ბაიტი Wire.endTransmission (); // შეწყვიტოს გადაცემა} სხვაგან თუ (digitalRead (encoder_A) == 1 && digitalRead (encoder_B) == 1 && count == 1 && (millis () - newDebounceTime> deBounceTime)) {count = 0; newDebounceTime = მილი (); }}
void toggleBuffer () {დაჭერილი = 1; თუ (i == 0) {i = 1;} სხვა {i = 0;}}
ჯერ ვასუფთავებ იმ ადგილს, სადაც უნდა ვწერო ცვლადები. მე ამას ვაკეთებ ამ სფეროში მართკუთხედის დასახატად. ამის შემდეგ ვწერ ცვლადებს ეკრანზე.
void writeToLCD () {Wire.requestFrom (controlByte, 2); potValue [0] = Wire.read (); // პირველი potmeter byte potValue [1] = Wire.read () წაკითხვა; // მეორე potmeter byte display.fillRect (40, 0, 40, 45, WHITE) წაკითხვა; // ცვლადი ცვლადი ეკრანი LCD ეკრანზე. setCursor (40, 10); display.print (potValue [0]); // ჩაწერეთ პირველი potmeter მნიშვნელობა LCD display.setCursor (40, 22); ჩვენება. ბეჭდვა (potValue [1]); // ჩაწერეთ მეორე potmeter მნიშვნელობა LCD display.setCursor (60, (10 + i * 12)); ჩვენება. ბეჭდვა ("<"); ჩვენება. ჩვენება (); }
void interval () {// ინტერვალის ქრონომეტრი მონაცემების LCD- ზე დასაწერად if ((millis () - oldTime)> 500) {writeToLCD (); oldTime = მილი (); }}
გირჩევთ:
DUAL LED BLINKER 555 TIMER IC: 5 ნაბიჯი
DUAL LED BLINKER 555 TIMER IC: იმედია ეს ინსტრუქცია დაგეხმარებათ მოიწონოთ და გამოიწეროთ ჩემი არხი
Arduino Dual Channel ძაბვის სენსორის მოდული: 8 ნაბიჯი
არდუინოს ორმაგი არხის ძაბვის სენსორის მოდული: უკვე რამდენიმე წელია რაც დავწერე ინსტრუქცია, ვფიქრობდი, რომ დროა დავბრუნდე. მე მინდოდა ავაშენო ძაბვის სენსორი ისე, რომ შემეძლოს დაკავშირება ჩემს სკამთან კვების ბლოკთან. მე მაქვს ორი არხის ცვლადი კვების წყარო, მას აქვს n
SONOFF Dual Tutorial: აკონტროლეთ თქვენი ელექტრო ტექნიკა დისტანციურად MQTT და Ubidots გამოყენებით: 4 ნაბიჯი
SONOFF Dual Tutorial: აკონტროლეთ თქვენი ელექტრო ტექნიკა დისტანციურად MQTT და Ubidots გამოყენებით: ამ $ 9 Wi-Fi რელეს შეუძლია გააკონტროლოს ორი ტექნიკა ერთდროულად. ისწავლეთ როგორ დააკავშიროთ იგი Ubidots– თან და გამოავლინოთ მისი სრული პოტენციალი! ამ სახელმძღვანელოში თქვენ ისწავლით თუ როგორ გააკონტროლოთ რამდენიმე 110V ტექნიკა Wi-Fi– ზე 9 დოლარად, Itead– ის SONOFF Dual– ის გამოყენებით
MOSTER FET - Dual 500Amp 40 Volt MOSFET 3D პრინტერი გათბობის საწოლი მძღოლები: 7 ნაბიჯი (სურათებით)
MOSTER FET - Dual 500Amp 40 Volt MOSFET 3D პრინტერი გათბობის საწოლის მძღოლები: თქვენ ალბათ დააწკაპუნეთ ამ მოაზროვნე წმინდა ძროხაზე, 500 AMPS !!!!!. სიმართლე გითხრათ, ჩემს მიერ შექმნილი MOSFET დაფა ვერ შეძლებს უსაფრთხოდ გააკეთოს 500 ამპერი. შეიძლება ცოტა ხნით ადრე, სანამ ის აღელვებულად აალდებოდა ცეცხლს. ეს არ იყო შემუშავებული იმისთვის, რომ გამხდარიყო
როგორ გავხსნათ Western Digital Dual-Option USB დანართი: 5 ნაბიჯი
როგორ გავხსნათ Western Digital Dual-Option USB დანართი: Western Digital Dual-Option USB შიგთავსები არის მოსახერხებელი მოწყობილობები მონაცემთა გადასატანად (მაღალი გამტარუნარიანობის sneakernet) ან უბრალოდ თქვენი მონაცემების ხაზგარეშე სარეზერვო ასლების შესაქმნელად. საბოლოოდ თქვენ მიხვდებით, რომ თქვენ მუშაობთ დაბალი ტევადობა, წინააღმდეგ შემთხვევაში თქვენი დისკი შეიძლება მოკვდეს