Arduino Micro Electronic Bubble Level: 5 ขั้นตอน (พร้อมรูปภาพ)

Arduino Micro Electronic Bubble Level: 5 ขั้นตอน (พร้อมรูปภาพ)

สารบัญ:

Anonim

ประมาณหนึ่งปีที่ผ่านมาฉันสร้างตัวบ่งชี้ระดับขั้วกล้องที่ใช้ L.E.Ds เพื่อระบุมุมของหอคอยว่าเป็นเครื่องช่วยด้านภาพ มันใช้งานได้ดีสำหรับสิ่งที่ฉันตั้งใจ แต่ฉันคิดเสมอว่ามันอาจจะ "แจ๊สมาก"

หลังจากยกจอแสดงผล LCD Nokia 5110 เล็กน้อยฉันตัดสินใจที่จะทบทวนโครงการระดับอิเล็กทรอนิกส์ของฉันอีกครั้ง

โครงการง่าย ๆ นี้คือผลลัพธ์ ฉันหวังว่าบางคนจะพบว่ามีประโยชน์!

วัสดุ:

ขั้นตอนที่ 1: ชิ้นส่วนที่จำเป็น

สำหรับโครงการนี้คุณจะต้องมีสิ่งต่อไปนี้ ….

1. Arduino (ฉันใช้นาโน แต่ arduino ควรทำงานได้)

2. เซ็นเซอร์เอียง (ฉันกลับไปที่ Memsic 2125 ส่วนใหญ่เป็นเพราะฉันมีประโยชน์บางอย่าง)

3. หน้าจอ LCD Nokia 5110 (ราคาถูกและหาง่าย!)

4. สาย (สายไฟที่มีสีสันมากมาย!)

5. Breadboard หรือ perfboard

ขั้นตอนที่ 2: การประกอบง่ายมาก!

การประกอบนั้นง่ายมากเพราะทุกจุดชี้ไปที่ ไม่มีส่วนประกอบแยกเช่นตัวต้านทานตัวเก็บประจุและอื่น ๆ

ฉันรวมพินต์ง่ายๆสำหรับเซ็นเซอร์ Memsic 2125 Tilt

หน่วยแสดงผล Nokia 5110 มีคำอธิบายพินไหมสกรีนบนพวกเขา

นี่คือรายการพินสำหรับปักหมุดแต่ละส่วนของ Arduino (nano) ในกระเป๋าของฉัน …..

--------------------------------------

Arduino <------> Nokia LCD

GND ------------------- GND

5V -------------------- VCC

D4 --------------------- Light

D5 --------------------- CLK

D6 --------------------- DIN

D7 --------------------- DC

D8 --------------------- CE

D9 --------------------- RST

สำหรับ Memsic 2125

GND ------------------ GND

5V ------------------ VCC

A4 ------------------ XOut

A5 ------------------- YOUT

ขั้นตอนที่ 3: มันทำงานอย่างไร

อะไรที่ทำให้มันไป

คำตอบสั้น ๆ คือความร้อน เซ็นเซอร์เอียงเป็นห้องเล็ก ๆ ที่มีเทอร์โมมิเตอร์ขนาดเล็ก 4 ตัวล้อมรอบมัน เมื่อคุณเอียงเซ็นเซอร์ความร้อนจะเพิ่มขึ้นและเครื่องวัดอุณหภูมิจะวัดความแตกต่างของอุณหภูมิ มันง่ายมาก! อุปกรณ์อิเล็กทรอนิกส์ในชิปจะแปลงความแตกต่างของอุณหภูมิเป็นการวัด X และ Y และส่งข้อมูลนั้นออกจากหมุด X และ Y

ขั้นตอนที่ 4: รหัสที่จะทำให้มันไป!

รหัสสำหรับโครงการเล็ก ๆ นี้มันค่อนข้างง่ายเช่นกัน

เนื่องจากเซ็นเซอร์ส่งสัญญาณออกมันจะส่งสัญญาณเป็นค่า X และ Y สิ่งที่เราต้องทำคืออ่านค่าและแปลงให้เป็น "โลกแห่งความจริง" ที่เราสามารถแสดงบนจอ LCD 5110 ของเรา

รหัสตั้งค่าการแสดงผล 5110 ดึงตาวัวน้อยแล้วเริ่มอ่านข้อมูล x, y จาก memsic

จากนั้นจะทำการจับคู่สองสามครั้งเพื่อแปลงเอาต์พุต 3000 ถึง 6000 (ish) เป็น 2 ค่า

สเตจหนึ่งทำการแม็พเอาต์พุต memsic ไปยังสเกลสำหรับการแสดงผลทั้งใน x และ y (0-48) และ (0-84) เพื่อให้เราสามารถแสดงและเคลื่อนไหวฟองรอบ ๆ จอแสดงผล

นอกจากนี้ยังมีเอาต์พุตอนุกรมที่ส่งข้อมูลดิบไปยัง usb คุณไม่จำเป็นต้องใช้มัน แต่มันอยู่ที่นั่นถ้าจำเป็น

จากนั้นการแมประยะที่สองจะปรับขนาดการแสดงผลเป็น -90 ถึง 90 สำหรับป้ายข้อความ X ad Y บนจอแสดงผลสำหรับมุม (นี่คือการแสดงมุมโดยประมาณ) เราไม่ต้องกังวลเกี่ยวกับความถูกต้องโดยไม่มีระดับ เราแค่ต้องการความคิดทั่วไป!

นี่คือรหัส ……

#include // arduino micro led ระดับภาพ #include #include Adafruit_PCD8544 display = Adafruit_PCD8544 (5, 6, 7, 8, 9); // pin 2 - สัญญาณนาฬิกาอนุกรม (SCLK) 5 // pin 3 - ข้อมูลอนุกรมออก (DIN) 6 // pin 4 - เลือกข้อมูล / คำสั่ง (D / C) 7 // pin 12 - ชิป LCD เลือก (CS) 8 // pin 11 - รีเซ็ต LCD (RST) 9 const int X = A4; // X ตรึงที่ m2125 const int Y = A5; // Y พินบน m2125 int i = 0; int dist, inv = 0; บูลีนสแตน = 0; การตั้งค่าเป็นโมฆะ () {// ตั้งค่าอนุกรม Serial.begin (9600); pinMode (X, INPUT); pinMode (Y, INPUT); display.begin (); display.setContrast (50); display.clearDisplay (); } void loop () {// อ่านในชีพจร data int pulseX, pulseY; int angleX, angleY; การเร่งความเร็ว int, การเร่งความเร็ว pulseX = pulseIn (X, HIGH); pulseY = pulseIn (Y, HIGH); // แม็พข้อมูลสำหรับ nokia display accelerXX = map (pulseX, 3740, 6286, 48, 0); การเร่งความเร็ว = แผนที่ (ชีพจร Y, 3740, 6370, 84, 0); // ข้อมูลแผนที่ไปยังมุมที่หยาบ X = แผนที่ (การเร่งความเร็ว, 48,0, -90,90); angleY ​​= แผนที่ (ความเร่ง Y, 0,84, -90,90); display.drawRect (0,0,84,48, สีดำ); display.drawLine (42, 0, 42, 48, BLACK); display.drawLine (0, 24, 84, 24, BLACK); display.drawCircle (42,24,10, สีดำ); // แสดงบับเบิ้ล display.fillCircle (ความเร่ง Y, (การเร่งความเร็ว X), 4, สีดำ); display.setCursor (4,4); display.println ("X:" + สตริง (angleX)); display.setCursor (4,38); display.println ("Y:" + สตริง (มุม Y)); display.display (); display.clearDisplay (); // ส่งข้อมูลไปยังอนุกรมในกรณีที่เราต้องการดูสิ่งที่ถูกรายงานและ // ใช้พีซีที่เป็นไปได้ในภายหลัง Serial.print ("X"); Serial.print (pulseX); Serial.print ("Y"); Serial.print (pulseY); Serial.println (""); // หน่วงข้อมูลฟีดให้เราไม่ต้องใช้ความล่าช้าอนุกรม (90); }

ขั้นตอนที่ 5: ให้ดูว่ามันใช้งานได้ตามที่เราคาดหวังหรือไม่?

หลังจากทำงานหนักของเราทั้งหมด ให้ดูว่ามันเป็นไปตามที่เราคาดไว้หรือไม่

ดูเหมือนว่ามันใช้งานได้!

เมื่อติดตั้งในกล่องแบตเตอรี่แล้วมันจะพร้อมใช้งาน!