Բովանդակություն:
- Քայլ 1: DS1803- ի միացումներ
- Քայլ 2: Հրամանի բայթ
- Քայլ 3. DS1803- ի վերահսկում
- Քայլ 4: Կարգավորեք
- Քայլ 5: րագիրը
Video: DS1803 Երկակի թվային պոտենցիոմետր Arduino- ով. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Ես սիրում եմ DS1803 թվային չափիչ սարքի օգտագործումը կիսել Arduino- ի հետ: Այս 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- ի վերջին բիթը Arduino- ում «Wire.beginTransmission» և «Wire.requestFrom» հրամաններով կհամարվի 0 կամ 1: Նկար 5 -ում կարող եք տեսնել ամբողջ հեռագիրը: Ընթերցված հեռագիրը ներկայացված է նկար 4 -ում:
Քայլ 4: Կարգավորեք
Այս սխեման ցույց է տալիս, թե ինչպես միացնել ամեն ինչ: Nokia LCD- ը հասանելի է տարբեր միացումներով, համոզվեք, որ ձերն եք ճիշտ միացնում: Նաև պտտվող կոդավորիչը նրա տարբեր տարբերակներն են, ոմանք ընդհանուր են միջին քորոցում, մյուսները ՝ ոչ: Ես տեղադրել եմ մի փոքր զտիչ ցանց (470 Օմ դիմադրություն `100nF կափարիչով)` կոդավորիչի A և B ելքային ազդանշանները զտելու համար: Ինձ պետք է այս զտիչը, քանի որ ելքը իսկապես շատ աղմուկ ուներ: Ես նաև դեբունսի ժամանակաչափ եմ դրել իմ ծրագրում ՝ որոշ աղմուկ չեղարկելու համար: Մնացածի համար կարծում եմ, որ շրջանը պարզ է: LCD- ն կարելի է պատվիրել Adafruit- ի միջոցով ՝
Քայլ 5: րագիրը
Երկալար ավտոբուսի օգտագործման համար ես ներառում եմ Wire.h գրադարանը: LCD- ն օգտագործելու համար ես ներառում եմ Adafruit գրադարանը, որը կարող եք ներբեռնել https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library- ից, ինչպես նաև Adafruit_GFX.h գրադարանը հասանելի է այստեղ https:// github. com/adafruit/Adafruit-GFX-Library.
#ներառում
#ներառում
#ներառում
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 կոդավորող_Բ = 9; const int buttonPin = 2; անստորագիր երկար newDebounceTime = 0; unsigned long oldTime; բուլյան սեղմված = 0; բուլյան հաշվարկ = 1;
Կարգավորման մեջ ես սահմանում եմ աջ կապերը և ստատիկ տեքստը դնում LCD- ի վրա
void setup () {Wire.begin (); Serial.begin (9600); pinMode (encoder_A, INPUT); pinMode (encoder_B, INPUT); pinMode (buttonPin, INPUT); newDebounceTime = միլիարդ ();
display.begin ();
display.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 ="); display.display ();
}
Օղակի մեջ ես առաջին հերթին ստուգում եմ, եթե միջակայքն ավելի քան 500ms է, եթե այո, LCD- ն թարմացվում է: Եթե ոչ, կոդավորիչի կոճակը ստուգված է: Եթե սեղմեք toggleBuffer- ին զանգահարեք: Դրանից հետո կոդավորիչը ստուգվում է: Եթե մուտքի 0 -ը ցածր է (պտույտը հայտնաբերված է) ես ստուգում եմ մուտքը B, եթե մուտքը B է 0 I աճող զամբյուղ , մյուսները ՝ նվազում: Դրանից հետո արժեքը կուղարկվի DS1803- ին wire.write- ի միջոցով:
դատարկ շրջան () {
ընդմիջում ();
if (digitalRead (buttonPin) == 1 && (սեղմված == 0)) {toggleBuffer ();} if (digitalRead (buttonPin) == 0) {սեղմված = 0;}
եթե (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 բայթ potValue [1] = Wire.read (); // կարդալ երկրորդ potmeter բայթ display.fillRect (40, 0, 40, 45, WHITE); // մաքրել փոփոխական էկրանը LCD էկրանին: setCursor (40, 10); display.print (potValue [0]); // գրեք 1 -ին potmeter արժեքը LCD display.setCursor (40, 22); display.print (potValue [1]); // գրեք 2 -րդ potmeter արժեքը LCD display.setCursor (60, (10 + i * 12)); display.print ("<"); display.display (); }
void interval () {// interval timer ՝ LCD- ին տվյալները գրելու համար, եթե ((millis () - oldTime)> 500) {writeToLCD (); oldTime = millis (); }}
Խորհուրդ ենք տալիս:
Arduino Control DC շարժիչի արագությունը և ուղղությունը ՝ օգտագործելով պոտենցիոմետր, OLED էկրան և կոճակներ. 6 քայլ
Arduino Control DC շարժիչի արագությունը և ուղղությունը ՝ օգտագործելով պոտենցիոմետր, OLED էկրան և կոճակներ. Այս ձեռնարկում մենք կսովորենք, թե ինչպես օգտագործել L298N DC MOTOR CONTROL վարորդ և պոտենցիոմետր ՝ երկու կոճակով DC շարժիչի արագությունն ու ուղղությունը վերահսկելու և պոտենցիոմետրի արժեքը ցուցադրելու համար: OLED էկրանին: Դիտեք ցուցադրական տեսանյութ
MCP41HVX1 թվային պոտենցիոմետր Arduino- ի համար. 10 քայլ (նկարներով)
MCP41HVX1 թվային պոտենցիոմետր Arduino- ի համար. Թվային պոտենցիոմետրերի MCP41HVX1 ընտանիքը (նույնքան DigiPots) սարքեր են, որոնք ընդօրինակում են անալոգային պոտենցիոմետրի գործառույթը և վերահսկվում են SPI- ով: Դիմումի օրինակ կարող է լինել ձեր ստերեոյի ձայնի կոճակի փոխարինումը DigiPot- ով, որը
Պոտենցիոմետր և սերվո. Վերահսկվող շարժում Arduino- ով. 4 քայլ
Պոտենցիոմետր և սերվո. Վերահսկվող շարժում Arduino- ի հետ. Նախ պետք է համապատասխան նյութեր հավաքել ՝ այս միացումն իրար միացնելու համար
Arduino Control DC շարժիչի արագությունը և ուղղությունը ՝ օգտագործելով պոտենցիոմետր և կոճակներ. 6 քայլ
Arduino Control DC շարժիչի արագությունը և ուղղությունը ՝ օգտագործելով պոտենցիոմետր և կոճակներ. Այս ձեռնարկում մենք կսովորենք, թե ինչպես օգտագործել L298N DC MOTOR CONTROL վարորդ և պոտենցիոմետր ՝ երկու կոճակով DC շարժիչի արագությունն ու ուղղությունը վերահսկելու համար: Դիտեք ցուցադրական տեսանյութ
Մարել/վերահսկել Led/պայծառությունը `օգտագործելով պոտենցիոմետր (փոփոխական դիմադրություն) և Arduino Uno: 3 քայլ
Մարել/վերահսկել Led/պայծառությունը `օգտագործելով պոտենցիոմետր (փոփոխական դիմադրություն) և Arduino Uno. Arduino անալոգային մուտքի քորոցը միացված է պոտենցիոմետրի ելքին: Այսպիսով, Arduino ADC (անալոգային թվային փոխարկիչ) անալոգային քորոցը պոտենցիոմետրով կարդում է ելքային լարումը: Պոտենցիոմետրի պտույտը պտտելը փոխում է լարման ելքը և Arduino- ն նորից