Orodha ya maudhui:
- Hatua ya 1: Uunganisho wa DS1803
- Hatua ya 2: Amri Byte
- Hatua ya 3: Udhibiti wa DS1803
- Hatua ya 4: Sanidi
- Hatua ya 5: Programu
Video: DS1803 Dual Digital Potentiometer na Arduino: 5 Hatua
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:54
Ninapenda kushiriki utumiaji wa bomba la dijiti la DS1803 na Arduino. IC hii ina vipodozi viwili vya dijiti ambavyo vinaweza kudhibitiwa juu ya kiwambo cha waya mbili, kwa hii ninatumia maktaba ya waya.h.
IC hii inaweza kuchukua nafasi ya bomba la kawaida la analog. Kwa njia hii una uwezo wa kudhibiti kwa mfano kipaza sauti au usambazaji wa umeme.
Katika hii kufundisha mimi kudhibiti mwangaza wa LED mbili kuonyesha kazi.
Aruuino huhesabu kunde za kisimbuzi cha rotary na kuweka thamani kwenye sufuria inayobadilika [0] na sufuria [1]. Unapobonyeza swichi kwenye kisimbuzi, unaweza kubadilisha kati ya sufuria [0] na sufuria [1].
Thamani halisi ya sufuria inasomewa nyuma kutoka DS1803 na kuwekwa kwenye sufuria ya kutofautisha [0] na potValue [1] na kuonyeshwa kwenye LCD.
Hatua ya 1: Uunganisho wa DS1803
Hapa unaweza kuona unganisho la DS1803. H ni upande wa juu wa potentiometer, L upande wa chini na W wiper. SCL na SDA ni uhusiano wa basi.
Kwa unganisho A0, A1 na A2 unaweza kutoa DS1803 ni anwani yako mwenyewe, kwa njia hii unaweza kudhibiti vifaa zaidi kupitia basi moja. Katika mfano wangu nimetoa DS1803 adres 0 kwa kuunganisha pini zote chini.
Hatua ya 2: Amri Byte
Njia ambayo DS1803 inafanya kazi inaweza kutumika kwa amri ya ka. Unapochagua "andika potentiometer-0" potentiometers zote mbili zimechaguliwa, wakati unataka tu kurekebisha potentiometer-0, lazima utume tu byte ya kwanza ya data. "Andika potentiometer-1" rekebisha tu potmeter-1. "Andika kwa potentiometers zote mbili" inazipa zote mbili uwezo sawa.
Hatua ya 3: Udhibiti wa DS1803
Byte ya kudhibiti (kielelezo 3) ina kitambulisho cha kifaa, hii inakaa sawa kila wakati. Katika mfano wangu A0, A1 na A2 ni 0 kwa sababu tunachagua adres kwa kuweka pini zote za A chini. Kidogo cha mwisho R / W kitawekwa 0 au 1 kwa amri "Wire.beginTransmission" na "Wire.requestFrom" katika Arduino. Katika sura ya 5 unaweza kuona telegram nzima. Telegram iliyosomwa imeonyeshwa kwenye sura ya 4.
Hatua ya 4: Sanidi
Mzunguko huu unaonyesha jinsi ya kuunganisha kila kitu. Nokia LCD inapatikana na miunganisho tofauti, hakikisha umeunganisha yako sawa. Pia encoder ya rotary matoleo yake tofauti, zingine zina kawaida kwenye pini ya kati zingine sio. Nimeweka mtandao wa kichujio kidogo (470 Ohm resistor na 100nF cap) kuchuja A na B ishara za pato la kisimbuzi. Ninahitaji kichujio hiki kwa sababu pato lilikuwa na kelele nyingi. Pia niliweka kipima muda katika mpango wangu wa kufuta kelele. Kwa wengine nadhani mzunguko uko wazi. LCD inaweza kuamriwa kupitia Adafruit
Hatua ya 5: Programu
Kwa matumizi ya basi ya waya 2 ninajumuisha maktaba ya Wire.h. Kutumia LCD ninajumuisha maktaba ya Adafruit ambayo unaweza kupakua kutoka https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library pia maktaba ya Adafruit_GFX.h inapatikana hapa https:// github. com / adafruit / Adafruit-GFX-Maktaba.
# pamoja
# pamoja
# pamoja
Maonyesho ya Adafruit_PCD8544 = Adafruit_PCD8544 (7, 6, 5, 4, 3);
Hapa unaweza kuona anuwai zote. Dhibiti baiti na amri ya ka kama ilivyoelezwa hapo awali. Wakati wa deBounce unaweza kubadilishwa kulingana na kelele kwenye usimbuaji.
sufuria ya baiti [2] = {1, 1}; kudhibiti byteByte = B0101000; // bits 7, amri ya byteByte = B10101001; // bits 2 za mwisho ni uteuzi wa sufuria. Thamani ya baiti Thamani [2]; int i = 0; int deBounceTime = 10; // Rekebisha thamani hii kulingana na kelele ya encoder_A = 8; enc int encoder_B = 9; kifungo cha int intPin = 2; unsigned muda mrefu newDebounceTime = 0; muda mrefu wa muda mrefu; taabu ya boolean = 0; hesabu ya boolean = 1;
Katika usanidi ninafafanua pini sahihi na kuweka maandishi ya tuli kwenye LCD
kuanzisha batili () {Wire.begin (); Serial. Kuanza (9600); pinMode (encoder_A, INPUT); pinMode (encoder_B, INPUT); pinMode (kifungoPini, INPUT); newDebounceTime = milimita ();
onyesha.anza ();
onyesha.setContrast (50); onyesha wazi Cleplay (); onyesha.setTextSize (1); onyesha.setTextColor (NYEUSI); onyesha.setCursor (0, 10); onyesha.println ("POT 1 ="); Kuweka Mshale (0, 22); onyesha.println ("POT 2 ="); onyesha.display ();
}
Katika kitanzi ninaangalia kwanza ikiwa muda ni zaidi ya 500ms, ikiwa ndio LCD inasasishwa. Ikiwa sivyo kitufe kilicho kwenye kisimbuzi kimekaguliwa. Ikiwa imesisitizwa toggleBuffer itaitwa. Baada ya hii kisimbuzi kikaguliwa. Ikiwa pembejeo 0 ni ya chini (mzunguko umegunduliwa) ninaangalia pembejeo B, ikiwa pembejeo B ni 0 Ninaongeza sufuria , wengine napunguza. Baada ya hii thamani itatumwa kwa DS1803 kupitia waya. Andika.
kitanzi batili () {
muda ();
ikiwa (digitalRead (buttonPin) == 1 && (taabu == 0)) {toggleBuffer ();} ikiwa (digitalRead (buttonPin) == 0) {pressed = 0;}
ikiwa (digitalRead (encoder_A) == 0 && count == 0 && (millis () - newDebounceTime> deBounceTime)) {if (digitalRead (encoder_B) == 0) {pot ++; ikiwa (sufuria > 25) {sufuria = 25;}} mwingine {sufuria -; ikiwa (sufuria <1) {sufuria = 1;}} hesabu = 1; newDebounceTime = milimita ();
Wire.beginUhamisho (controlByte); // kuanza kusambaza
Andika waya (commandByte); // uteuzi wa vifuniko vya waya.andika (sufuria [0] * 10); // tuma ka 1 ya data ya potmeter Wire.write (sufuria [1] * 10); // tuma baiti ya 2 ya data ya potmeter Wire.endUsambazaji (); // kuacha kusambaza} mwingine ikiwa (digitalRead (encoder_A) == 1 && digitalRead (encoder_B) == 1 && count == 1 && (millis () - newDebounceTime> deBounceTime)) {count = 0; newDebounceTime = milimita (); }}
toggleBuffer batili () {taabu = 1; ikiwa (i == 0) {i = 1;} mwingine {i = 0;}}
Kwanza mimi husafisha eneo ambalo inabidi niandike visababu. Ninafanya hivyo kuteka mstatili katika eneo hili. Baada ya hapo ninaandika vigeuzi kwenye skrini.
kuandika utupuToLCD () {Wire.requestFrom (controlByte, 2); potValue [0] = Wire.read (); // soma sufuria ya kwanza ya potmeter byte Thamani [1] = Wire.read (); // soma onyesho la pili la potmeter byte FillRect (40, 0, 40, 45, NYEUPE); // skrini wazi ya kutofautisha kwenye onyesho la LCD.setCursor (40, 10); onyesho.print (Thamani ya sufuria [0]); // andika 1 thamani ya potmeter kwa onyesho la LCD. Cursor (40, 22); onyesha.chapisho (Thamani ya sufuria [1]); // andika 2 ya thamani ya potmeter kwa onyesho la LCD.setCursor (60, (10 + i * 12)); onyesho.print ("<"); onyesha.display (); }
muda batili () {// kipima muda cha kuandika data kwa LCD ikiwa ((millis () - oldTime)> 500) {writeToLCD (); OldTime = milimita (); }}
Ilipendekeza:
Kudhibiti Mwangaza wa LED na Potentiometer na Arduino: Hatua 3
Kudhibiti Mwangaza wa LED na Potentiometer na Arduino: Katika mradi huu, tutadhibiti mwangaza wa LED kwa kutumia upinzani tofauti unaotolewa na potentiometer. Huu ni mradi wa kimsingi sana kwa anayeanza lakini utakufundisha mambo mengi juu ya potentiometer na kufanya kazi kwa LED ambayo inahitajika kutengeneza adva
MCP41HVX1 Potentiometer ya dijiti ya Arduino: Hatua 10 (na Picha)
MCP41HVX1 Potentiometer ya dijiti ya Arduino: Familia ya MCP41HVX1 ya potentiometers za dijiti (aka DigiPots) ni vifaa ambavyo vinaiga kazi ya potentiometer ya analog na inadhibitiwa kupitia SPI. Programu ya mfano itakuwa ikibadilisha kitasa cha sauti kwenye stereo yako na DigiPot ambayo ni
Potentiometer & Servo: Mwendo Unaodhibitiwa Na Arduino: Hatua 4
Potentiometer & Servo: Mwendo Unaodhibitiwa Na Arduino: Kwanza unahitaji kukusanya vifaa vinavyohusika ili kuweka mzunguko huu pamoja
Udhibiti wa Arduino DC na Mwendo wa Kutumia Potentiometer na Vifungo: Hatua 6
Arduino Control DC Motor Speed and Direction Using Potentiometer & Buttons: Katika mafunzo haya tutajifunza jinsi ya kutumia L298N DC MOTOR CONTROL dereva na potentiometer kudhibiti mwendo wa mwendo wa DC na mwelekeo na vifungo viwili
Taa ya Onyo la Taa ya Mzunguko wa Dual Mini Dual: Hatua 6
Nuru ya Densi ya Alama ya Mzunguko wa Dual Mini: Katika hii inayoweza kufundishwa, tutatengeneza taa ndogo ya taa Unajua, moja ya taa za zamani za kuzunguka ambazo walikuwa wakiweka kwenye vifaa vya ujenzi kabla ya LED kuwa kubwa? Ndio. Moja ya hizo. Hii itakuwa rahisi, na yenye busara