Përmbajtje:
- Hapi 1: Lidhjet e DS1803
- Hapi 2: Komanda Byte
- Hapi 3: Kontrolli i DS1803
- Hapi 4: Konfiguro
- Hapi 5: Programi
Video: DS1803 Potenciometër i dyfishtë dixhital me Arduino: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
Më pëlqen të ndaj përdorimin e një potmetri dixhital DS1803 me një Arduino. Ky IC përmban dy potmetra dixhital të cilët mund të kontrollohen mbi një ndërfaqe me dy tela, për këtë unë përdor bibliotekën wire.h.
Ky IC mund të zëvendësojë një potmetër analog normal. Në këtë mënyrë ju jeni në gjendje të kontrolloni për shembull një përforcues ose furnizim me energji elektrike.
Në këtë udhëzues unë kontrolloj shkëlqimin e dy LED -ve për të treguar funksionimin.
Arduino numëron pulset e një koduesi rrotullues dhe vendos vlerën në tenxhere të ndryshueshme [0] dhe tenxhere [1]. Kur shtypni çelësin në kodues, mund të kaloni midis tenxhere [0] dhe tenxhere [1].
Vlera aktuale e tenxhereve lexohet nga DS1803 dhe vendoset në potValue të ndryshueshme [0] dhe potValue [1] dhe shfaqet në një LCD.
Hapi 1: Lidhjet e DS1803
Këtu mund të shihni lidhjet e DS1803. H është ana e lartë e potenciometrit, L ana e ulët dhe W fshirësi. SCL dhe SDA janë lidhjet e autobusit.
Me lidhjen A0, A1 dhe A2 ju mund t'i jepni adresës së vet DS1803, në këtë mënyrë ju mund të kontrolloni më shumë pajisje përmes një autobusi. Në shembullin tim kam dhënë adresën DS1803 0 duke i lidhur të gjitha kunjat me tokën.
Hapi 2: Komanda Byte
Mënyra se si funksionon DS1803 mund të përdoret në bajtin e komandës. Kur zgjidhni "shkruani potenciometër-0" të dy potenciometrat zgjidhen, kur dëshironi të rregulloni vetëm potenciometrin-0, ju duhet vetëm të dërgoni bajtin e parë të të dhënave. "Shkruani potenciometër-1" rregulloni vetëm potmetër-1. "Shkruaj në të dy potenciometrat" u jep të dy potenciometrave të njëjtën vlerë.
Hapi 3: Kontrolli i DS1803
Bajti i kontrollit (figura 3) ka një identifikues të pajisjes, ky qëndron gjithmonë i njëjtë. Në shembullin tim A0, A1 dhe A2 janë 0 sepse ne zgjedhim adresën duke i vendosur të gjitha kunjat A në tokë. Pjesa e fundit R/W do të vendoset në 0 ose 1 me komandën "Wire.beginTransmission" dhe "Wire.requestFrom" në Arduino. Në figurën 5 mund të shihni të gjithë telegramin. Telegrami i lexuar është treguar në figurën 4.
Hapi 4: Konfiguro
Ky qark tregon se si të lidhni gjithçka. Ekrani LCD i Nokia -s është i disponueshëm me lidhje të ndryshme, sigurohuni që ta lidhni tuajin siç duhet. Gjithashtu kodifikuesi rrotullues versionet e tij të ndryshme, disa kanë të përbashkëtin në kunjin e mesëm të tjerët jo. Unë kam vënë një rrjet të vogël filtri (rezistencë 470 Ohm me kapak 100nF) për të filtruar sinjalet dalëse A dhe B të koduesit. Kam nevojë për këtë filtër sepse dalja kishte shumë zhurmë. Unë gjithashtu vendosa një kohëmatës debounce në programin tim për të anuluar pak zhurmë. Për pjesën tjetër mendoj se qarku është i qartë. LCD -ja mund të porositet përmes Adafruit
Hapi 5: Programi
Për përdorimin e autobusit me 2 tela përfshij bibliotekën Wire.h. Për të përdorur LCD-në përfshij bibliotekën Adafruit të cilën mund ta shkarkoni nga https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library gjithashtu biblioteka Adafruit_GFX.h është në dispozicion këtu https:// github. com/adafruit/Adafruit-GFX-Library.
#përfshi
#përfshi
#përfshi
Shfaqja Adafruit_PCD8544 = Adafruit_PCD8544 (7, 6, 5, 4, 3);
Këtu mund të shihni të gjitha ndryshoret. Kontrolloni bajtin dhe komandoni bajtin siç përshkruhet më parë. DeBounceTime mund të rregullohet në varësi të zhurmës në koduesin tuaj.
tenxhere byte [2] = {1, 1}; byte controlByte = B0101000; // 7 bit, byte commandByte = B10101001; // 2 bitët e fundit është përzgjedhja e potmetrit. byte potVlera [2]; int i = 0; int deBounceTime = 10; // Rregulloni këtë vlerë në varësi të zhurmës const int encoder_A = 8; const int kodues_B = 9; const int buttonPin = 2; i panënshkruar i ri newDebounceTime = 0; i panënshkruar gjatë oldTime; boolean presion = 0; numërimi boolean = 1;
Në konfigurimin unë përcaktoj kunjat e duhur dhe vendos tekstin statik në LCD
void setup () {Wire.begin (); Serial.filloj (9600); pinMode (koduesi_A, INPUT); pinMode (koduesi_B, INPUT); pinMode (buttonPin, INPUT); newDebounceTime = milis ();
shfaqje.filloj ();
display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (ZI); display.setCursor (0, 10); display.println ("POT 1 ="); display.setCursor (0, 22); display.println ("POT 2 ="); display.display ();
}
Në lak unë së pari kontrolloj nëse intervali është më shumë se 500ms, nëse po LCD përditësohet. Nëse jo, butoni në kodues është kontrolluar. Nëse shtypet toggleBuffer telefononi. Pas kësaj, kodifikuesi kontrollohet. Nëse hyrja 0 është e ulët (zbulohet rrotullimi) unë kontrolloj hyrjen B, nëse hyrja B është 0 I tenxhere me rritje , të tjerat I zvogëloj. Pas kësaj vlera do t'i dërgohet DS1803 përmes telit.shkruaj.
lak void () {
interval ();
nëse (digitalRead (buttonPin) == 1 && (shtypur == 0)) {toggleBuffer ();} if (digitalRead (buttonPin) == 0) {shtypur = 0;}
if (digitalRead (encoder_A) == 0 && count == 0 && (millis () - newDebounceTime> deBounceTime)) {if (digitalRead (encoder_B) == 0) {pot ++; nëse (tenxhere > 25) {tenxhere = 25;}} tjetër {tenxhere -; nëse (tenxhere <1) {tenxhere = 1;}} numërim = 1; newDebounceTime = milis ();
Wire.beginTransmission (controlByte); // filloni transmetimin
Wire.write (commandByte); // përzgjedhja e potmetrave Wire.write (tenxhere [0] * 10); // dërgoni 1 bajtin e të dhënave të potmetrit Wire.write (tenxhere [1] * 10); // dërgoni bajtin e dytë të të dhënave të potmetrit Wire.endTransmission (); // ndalo transmetimin} tjetër nëse (digitalRead (encoder_A) == 1 && digitalRead (encoder_B) == 1 && count == 1 && (millis () - newDebounceTime> deBounceTime)) {count = 0; newDebounceTime = milis (); }}
void toggleBuffer () {shtypur = 1; nëse (i == 0) {i = 1;} tjetër {i = 0;}}
Së pari pastroj zonën ku duhet të shkruaj ndryshoret. Unë e bëj këtë për të vizatuar një drejtkëndësh në këtë zonë. Pas kësaj unë shkruaj ndryshoret në ekran.
void writeToLCD () {Wire.requestFrom (controlByte, 2); potValue [0] = Wire.read (); // lexoni potmetrin e parë të bajtit potValue [1] = Wire.read (); // lexoni ekranin e dytë të bajt potmeter.fillRect (40, 0, 40, 45, WHITE); // pastro ekranin e ndryshueshëm në ekranin LCD.setCursor (40, 10); display.print (potValue [0]); // shkruani vlerën e parë të potmetrit në ekranin LCD.setCursor (40, 22); display.print (potVlera [1]); // shkruani vlerën e dytë të potmetrit në ekranin LCD.setCursor (60, (10 + i * 12)); display.print ("<"); display.display (); }
void interval () {// kohëmatësi i intervalit për të shkruar të dhëna në LCD nëse ((millis () - oldTime)> 500) {writeToLCD (); oldTime = milis (); }}
Recommended:
Si të bëni 4G LTE Antenë të BiQuade të Dyfishtë Hapa të Lehtë: 3 Hapa
Si të bëni 4G LTE Antenë BiQuade të Dyfishtë Hapa të Lehtë: Shumicën e kohës me të cilën jam përballur, nuk kam forcë të mirë të sinjalit në punët e mia të përditshme. Kështu që. Kërkoj dhe provoj lloje të ndryshme antenash por nuk funksionoj. Pas humbjes së kohës gjeta një antenë që shpresoj ta bëj dhe ta provoj, sepse është parimi i ndërtimit jo
Potenciometër dixhital MCP41HVX1 për Arduino: 10 hapa (me fotografi)
MCP41HVX1 Potenciometër Dixhital për Arduino: Familja e potenciometrave dixhital MCP41HVX1 (aka DigiPots) janë pajisje që imitojnë funksionin e një potenciometri analog dhe kontrollohen përmes SPI. Një aplikacion shembull do të ishte zëvendësimi i çelësit të volumit në stereon tuaj me një DigiPot që është
Arduino Nano-MMA8452Q 3-Bosht 12-bit/8-bit Përshpejtues dixhital dixhital: 4 hapa
Arduino Nano-MMA8452Q 3-Aksi 12-bit/8-bit Përshpejtues dixhital: MMA8452Q është një akselerometër i zgjuar, me fuqi të ulët, me tre boshte, kapacitiv, me mikromakinim me 12 bit rezolucion. Opsionet fleksibile të programueshme të përdoruesit sigurohen me ndihmën e funksioneve të ngulitura në akselerometër, të konfigurueshme në dy ndërprerës
Si të shkatërroni një caliper dixhital dhe si funksionon një caliper dixhital: 4 hapa
Si të rrëzoni një caliper dixhital dhe si funksionon një caliper dixhital: Shumë njerëz dinë të përdorin kalibra për matje. Ky tutorial do t'ju mësojë se si të prishni një caliper dixhital dhe një shpjegim se si funksionon caliper dixhital
Si të hapni një bashkim USB me opsion të dyfishtë dixhital: 5 hapa
Si të hapni një bashkim USB me Opsion Digjital Digital Western: Mbështjellësit USB me Dy Opsione Western Digital janë pajisje të dobishme për mbajtjen e të dhënave (sneakernet me qarkullim të lartë) ose thjesht për të bërë kopje rezervë jashtë linje të të dhënave tuaja. Përfundimisht mund të kuptoni që jeni duke punuar me kapacitet të ulët, ose disku juaj mund të vdesë