สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
**กำลังแก้ไข**
สำหรับโครงการ HKU arduino ฉันตัดสินใจสร้างออร์กาไนเซอร์เดสก์ท็อปที่มีหน้าจอ LCD ที่แสดงคำพูดสร้างแรงบันดาลใจเพื่อรับคุณเมื่อคุณหมุนพอตมิเตอร์!
ฉันจะครอบคลุมเนื้อหาทางเทคนิคของ Arduino เป็นส่วนใหญ่ ตราบใดที่คุณมีกล่องไม้เพื่อซ่อน Arduino และ LCD ของคุณใน oganisor ส่วนตัวของคุณในรูปแบบใดก็ได้ที่ต้องการ
สิ่งที่คุณต้องการ
- *arduino uno
- มิเตอร์หม้อ
- *สาย prottyping ชาย
- *โมดูล LCD !พร้อมเครื่องอ่านการ์ด SD! (ฉันได้ arduino tft LCD)
- *การ์ดไมโคร SD
- * ไม้ (ฉันนำลิ้นชักขนาดเล็กเก่ากลับมาใช้ใหม่และใช้ชิ้นส่วนไม้สำรอง อย่างน้อยต้องสร้างกล่องเล็ก ๆ เพื่อซ่อน Arduino ของคุณ!
ขั้นตอนที่ 1: การตั้งค่า Potmeter บน Arduino
ต่อมิเตอร์หม้อตามภาพ
เพื่อให้มิเตอร์หม้อเริ่มทำงาน
คุณจะต้องเริ่มต้นด้วยตัวแปรบางตัวที่ด้านบนของภาพร่างก่อนการตั้งค่า:
รหัส:
const int analogInPin = A0; // พินอินพุตแบบอะนาล็อกที่ต่อโพเทนชิออมิเตอร์
int sensorValue = 0; // ค่าที่อ่านจาก pot int outputValue = 0; // ค่าที่ส่งออกไปยัง PWM (แอนะล็อกเอาต์)
ในรูปที่ 2 ฉันแสดงให้เห็นว่า potmeter ถูกแมปใน void loop อย่างไร
รหัส:
// อ่านค่าอนาล็อก:
sensorValue = analogRead (analogInPin); // แมปกับช่วงของแอนะล็อกเอาท์: outputValue = map(sensorValue, 0, 1023, 0, 255); สตริง stuffToPrint = สตริง (outputValue); // เปลี่ยนค่าแอนะล็อกเอาท์:
stuffToPrint.toCharArray (พิมพ์ออกมา, 9); // ข้อความคงที่ myScreen.setTextSize(1);
Serial.print("เซ็นเซอร์ = "); Serial.print(เซ็นเซอร์ค่า); Serial.print("\t เอาท์พุท = "); Serial.println (เอาต์พุตค่า);
ล่าช้า (50);
แมปข้อมูลแอนะล็อกจากพอตมิเตอร์เป็นช่วง 0 ถึง 255 เราจะใช้ช่วงนี้เพื่อควบคุมสไลด์โชว์ LCD
หากคุณต้องการความช่วยเหลือในการตั้งค่า potmeter; ฉันใช้โค้ดจากบทช่วยสอนที่เป็นประโยชน์นี้ หมุดเหมือนกันทุกประการ และจะทำงานกับการตั้งค่า LCD ในขั้นตอนต่อไป
www.toptechboy.com/arduino/lesson-11-arduin…
ขั้นตอนที่ 2: การตั้งค่า LCD
ตั้งค่าหมุดตามตัวอย่างด้านบน
เมื่อทำถูกต้องแล้ว หน้าจอของคุณจะสว่างเป็นสีขาว
หากคุณต้องการความช่วยเหลือเพิ่มเติมหรือต้องการใช้โค้ดตัวอย่างเพื่อทดสอบการแสดงผล คุณสามารถดูบทแนะนำอย่างเป็นทางการสำหรับโมดูลนี้และเป็นตัวอย่างโค้ดได้ที่นี่
เราจะใช้ "การวาดภาพจากการ์ด SD" บางส่วนในขั้นตอนต่อไป
ขั้นตอนที่ 3: การตั้งค่าสไลด์โชว์
ตอนนี้เราได้ตั้งค่า Potmeter และ LCD แล้ว เราสามารถตั้งค่า "สไลด์โชว์" โดยใช้ค่าที่แมปของ potmeter ได้
การใช้ช่วง 0 ถึง 255 เราสามารถระบุช่วงที่เราสามารถเรียกใช้ Arduino เพื่อแสดงเนื้อหาบางอย่างบน LCD
ตัวอย่างแรกดังแสดงในภาพ:
if (outputValue <51) { //range one if (rangeOne == true) { rangeTwo = true; myScreen.setRotation(90); myScreen.background(0, 0, 0); myScreen.stroke (255, 255, 255); myScreen.text("สวัสดี เยี่ยมมาก", 10, 50); myScreen.text("หมุนพิน > เป็น", 10, 60); myScreen.text("ขอกำลังใจ", 10, 70); rangeOne = เท็จ;
หาก potmeter เปลี่ยนเป็นช่วงที่ต่ำกว่า 51 หน้าจอพร้อมจอแสดงผล (ในโหมดแนวตั้ง = หมุน 90) ข้อความบางส่วน
เพื่อให้สามารถแสดงภาพได้ ตรวจสอบให้แน่ใจว่าพิน SD CS ของคุณถูกกำหนดอย่างถูกต้อง มิฉะนั้น Arduino จะล้มเหลวในการเริ่มต้น SD (เพื่อให้แน่ใจว่าได้ตรวจสอบสายไฟของคุณแล้ว !!)
หากคุณต้องการตรวจสอบพินของ LCD คุณสามารถดูคู่มืออย่างเป็นทางการภายใต้ "การเชื่อมต่อหน้าจอ"
ฉันกำหนดพิน SD CS เป็น 4 ตอนนี้เพราะฉันผสมสายเข้าด้วยกัน! - ฉันยินดีที่จะแบ่งปัน oopsie เล็กน้อยนั้นเพราะมันจะช่วยคุณประหยัดเวลาในการค้นหาเว็บสำหรับข้อผิดพลาด "Failed to initialize" ซึ่งในบางฟอรัมก็บอกว่าการแก้ไขคือต้องมีการ์ด SD บางรุ่น ดังนั้นควรตรวจสอบสายไฟก่อนซื้อการ์ด SD ใหม่!!
ขั้นตอนที่ 4: ตัวอย่างโค้ดแบบเต็ม
#รวม
#include // ไลบรารีเฉพาะฮาร์ดแวร์ #include
#define SD_CS 4 #define CS 10 #define DC 9 #define รีเซ็ต 8
const int analogInPin = A0; // พินอินพุตแบบอะนาล็อกที่ต่อโพเทนชิออมิเตอร์
int sensorValue = 0; // ค่าที่อ่านจาก pot int outputValue = 0; // ค่าที่ส่งออกไปยังบูลบูล PWM (แอนะล็อกเอาต์) rangeOne = true; ช่วงบูลทู = จริง; บูล rangeThree = true; บูล rangeFour = true; bool rangeFive = จริง;
TFT myScreen = TFT (CS, DC, รีเซ็ต);
รูปภาพรูปภาพ; const ถ่านพิมพ์[9];
การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); myScreen.begin(); // พยายามเข้าถึงการ์ด SD Serial.print("กำลังเตรียมใช้งานการ์ด SD…"); ถ้า (!SD.begin(SD_CS)) { Serial.println("ล้มเหลว!"); กลับ; } Serial.println("ตกลง!");
// เริ่มต้นและล้างหน้าจอ GLCD myScreen.begin(); myScreen.background(255, 255, 255);
} void loop(){ // อ่านค่าอนาล็อก: sensorValue = analogRead(analogInPin); // แมปกับช่วงของแอนะล็อกเอาท์: outputValue = map(sensorValue, 0, 1023, 0, 255); สตริง stuffToPrint = สตริง (outputValue); // เปลี่ยนค่าแอนะล็อกเอาท์:
stuffToPrint.toCharArray (พิมพ์ออกมา, 9); // ข้อความคงที่ myScreen.setTextSize(1);
Serial.print ("เซ็นเซอร์ = "); Serial.print(เซ็นเซอร์ค่า); Serial.print("\t เอาท์พุท = "); Serial.println (เอาต์พุตค่า);
ล่าช้า (50);
if (outputValue to", 10, 60); myScreen.text("get friendship.", 10, 70); rangeOne = false; } } if(outputValue > 52 && outputValue 102 && outputValue 154 && outputValue < 205){ / / range four if (rangeFour == true) { rangeThree = true; rangeFive = true; myScreen.setRotation(90); myScreen.background(255, 255, 255); // ล้างภาพหน้าจอ = myScreen.loadImage ("quote2.bmp"); //เขียนภาพบนหน้าจอ myScreen.image(image, 0, 0); myScreen.stroke(255, 255, 255); myScreen.text("I'm so proud", 10, 50); myScreen.text("ของคุณ!", 10, 60); rangeFour = false; } }
if(outputValue > 206 && outputValue