สารบัญ:
- ขั้นตอนที่ 1: การเชื่อมต่อของ DS1803
- ขั้นตอนที่ 2: คำสั่ง Byte
- ขั้นตอนที่ 3: การควบคุม DS1803
- ขั้นตอนที่ 4: ตั้งค่า
- ขั้นตอนที่ 5: โปรแกรม
วีดีโอ: DS1803 โพเทนชิโอมิเตอร์แบบดิจิตอลคู่พร้อม Arduino: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ฉันชอบที่จะแบ่งปันการใช้มิเตอร์ดิจิตอล DS1803 กับ Arduino IC นี้ประกอบด้วยมิเตอร์ดิจิตอลสองตัวซึ่งสามารถควบคุมได้ผ่านอินเทอร์เฟซแบบสองสาย สำหรับสิ่งนี้ ฉันใช้ไลบรารี wire.h
IC นี้สามารถแทนที่พอตมิเตอร์แบบแอนะล็อกปกติได้ ด้วยวิธีนี้ คุณจะสามารถควบคุมได้ เช่น แอมพลิฟายเออร์หรือพาวเวอร์ซัพพลาย
ในคำแนะนำนี้ฉันควบคุมความสว่างของ LED สองดวงเพื่อแสดงการทำงาน
Arduino นับพัลส์ของตัวเข้ารหัสแบบหมุนและใส่ค่าลงใน pot[0] และ pot[1] แบบแปรผัน เมื่อคุณกดสวิตช์บนตัวเข้ารหัส คุณสามารถสลับระหว่าง pot[0] และ pot[1]
มูลค่าที่แท้จริงของหม้อจะอ่านกลับมาจาก DS1803 และใส่ไว้ในตัวแปร potValue[0] และ potValue[1] ที่ปรับเปลี่ยนได้ และแสดงบนจอ LCD
ขั้นตอนที่ 1: การเชื่อมต่อของ DS1803
คุณสามารถดูการเชื่อมต่อของ DS1803 ได้ที่นี่ H คือด้านสูงของโพเทนชิออมิเตอร์ L ด้านต่ำและ W ที่ปัดน้ำฝน SCL และ SDA เป็นการเชื่อมต่อบัส
ด้วยการเชื่อมต่อ A0, A1 และ A2 คุณสามารถให้ DS1803 เป็นที่อยู่ของตัวเองได้ ด้วยวิธีนี้ คุณจะสามารถควบคุมอุปกรณ์ต่างๆ ได้มากขึ้นผ่านบัสเดียว ในตัวอย่างของฉัน ฉันได้ให้ที่อยู่ DS1803 0 โดยเชื่อมต่อหมุดทั้งหมดกับพื้น
ขั้นตอนที่ 2: คำสั่ง Byte
วิธีการทำงานของ DS1803 สามารถใช้ในไบต์คำสั่งได้ เมื่อคุณเลือก "เขียนโพเทนชิโอมิเตอร์-0" โพเทนชิโอมิเตอร์ทั้งสองจะถูกเลือก เมื่อคุณต้องการปรับโพเทนชิโอมิเตอร์-0 เท่านั้น คุณจะต้องส่งข้อมูลไบต์แรกเท่านั้น "เขียนโพเทนชิโอมิเตอร์-1" ปรับเฉพาะโพเทนชิโอมิเตอร์-1 "เขียนทั้งสองโพเทนชิโอมิเตอร์" ทำให้โพเทนชิโอมิเตอร์ทั้งสองมีค่าเท่ากัน
ขั้นตอนที่ 3: การควบคุม DS1803
ไบต์ควบคุม (รูปที่ 3) มีตัวระบุอุปกรณ์ ซึ่งจะยังคงเหมือนเดิมเสมอ ในตัวอย่างของฉัน A0, A1 และ A2 เป็น 0 เพราะเราเลือกที่อยู่โดยวางหมุด A ทั้งหมดลงบนพื้น R/W บิตสุดท้ายจะถูกตั้งค่าเป็น 0 หรือ 1 โดยคำสั่ง "Wire.beginTransmission" และ "Wire.requestFrom" ใน Arduino ในรูปที่ 5 คุณสามารถดูโทรเลขทั้งหมดได้ โทรเลขอ่านจะแสดงใน รูปที่ 4
ขั้นตอนที่ 4: ตั้งค่า
วงจรนี้แสดงวิธีเชื่อมต่อทุกอย่าง จอ LCD ของ Nokia สามารถใช้ได้กับการเชื่อมต่อที่แตกต่างกัน ตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อถูกต้อง นอกจากนี้โรตารี่เอ็นโค้ดเดอร์รุ่นต่างๆ ของเขา บางรุ่นมีทั่วไปที่พินกลางบางรุ่นไม่มี ฉันได้ใส่เครือข่ายตัวกรองเล็ก ๆ (ตัวต้านทาน 470 โอห์มพร้อมฝา 100nF) เพื่อกรองสัญญาณเอาต์พุต A และ B ของตัวเข้ารหัส ฉันต้องการตัวกรองนี้เนื่องจากเอาต์พุตมีเสียงรบกวนมาก ฉันยังใส่ตัวจับเวลาดีบาวซ์ในโปรแกรมของฉันเพื่อตัดเสียงรบกวน สำหรับส่วนที่เหลือฉันคิดว่าวงจรนั้นชัดเจน สามารถสั่งซื้อ LCD ได้ทาง Adafruit
ขั้นตอนที่ 5: โปรแกรม
สำหรับการใช้งานบัสแบบ 2 สาย ฉันได้รวมไลบรารี 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 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
คุณสามารถดูตัวแปรทั้งหมดได้ที่นี่ ควบคุมไบต์และคำสั่งไบต์ตามที่อธิบายไว้ก่อนหน้านี้ deBounceTime สามารถปรับได้ขึ้นอยู่กับเสียงรบกวนของตัวเข้ารหัสของคุณ
หม้อไบต์[2] = {1, 1};ไบต์ controlByte = B0101000; // 7 บิต, ไบต์ commandByte = B10101001; // 2 บิตสุดท้ายคือการเลือก potmeter ไบต์ potValue[2]; int ผม = 0; int deBounceTime = 10; // ปรับค่านี้ขึ้นอยู่กับสัญญาณรบกวน const int encoder_A = 8; const int encoder_B = 9; const int buttonPin = 2; newDebounceTime แบบยาวที่ไม่ได้ลงชื่อ = 0; oldTime ยาวที่ไม่ได้ลงชื่อ; บูลีนกด = 0; จำนวนบูลีน = 1;
ในการตั้งค่า ฉันกำหนดพินที่ถูกต้องและใส่ข้อความคงที่บน LCD
การตั้งค่าเป็นโมฆะ () { Wire.begin (); Serial.begin(9600); pinMode(encoder_A, INPUT); pinMode(encoder_B, INPUT); pinMode (ปุ่มพิน, อินพุต); 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("หม้อ 2="); display.display();
}
ในลูปฉันตรวจสอบก่อนว่าช่วงเวลานั้นมากกว่า 500ms หรือไม่ ถ้าใช่ LCD จะได้รับการอัปเดต ถ้าไม่ใช่ปุ่มบนตัวเข้ารหัสจะถูกตรวจสอบ หากกด toggleBuffer จะถูกเรียก หลังจากนี้ ตัวเข้ารหัสจะถูกตรวจสอบ หากอินพุต 0 ต่ำ (ตรวจพบการหมุน) ฉันจะตรวจสอบอินพุต B หากอินพุต B เป็น 0 ฉันเพิ่มหม้อ ส่วนอื่นๆ ฉันจะลดค่าลง หลังจากนี้ค่าจะถูกส่งไปยัง DS1803 ผ่าน wire.write
วงเป็นโมฆะ () {
ช่วงเวลา ();
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;} } จำนวน = 1; newDebounceTime = มิลลิวินาที ();
Wire.beginการส่ง(controlByte); // เริ่มส่งสัญญาณ
Wire.write (คำสั่งไบต์); // การเลือก potmeters Wire.write(pot[0] * 10); // ส่งข้อมูล potmeter ไบต์ที่ 1 Wire.write(pot[1] * 10); // ส่งข้อมูลพอตมิเตอร์ไบต์ที่ 2 Wire.endTransmission(); // หยุดส่ง }else if (digitalRead(encoder_A) == 1 && digitalRead(encoder_B) == 1 && count == 1 && (millis() - newDebounceTime > deBounceTime)){ count = 0; newDebounceTime = มิลลิวินาที (); } }
ถือเป็นโมฆะ toggleBuffer(){ กด = 1; ถ้า (i == 0){i = 1;}อื่น{i = 0;} }
อันดับแรก ให้เคลียร์พื้นที่ที่ต้องเขียนตัวแปร ฉันทำสิ่งนี้เพื่อวาดรูปสี่เหลี่ยมผืนผ้าในบริเวณนี้ หลังจากนั้นฉันเขียนตัวแปรไปที่หน้าจอ
เป็นโมฆะ writeToLCD () { Wire.requestFrom (controlByte, 2); potValue[0] = Wire.read(); // อ่าน potValue ไบต์แรก potValue[1] = Wire.read(); // อ่าน potmeter ไบต์ที่สอง display.fillRect(40, 0, 40, 45, WHITE); // ล้างหน้าจอตัวแปรบน LCD display.setCursor(40, 10); display.print(potValue[0]); // เขียนค่า potmeter ที่ 1 ไปที่ LCD display.setCursor(40, 22); display.print(potValue [1]); // เขียนค่า potmeter ที่ 2 ไปที่ LCD display.setCursor(60, (10 + i * 12)); display.print("<"); display.display(); }
ช่วงเวลาเป็นโมฆะ () {// ตัวจับเวลาช่วงเวลาในการเขียนข้อมูลไปยัง LCD ถ้า ((มิลลิวินาที () - oldTime)> 500) {writeToLCD (); oldTime = มิลลิวินาที (); } }
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
Arduino ที่ถูกที่สุด -- Arduino ที่เล็กที่สุด -- Arduino Pro Mini -- การเขียนโปรแกรม -- Arduino Neno: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino ที่ถูกที่สุด || Arduino ที่เล็กที่สุด || Arduino Pro Mini || การเขียนโปรแกรม || Arduino Neno:…………………………… โปรดสมัครสมาชิกช่อง YouTube ของฉันสำหรับวิดีโอเพิ่มเติม……. โปรเจ็กต์นี้เกี่ยวกับวิธีเชื่อมต่อ Arduino ที่เล็กที่สุดและถูกที่สุดเท่าที่เคยมีมา Arduino ที่เล็กที่สุดและถูกที่สุดคือ arduino pro mini คล้ายกับ Arduino