Sisukord:
Video: DS1803 kahekordne digitaalne potentsiomeeter Arduinoga: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
Mulle meeldib jagada DS1803 digitaalse potimeetri kasutamist Arduinoga. See IC sisaldab kahte digitaalset potomeetrit, mida saab juhtida kahe juhtmega liidese kaudu, selleks kasutan wire.h raamatukogu.
See IC võib asendada tavalise analoog -potimeetri. Sel viisil saate juhtida näiteks võimendit või toiteallikat.
Selles juhendis kontrollin kahe LED -i heledust, et näidata töötamist.
Arduino loendab pöörleva kodeerija impulsse ja asetab väärtuse muutuvasse potti [0] ja potti [1]. Kui vajutate kodeerija lülitit, saate vahetada potti [0] ja potti [1] vahel.
Pottide tegelik väärtus loetakse DS1803 -st tagasi ja paigutatakse muutujatesse potValue [0] ja potValue [1] ning kuvatakse LCD -ekraanil.
Samm: DS1803 ühendused
Siin näete DS1803 ühendusi. H on potentsiomeetri kõrge külg, L alumine ja W klaasipuhasti. SCL ja SDA on siinide ühendused.
Ühenduste A0, A1 ja A2 abil saate DS1803 -le anda oma aadressi, nii saate ühe bussi kaudu juhtida rohkem seadmeid. Näites olen andnud DS1803 aadressile 0, ühendades kõik tihvtid maapinnaga.
Samm: käsu bait
DS1803 toimimisviisi saab kasutada käsubaidis. Kui valite "kirjutada potentsiomeeter-0", valitakse mõlemad potentsiomeetrid, kui soovite reguleerida ainult potentsiomeetrit-0, peate saatma ainult esimese andmebaidi. "Kirjutamise potentsiomeeter-1" reguleerib ainult potimeetrit-1. "Kirjutage mõlemale potentsiomeetrile" annab mõlemale potentsiomeetrile sama väärtuse.
3. samm: DS1803 juhtimine
Juhtbaidil (joonis 3) on seadme identifikaator, see jääb alati samaks. Minu näites on A0, A1 ja A2 0, kuna valime aadressi, pannes kõik A-tihvtid maapinnale. Viimane bit R/W määratakse Arduino käsuga "Wire.beginTransmission" ja "Wire.requestFrom" väärtuseks 0 või 1. Joonisel 5 näete kogu telegrammi. Loetud telegramm on näidatud joonisel 4.
4. samm: seadistage
See skeem näitab, kuidas kõike ühendada. Nokia LCD on saadaval erinevate ühendustega, veenduge, et ühendate oma õigesti. Ka pöörleva kodeerija tema erinevad versioonid, mõnel on ühine keskmine tihvt, teistel mitte. Kooderi A ja B väljundsignaalide filtreerimiseks olen pannud väikese filtrivõrgu (470 oomi takisti 100nF korgiga). Mul on seda filtrit vaja, sest väljundis oli palju müra. Panin oma programmi ka tagasilöögitaimeri, et müra tühistada. Ülejäänud osas arvan, et ring on selge. LCD -ekraani saab tellida Adafruuti kaudu
Samm: programm
Kahejuhtmelise bussi kasutamiseks lisan Wire.h raamatukogu. Vedelkristallekraani kasutamiseks lisan Adafruit raamatukogu, mille saate alla laadida aadressilt https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library, samuti Adafruit_GFX.h raamatukogu on saadaval siin https:// github. com/adafruit/Adafruit-GFX-raamatukogu.
#kaasake
#kaasake
#kaasake
Adafruit_PCD8544 kuva = Adafruit_PCD8544 (7, 6, 5, 4, 3);
Siin näete kõiki muutujaid. Kontrolli baiti ja käsu baiti, nagu eespool kirjeldatud. DeBounceTime'i saab reguleerida sõltuvalt kodeerija mürast.
baidipott [2] = {1, 1}; baitide kontrollBait = B0101000; // 7 bitti, baitkäskByte = B10101001; // viimased 2 bitti on potimeetri valik. bait potValue [2]; int i = 0; int deBounceTime = 10; // Reguleerige seda väärtust sõltuvalt mürakonstist int encoder_A = 8; const int kodeerija_B = 9; const int nuppPin = 2; allkirjastamata pikk newDebounceTime = 0; allkirjastamata pikk oldTime; boolean pressitud = 0; boolean count = 1;
Seadistuses määratlen õiged tihvtid ja panen staatilise teksti LCD -le
void setup () {Wire.begin (); Seriaalne algus (9600); pinMode (kodeerija_A, INPUT); pinMode (kodeerija_B, sisend); pinMode (buttonPin, INPUT); newDebounceTime = millis ();
display.begin ();
display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (MUST); display.setCursor (0, 10); display.println ("POT 1 ="); display.setCursor (0, 22); display.println ("POT 2 ="); display.display ();
}
Tsüklis kontrollin kõigepealt, kas intervall on üle 500 ms, kui jah, siis LCD värskendatakse. Kui ei, siis on kodeerija nupp kontrollitud. Kui vajutate toggleBufferit, helistatakse. Pärast seda kontrollitakse kodeerijat. Kui sisend 0 on madal (pöörlemine tuvastatud), kontrollin sisendit B, kui sisend B on 0 I juurdekasv , teised vähendavad. Pärast seda saadetakse väärtus Wire.write kaudu DS1803 -le.
void loop () {
intervall ();
if (digitalRead (buttonPin) == 1 && (pressitud == 0)) {toggleBuffer ();} if (digitalRead (buttonPin) == 0) {vajutatud = 0;}
if (digitalRead (encoder_A) == 0 && count == 0 && (millis () - newDebounceTime> deBounceTime)) {if (digitalRead (encoder_B) == 0) {pot ++; if (pot > 25) {pot = 25;}} else {pot -; if (pot <1) {pot = 1;}} count = 1; newDebounceTime = millis ();
Wire.beginTransmission (controlByte); // hakka edastama
Wire.write (commandByte); // potimeetrite valik Wire.write (pott [0] * 10); // saata 1. bait potimeetri andmeid Wire.write (pott [1] * 10); // saata 2. bait potimeetri andmeid Wire.endTransmission (); // lõpetage edastamine} else if (digitalRead (encoder_A) == 1 && digitalRead (encoder_B) == 1 && count == 1 && (millis () - newDebounceTime> deBounceTime)) {count = 0; newDebounceTime = millis (); }}
void toggleBuffer () {vajutatud = 1; kui (i == 0) {i = 1;} veel {i = 0;}}
Kõigepealt puhastan ala, kuhu pean muutujad kirjutama. Teen seda selleks, et joonistada selles piirkonnas ristkülik. Pärast seda kirjutan muutujad ekraanile.
void writeToLCD () {Wire.requestFrom (controlByte, 2); potValue [0] = Wire.read (); // loe esimest potimeetri baiti potValue [1] = Wire.read (); // teise potimeetri baidi kuva lugemine.fillRect (40, 0, 40, 45, WHITE); // tühjenda muutuv ekraan LCD -ekraanil.setCursor (40, 10); display.print (potValue [0]); // kirjutage 1. potmeetri väärtus LCD -ekraanile.setCursor (40, 22); display.print (potValue [1]); // kirjutage LCD -ekraanile 2. potmeetri väärtus.setCursor (60, (10 + i * 12)); display.print ("<"); display.display (); }
void interval () {// intervalli taimer andmete kirjutamiseks LCD -le, kui ((millis () - oldTime)> 500) {writeToLCD (); oldTime = millis (); }}
Soovitan:
DHT21 digitaalne temperatuuri ja niiskuse andur koos Arduinoga: 6 sammu
DHT21 digitaalne temperatuuri- ja niiskusandur koos Arduinoga: Selles õpetuses õpime, kuidas kasutada DHT21 niiskus- ja temperatuuriandurit koos Arduinoga ning kuvada väärtused OLED -ekraanil. Vaadake videot
MCP41HVX1 digitaalne potentsiomeeter Arduino jaoks: 10 sammu (piltidega)
MCP41HVX1 digitaalne potentsiomeeter Arduino jaoks: MCP41HVX1 perekonna digitaalsed potentsiomeetrid (teise nimega DigiPots) on seadmed, mis jäljendavad analoog -potentsiomeetri funktsiooni ja mida juhitakse SPI kaudu. Näiterakendus oleks stereo helitugevuse nupu asendamine DigiPotiga, mis on
Potentsiomeeter ja servo: kontrollitud liikumine Arduino abil: 4 sammu
Potentsiomeeter ja servo: kontrollitud liikumine Arduino abil: kõigepealt peate selle vooluahela kokku panemiseks koguma asjakohaseid materjale
Claqueta Digital Con Arduino (digitaalne klapplaud koos Arduinoga): 7 sammu
Claqueta Digital Con Arduino (Digital Clapperboard With Arduino): Crea tu propia claqueta digital, también puedes convertir una claqueta no digital en una, utilizando Arduino. MATERJALID Kuva 7 segmenti MAX7219 ja 8 digitos ühilduv arduino. Modulo de Reloj RTC mudel DS3231 ühilduv con arduino.Arduin
Kahe 7 -segmendi kuvarid, mida kontrollib CircuitPython'i potentsiomeeter - nägemise püsivuse demonstreerimine: 9 sammu (piltidega)
Kahe 7-segmendilise kuvari juhtimine CircuitPythonis oleva potentsiomeetri abil-Nägemise püsivuse demonstreerimine: See projekt kasutab potentsiomeetrit, et juhtida paari 7-segmendilise LED-ekraani (F5161AH) ekraani. Kui potentsiomeetri nuppu keeratakse, muutub kuvatav arv vahemikus 0 kuni 99. Igal hetkel süttib ainult üks LED, väga lühidalt, kuid