Агуулгын хүснэгт:
- Алхам 1: DS1803 -ийн холболтууд
- Алхам 2: Командын байт
- Алхам 3: DS1803 -ийн хяналт
- Алхам 4: Тохируулах
- Алхам 5: Хөтөлбөр
Видео: DS1803 Arduino -той хос дижитал потенциометр: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:05
Би DS1803 дижитал петрметрийн хэрэглээг Arduino -той хуваалцах дуртай. Энэхүү IC нь хоёр утастай интерфейсээр удирдах боломжтой хоёр дижитал потметрийг агуулдаг бөгөөд үүний тулд би утсыг ашигладаг.h номын сан.
Энэхүү IC нь ердийн аналог потметрийг орлох боломжтой. Ийм байдлаар та жишээ нь өсгөгч эсвэл цахилгаан хангамжийг хянах боломжтой болно.
Энэхүү зааварчилгаанд би хоёр LED -ийн гэрлийг хянаж, ажиллаж байгааг нь харуулдаг.
Arduino нь эргэдэг кодлогчын импульсийг тоолж, утгыг хувьсах тогоо [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" зөвхөн потметр-1-ийг тохируулна уу. "Аль аль потенциометр рүү бичих" нь хоёуланд нь ижил утгыг өгдөг.
Алхам 3: DS1803 -ийн хяналт
Хяналтын байт (зураг 3) нь төхөөрөмжийн таниулбартай бөгөөд энэ нь үргэлж ижил хэвээр байна. Миний жишээн дээр A0, A1 ба A2 нь 0 байна, учир нь бид бүх А-зүүг газардуулж хаягийг сонгоно. Сүүлийн битийн R/W -ийг Arduino дээрх "Wire.beginTransmission" ба "Wire.requestFrom" командын дагуу 0 эсвэл 1 болгож тохируулна. 5 -р зурагт та телеграмыг бүхэлд нь харж болно. Уншсан телеграмыг 4 -р зурагт үзүүлэв.
Алхам 4: Тохируулах
Энэ хэлхээ нь бүх зүйлийг хэрхэн холбохыг харуулж байна. Nokia LCD нь өөр өөр холболттой байдаг тул та зөв холбосон эсэхээ шалгаарай. Мөн түүний өөр өөр хувилбартай эргэлддэг кодлогч, зарим нь дунд зүү дээр нийтлэг байдаг, бусад нь байдаггүй. Би кодлогчын A ба B гаралтын дохиог шүүхийн тулд бага хэмжээний шүүлтүүр сүлжээ (100nF таг бүхий 470 Ом эсэргүүцэл) тавьсан. Гаралт нь маш их дуу чимээтэй байсан тул надад энэ шүүлтүүр хэрэгтэй байна. Би ч гэсэн дуу чимээг цуцлахын тулд хөтөлбөрөө хасах таймер оруулсан. Бусад тохиолдолд хэлхээ нь тодорхой байна гэж бодож байна. LCD -ийг Adafruit https://www.adafruit.com/product/338 хаягаар захиалах боломжтой.
Алхам 5: Хөтөлбөр
2 утастай автобусыг ашиглахын тулд би Wire.h номын санг багтаасан болно. LCD ашиглахын тулд би https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library дээрээс татаж авах боломжтой Adafruit номын санг багтаасан бөгөөд 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 бит, байтын тушаалByte = B10101001; // сүүлийн 2 бит бол потметрийн сонголт юм. байт potValue [2]; int i = 0; int deBounceTime = 10; // Энэ утгыг дуу чимээ хамаарч тохируулна const int encoder_A = 8; const int encoder_B = 9; const int buttonPin = 2; гарын үсэг зураагүй урт newDebounceTime = 0; гарын үсэг зураагүй урт хуучин цаг; логик дарагдсан = 0; логик тоо = 1;
Тохиргоонд би зөв зүүг тодорхойлж, статик текстийг LCD дээр байрлуулна
void setup () {Wire.begin (); Цуваа эхлэх (9600); pinMode (encoder_A, INPUT); pinMode (encoder_B, INPUT); pinMode (buttonPin, INPUT); newDebounceTime = millis ();
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 ();
}
Гогцоонд эхлээд интервал 500 мс -ээс их эсэхийг шалгаарай, хэрэв тийм бол LCD шинэчлэгддэг. Үгүй бол кодлогч дээрх товчлуурыг шалгана. Хэрэв toggleBuffer дарагдсан бол дуудлага хийгээрэй. Үүний дараа кодлогчийг шалгана. Хэрэв 0 оролт бага байвал (эргэлт илэрсэн) Би В оролтыг шалгана, Хэрэв В оролт 0 бол би тогоо , бусад нь буурна. Үүний дараа утсыг DS1803 руу tel.write -ээр илгээх болно.
void loop () {
интервал ();
if (digitalRead (buttonPin) == 1 && (дарагдсан == 0)) {toggleBuffer ();} if (digitalRead (buttonPin) == 0) {pressed = 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;}} count = 1; newDebounceTime = millis ();
Утас.beginTransmission (controlByte); // дамжуулж эхлэх
Wire.write (commandByte); // potmeters -ийн сонголт Wire.write (тогоо [0] * 10); // potmeter өгөгдлийн 1 байт Wire.write илгээх (тогоо [1] * 10); // potmeter өгөгдлийн 2 -р байтыг илгээх Wire.endTransmission (); // дамжуулалтыг зогсоох} өөр тохиолдолд (digitalRead (encoder_A) == 1 && digitalRead (encoder_B) == 1 && count == 1 && (millis () - newDebounceTime> deBounceTime)) {count = 0; newDebounceTime = millis (); }}
void toggleBuffer () {дарагдсан = 1; хэрэв (i == 0) {i = 1;} өөр {i = 0;}}
Эхлээд би янз бүрийн зүйлийг бичих ёстой хэсгийг цэвэрлэв. Би энэ хэсэгт тэгш өнцөгт зурахын тулд үүнийг хийдэг. Үүний дараа би хувьсагчдыг дэлгэц дээр бичдэг.
void writeToLCD () {Wire.requestFrom (controlByte, 2); potValue [0] = Wire.read (); // эхний potmeter байт potValue [1] = Wire.read () -ийг уншина уу; // хоёр дахь потметрийн байтын дэлгэцийг уншина уу.fillRect (40, 0, 40, 45, ЦАГААН); // LCD дэлгэц дээрх хувьсах дэлгэцийг цэвэрлэх.setCursor (40, 10); display.print (potValue [0]); // 1 -р потметрийн утгыг LCD дэлгэц дээр бичнэ. setCursor (40, 22); display.print (potValue [1]); // LCD дэлгэц дээр 2 -р потметрийн утгыг бичнэ. setCursor (60, (10 + i * 12)); display.print ("<"); display.display (); }
void interval () {// интервал таймер нь LCD дээр өгөгдөл бичих бол ((millis () - oldTime)> 500) {writeToLCD (); oldTime = millis (); }}
Зөвлөмж болгож буй:
Arduino Хос сувгийн хүчдэл мэдрэгчийн модуль: 8 алхам
Arduino Хос сувгийн хүчдэл мэдрэгчийн модуль: Би зааварчилгаа бичээд хэдэн жил болж байна, эргэж ирэх цаг нь болсон гэж бодож байсан. Би хүчдэлийн мэдрэгч бүтээхийг хүсч байсан бөгөөд ингэснээр би вандан санд цахилгаан тэжээлээ холбох боломжтой болсон. Надад хоёр сувгийн хувьсах тэжээлийн хангамж байгаа бөгөөд энэ нь n
Arduino -д зориулсан MCP41HVX1 дижитал потенциометр: 10 алхам (зурагтай)
Arduino -д зориулсан MCP41HVX1 дижитал потенциометр: MCP41HVX1 дижитал потенциометрийн гэр бүл (DigiPots гэж нэрлэдэг) нь аналог потенциометрийн функцийг дуурайдаг төхөөрөмж бөгөөд SPI -ээр хянагддаг төхөөрөмж юм. Жишээ програм нь таны стерео дээрх дууны товчлуурыг DigiPot -ээр солих болно
Дижитал диаметр хэмжигчийг хэрхэн яаж нураах вэ, дижитал диаметр нь хэрхэн ажилладаг вэ: 4 алхам
Дижитал диаметр хэмжигчийг хэрхэн яаж нураах вэ, дижитал диаметр нь хэрхэн ажилладаг вэ: Олон хүмүүс хэмжихэд диаметр хэмжигчийг хэрхэн ашиглахаа мэддэг. Энэхүү заавар нь дижитал диаметр хэмжигчийг хэрхэн яаж нураахыг зааж өгөх бөгөөд дижитал диаметр хэмжигч хэрхэн ажилладаг талаар тайлбарлах болно
USB C дижитал дижитал Bluetooth тэжээлийн хангамж: 8 алхам (зурагтай)
Дижитал USB C -ээр ажилладаг Bluetooth тэжээлийн хангамж: Ойролцоох хананы залгуургүй байсан ч гэсэн та явж байхдаа ашиглах боломжтой цахилгаан хангамжийг хүсч байсан уу? Хэрэв энэ нь маш нарийвчлалтай, дижитал, компьютер болон утсаараа хянагдах боломжтой байсан бол сайхан биш гэж үү? Энэхүү зааварчилгаанд би яг хэрхэн яаж барихыг үзүүлэх болно
Баруун дижитал хос сонголттой USB хайрцгийг хэрхэн нээх вэ: 5 алхам
Баруун дижитал хос сонголттой USB хайрцгийг хэрхэн нээх вэ: Баруун дижитал хос сонголттой USB хаалт нь өгөгдлийг зөөвөрлөх (өндөр нэвтрүүлэх чадвар) эсвэл зүгээр л офлайн байдлаар өөрийн өгөгдлийг нөөцлөх төхөөрөмж юм. багтаамж багатай, эс тэгвээс таны хөтөч үхэж магадгүй