วิธีสร้างเครื่องคิดเลขจาก Arduino

ทำโครงการโดยใช้ Arduino Uno เนื่องจากบอร์ดไมโครคอนโทรลเลอร์นั้นสนุกจริงๆ หากคุณทำงานในโครงการฝังตัว หากคุณต้องการสร้างเครื่องคิดเลขง่ายๆที่สามารถดำเนินการทางคณิตศาสตร์พื้นฐานทั้งหมดเช่นการบวกการลบการคูณและการหารคุณสามารถทำได้ทันทีหากคุณมีความรู้เกี่ยวกับบอร์ด Arduino ดังนั้นในโครงการนี้เราจะใช้ Arduino Uno เพื่อสร้างเครื่องคิดเลขง่ายๆ เราจะรวมปุ่มกด 4 × 4 เพื่อส่งอินพุตและจอ LCD 16 × 2 เพื่อดูผลลัพธ์ของการทำงานของเรา

ดังนั้นเมื่อเราทราบนามธรรมพื้นฐานของโครงการแล้วว่าเราต้องการบรรลุอะไรในท้ายที่สุดให้เราก้าวไปข้างหน้าและเริ่มรวบรวมข้อมูลเพิ่มเติมเพื่อเริ่มทำงานในโครงการนี้

วิธีสร้างเครื่องคิดเลขง่ายๆบน Arduino

ขั้นตอนที่ 1: รวบรวมส่วนประกอบ

ก่อนเริ่มโปรเจ็กต์ขั้นตอนแรกคือการสร้างรายการส่วนประกอบทั้งหมดที่จะไม่ถูกใช้ในโปรเจ็กต์ นี่เป็นแนวทางที่สมบูรณ์แบบเนื่องจากช่วยประหยัดเวลาได้มากและป้องกันไม่ให้เราติดขัดในระหว่างโครงการ ดังนั้น รายการส่วนประกอบทั้งหมดที่หาได้ง่ายในตลาดมีดังต่อไปนี้:

ขั้นตอนที่ 2: ทำงาน

เนื่องจากตอนนี้เรามีส่วนประกอบทั้งหมดที่จะใช้ในโปรเจ็กต์นี้แล้วให้เราเริ่มทำงานในโปรเจ็กต์นี้ เราจะใช้ Arduino Uno เป็นบอร์ดไมโครคอนโทรลเลอร์ โค้ดจะถูกเขียนและเผาบนกระดานนี้ซึ่งจะบอกให้คณะกรรมการทราบว่าต้องดำเนินการอย่างไรและอย่างไร ปุ่มกด 4 × 4 จะใช้ในการป้อนข้อมูลตัวเลขที่จะคำนวณในเครื่องคิดเลข ไมโครคอนโทรลเลอร์จะดำเนินการคำนวณทางคณิตศาสตร์ทั้งหมดแล้วส่งเอาต์พุตไปที่ จอ LCD 16 × 2.

ก่อนเชื่อมต่อฮาร์ดแวร์ควรจำลองและทดสอบโค้ดและการเชื่อมต่อวงจรบนซอฟต์แวร์คอมพิวเตอร์ก่อนจะดีกว่า เราจะใช้ Proteusเพื่อจุดประสงค์นี้. หลังจากทดสอบวงจรและยืนยันว่าซอฟต์แวร์ทำงานได้ดีอย่างสมบูรณ์เราจะไปที่ฮาร์ดแวร์

ขั้นตอนที่ 3: การจำลองวงจร

ก่อนที่จะใช้โปรเจ็กต์นี้บนฮาร์ดแวร์เราจะจำลองโปรเจ็กต์นี้บน Proteus ก่อนเพื่อตรวจสอบว่าโค้ดทำงานได้ดีหรือไม่ หากคุณไม่เคยทำงานกับ Proteus มาก่อนก็ไม่มีอะไรต้องกังวล ในการจำลองวงจรบนซอฟต์แวร์ให้ทำตามขั้นตอนต่อไปนี้

  1. หากคุณยังไม่ได้ติดตั้งซอฟต์แวร์นี้ในคอมพิวเตอร์ของคุณ คลิกที่นี่เพื่อดาวน์โหลด
  2. หลังจากติดตั้งซอฟต์แวร์แล้วให้เปิดซอฟต์แวร์และสร้างโครงการใหม่โดยคลิกที่ไฟล์ ISIS ปุ่ม.
  3. Proteus ไม่มีไลบรารี Arduino ในตอนแรก เราจะต้องรวมไว้ด้วย มีการแนบไลบรารี Arduino สำหรับ proteus พร้อมกับรหัสในลิงค์ด้านล่าง คัดลอกไฟล์และวางลงใน C: \ ProgramData \ Labcenter Electronics \ Proteus 8 Professional \ LIBRARY
  4. แผนผังใหม่เพิ่งเปิดขึ้น คลิกที่ เพื่อเปิดเมนูส่วนประกอบ
  5. กล่องจะปรากฏขึ้นพร้อมแถบค้นหาที่มุมบนซ้าย ค้นหาส่วนประกอบที่คุณต้องใช้ในโปรเจ็กต์
  6. หลังจากเลือกส่วนประกอบทั้งหมดแล้วคุณจะเห็นรายการทั้งหมดทางด้านซ้ายของหน้าจอ
  7. ทำแผนภาพวงจรดังภาพด้านล่าง
  8. ตอนนี้เปิดไฟล์ Arduino ที่ให้ไว้ด้านล่าง ในเมนู Sketch คลิกที่ ส่งออกไบนารีที่คอมไพล์. สิ่งนี้จะสร้างไฟล์. hex ที่จะใช้ในการจำลอง Arduino ใน Proteus
  9. นี่คือไฟล์สองไฟล์ที่จะถูกสร้างขึ้น เราจะใช้อันแรกในการจำลองของเรา
  10. เมื่อสร้างไฟล์ HEX แล้ว ให้เปิดโพรทูสและดับเบิลคลิกที่บอร์ดไมโครคอนโทรลเลอร์ กล่องจะปรากฏขึ้นเพื่อแก้ไขส่วนประกอบ อัปโหลดไฟล์ฐานสิบหกที่นั่น

    เมื่ออัปโหลดโค้ดที่นี่สำเร็จคุณสามารถทดสอบเครื่องคิดเลขได้โดยดำเนินการคำนวณทางคณิตศาสตร์และยืนยันผลลัพธ์

ขั้นตอนที่ 4: การประกอบวงจร

เนื่องจากวงจรถูกจำลองและโค้ดก็ใช้งานได้ดีกับวงจรนั้น ให้เราก้าวไปข้างหน้าและรวบรวมส่วนประกอบทั้งหมดเข้าด้วยกันในไฟล์ Veroboard เพื่อสร้างผลิตภัณฑ์ขั้นสุดท้าย ทำตามขั้นตอนต่อไปนี้เพื่อทำการเชื่อมต่อทั้งหมดในวงจร

  1. มีทั้งหมด 8 พินบนปุ่มกด 4 × 4 ชื่อ A, B, C, D, 1, 2, 3 และ 4 ตรวจสอบให้แน่ใจว่าคุณได้เชื่อมต่อพิน A, B C และ D เข้ากับพิน 0, พิน 1, พิน 2 และพิน 3 ของบอร์ด Arduino Uno และพิน 1, 2, 3 และ 4 พินของปุ่มกดเข้ากับพิน 4 พิน 5 พิน 6 และพิน 7 ของบอร์ด Arduino Uno ตามลำดับ
  2. ตอนนี้เชื่อมต่อพิน D4, D5, D6 และ D7 ของ LCD 16 × 2 เข้ากับพิน 10, พิน 11, พิน 12 และพิน 13 ของบอร์ด Arduino ตามลำดับ
  3. ตอนนี้เชื่อมต่อ RE และ พินของ LCD เข้ากับพิน 8 และพิน 9 ของบอร์ด Arduino ตามลำดับ
  4. สั้น VSS, VEE และ RW พินของ LCD และเชื่อมต่อกับกราวด์ของ Arduino Uno
  5. เปิดเครื่อง LCD โดยเชื่อมต่อ VDD ขาของ LCD กับ 5V ของ Arduino UNO

ขั้นตอนที่ 5: เริ่มต้นกับ Arduino

Arduino IDE เป็นซอฟต์แวร์ที่คุณสามารถเขียนแก้จุดบกพร่องและคอมไพล์โค้ดที่จะทำงานบนไมโครคอนโทรลเลอร์ Arduino รหัสนี้จะถูกอัปโหลดไปยังไมโครคอนโทรลเลอร์ผ่าน IDE นี้ หากคุณไม่เคยมีประสบการณ์กับซอฟต์แวร์นี้มาก่อนก็ไม่มีอะไรต้องกังวลเพราะขั้นตอนทั้งหมดในการใช้ซอฟต์แวร์นี้มีดังต่อไปนี้

  1. หากคุณยังไม่ได้ติดตั้งซอฟต์แวร์ให้คลิกที่นี่เพื่อดาวน์โหลดซอฟต์แวร์
  2. เชื่อมต่อบอร์ด Arduino ของคุณกับพีซีและเปิดแผงควบคุม คลิกที่ ฮาร์ดแวร์และเสียง.เปิดให้บริการแล้ว อุปกรณ์และเครื่องพิมพ์ และค้นหาพอร์ตที่บอร์ดของคุณเชื่อมต่ออยู่ พอร์ตนี้แตกต่างกันในคอมพิวเตอร์เครื่องอื่น
  3. ตอนนี้เปิด Arduino IDE จาก Tools ให้ตั้งค่าบอร์ด Arduino เป็น Arduino / Genuino UNO
  4. จากเมนูเครื่องมือเดียวกันตั้งค่าหมายเลขพอร์ต หมายเลขพอร์ตนี้ควรตรงกับหมายเลขพอร์ตที่พบก่อนหน้านี้ในแผงควบคุม
  5. ในการใช้แป้นพิมพ์ขนาด 4×4 และ LCD ขนาด 16×2 กับ Arduino IDE เราจำเป็นต้องนำเข้าไลบรารีพิเศษที่จะช่วยให้เราเบิร์นโค้ดบน Arduino Uno และใช้งานได้ ไลบรารีทั้งสองนี้แนบอยู่ในลิงค์ด้านล่าง หากต้องการรวมไลบรารี goto ร่าง> รวมไลบรารี> เพิ่มไลบรารี ZIP. กล่องจะปรากฏขึ้น ค้นหาโฟลเดอร์ ZIP ในคอมพิวเตอร์ของคุณและคลิกตกลงเพื่อรวมโฟลเดอร์ ห้องสมุดนี้แนบมาพร้อมกับรหัสในลิงค์ด้านล่าง
  6. ดาวน์โหลดรหัสที่แนบด้านล่างและคัดลอกไปยัง IDE ของคุณ ในการอัปโหลดรหัสให้คลิกที่ปุ่มอัปโหลด

ดาวน์โหลดรหัสคลิกที่นี่

ขั้นตอนที่ 6: ทำความเข้าใจรหัส

โค้ดแสดงความคิดเห็นได้ดีมาก แต่อย่างไรก็ตามเพื่อความสะดวกของคุณมีคำอธิบายด้านล่าง

1. ในตอนเริ่มต้นไฟล์ส่วนหัวจะถูกเขียนเพื่อรวมไลบรารีเพื่อให้ปุ่มกดและ LCD สามารถเชื่อมต่อกับบอร์ด Arduino Uno ได้

#รวม  // รวมไฟล์ส่วนหัวสำหรับ LCD #include  // รวมไฟล์ส่วนหัวสำหรับปุ่มกด

2. หลังจากนั้นจะมีการประกาศตัวแปรสองตัวเพื่อเก็บจำนวนแถวและคอลัมน์ของปุ่มกด คีย์แมปบอกเราเกี่ยวกับลำดับของคีย์ที่ปรากฏในปุ่มกด

const byte ROWS = 4; // สี่แถวของปุ่มกด const byte COLS = 4; // สามคอลัมน์ของปุ่มกด // กำหนดปุ่มถ่านของ Keymap [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', ' 6 ',' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}};

3. หลังจากนั้นจะมีการระบุว่าแถวและคอลัมน์ของปุ่มกดเชื่อมต่อกับขาใดของ Arduino หลังจากเสร็จสิ้นสามารถสร้างปุ่มกดได้โดยการแมปพินทั้งหมด

ไบต์ rowPins [ROWS] = {0, 1, 2, 3}; // เชื่อมต่อปุ่มกด ROW0, ROW1, ROW2 และ ROW3 กับหมุด Arduino เหล่านี้ 0,1,2,3 ตามลำดับ ไบต์ colPins [COLS] = {4, 5, 6, 7}; // เชื่อมต่อปุ่มกด COL0, COL1 และ COL2 กับหมุด Arduino เหล่านี้ 4,5,67 ตามลำดับ ปุ่มกด kpd = ปุ่มกด (makeKeymap (คีย์), rowPins, colPins, ROWS, COLS); // สร้างปุ่มกด

4. หลังจากนั้นให้เราบอกว่าพินใดของ LCD เชื่อมต่อกับพินใดของ Arduino

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // หมุดที่เชื่อมต่อ LCD LCD LiquidCrystal (rs, en, d4, d5, d6, d7); // สร้าง LCD

5. จากนั้นตัวแปรบางตัวจะถูกเตรียมใช้งานเพื่อเก็บค่าของการคำนวณและดำเนินการในช่วงเวลาดำเนินการ

ยาว Num1, Num2, Number; กุญแจถ่าน, การกระทำ; ผลลัพธ์บูลีน = เท็จ;

6. การตั้งค่าเป็นโมฆะ () เป็นฟังก์ชันที่ทำงานเพียงครั้งเดียวเมื่อเปิดวงจร ในฟังก์ชั่นนี้เราจะประกาศว่าจะใช้พินใดของบอร์ด Arduino เพื่อรับอินพุตและจะใช้เพื่อส่งเอาต์พุต นอกจากนี้ยังมีการกำหนดอัตราการรับส่งข้อมูลในฟังก์ชันนี้ซึ่งโดยพื้นฐานแล้วความเร็วของการสื่อสารเป็นบิตต่อวินาที

การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); lcd.begin (16, 2); //เรากำลังใช้จอ LCD ขนาด 16*2 LCD.print("เครื่องคิดเลข"); // แสดงข้อความแนะนำ lcd.setCursor (0, 1); // ตั้งค่าเคอร์เซอร์เป็นคอลัมน์ 0 ล่าช้าบรรทัด 1 (1000); // รอ 1 วินาที lcd.clear (); // ล้างหน้าจอ LCD}

7. คำนวณผลลัพธ์ ()เป็นฟังก์ชั่นที่จะใช้ในการตรวจจับป้ายที่กดบนปุ่มกด บนพื้นฐานของเครื่องหมายที่กดมันจะตัดสินใจว่าจะดำเนินการทางคณิตศาสตร์ใด

เป็นโมฆะ CalculateResult () {if (action == '+') // ถ้ากดเครื่องหมาย + Number = Num1 + Num2; // เพิ่มตัวเลขทั้งสอง if (action == '-') // if - sign ถูกกด Number = Num1-Num2; // ลบตัวเลขทั้งสองถ้า (action == '*') // ถ้ากดเครื่องหมาย * Number = Num1 * Num2; // คูณทั้งสองตัวเลข if (action=='/') // if / sign ถูกกด Number = Num1/Num2; // หารทั้งสองจำนวน}

8. DisplayResult ()เป็นฟังก์ชันที่ใช้แสดงผลบนจอ LCD ก่อนอื่นตั้งค่าเคอร์เซอร์ไปที่ตำแหน่งเริ่มต้นและพิมพ์หมายเลขแรก จากนั้นจะแสดงตัวดำเนินการทางลอจิคัลและตัวเลขที่สอง หลังจากพิมพ์เครื่องหมาย“ =” แล้วก็จะแสดงคำตอบบนจอ LCD

โมฆะ DisplayResult () {lcd.setCursor (0, 0); // ตั้งค่าเคอร์เซอร์ไปที่คอลัมน์ 0, บรรทัดที่ 1 lcd.print(Num1); // พิมพ์หมายเลขแรกบนหน้าจอ lcd.print(action); // พิมพ์เครื่องหมายที่กดบนหน้าจอ lcd.print (Num2); // พิมพ์ตัวเลขที่สองบนหน้าจอ if (result == true) // แสดงผลลัพธ์ {lcd.print ("="); // พิมพ์เครื่องหมาย = บนหน้าจอ lcd.print (Number); // พิมพ์คำตอบบนหน้าจอ}}

9. DetectButtons ()เป็นฟังก์ชันที่ใช้ตรวจจับว่าปุ่มใดถูกกด มันจะตรวจจับด้วยว่ากดปุ่มสองครั้งหรือไม่ ฟังก์ชั่นนี้จะส่งกลับตัวเลขที่จะกดบนปุ่มกด

เป็นโมฆะ DetectButtons () { lcd.clear (); // จากนั้นทำความสะอาด if (key == '*') // หากกดปุ่ม Cancel {Serial.println ("Button Cancel"); // พิมพ์ความคิดเห็น Number = Num1 = Num2 = 0; ผลลัพธ์ = เท็จ; } if (key == '1') // ถ้ากดปุ่ม 1 {Serial.println ("ปุ่ม 1"); ถ้า (Number == 0) Number = 1; else Number = (หมายเลข * 10) + 1; // กดสองครั้ง} if (key == '4') // ถ้ากดปุ่ม 4 {Serial.println ("ปุ่ม 4"); ถ้า (Number == 0) Number = 4; else Number = (หมายเลข * 10) + 4; // กดสองครั้ง} if (key == '7') // ถ้ากดปุ่ม 7 {Serial.println ("ปุ่ม 7"); ถ้า (Number == 0) Number = 7; else Number = (หมายเลข * 10) + 7; // กดสองครั้ง} if (key == '0') // ถ้ากดปุ่ม 0 {Serial.println ("Button 0"); ถ้า (Number == 0) Number = 0; else Number = (หมายเลข * 10) + 0; // กดสองครั้ง} if (key == '2') // Button 2 is Pressed {Serial.println ("Button 2"); ถ้า (Number == 0) Number = 2; else Number = (หมายเลข * 10) + 2; // กดสองครั้ง} if (key == '5') // Button 5 is Pressed {Serial.println ("Button 5"); ถ้า (จำนวน==0) จำนวน=5; else Number = (หมายเลข * 10) + 5; // กดสองครั้ง} if (key == '8') // Button 8 is Pressed {Serial.println ("Button 8"); ถ้า (Number == 0) Number = 8; else Number = (หมายเลข * 10) + 8; // กดสองครั้ง } ถ้า (คีย์ == '#') // ปุ่ม # ถูกกด { Serial.println ("ปุ่มเท่ากับ"); Num2=จำนวน; ผลลัพธ์ = จริง; } if (คีย์ == '3') // กดปุ่ม 3 { Serial.println ("ปุ่ม 3"); ถ้า (Number == 0) Number = 3; else Number = (หมายเลข * 10) + 3; // กดสองครั้ง} if (key == '6') // Button 6 is Pressed {Serial.println ("Button 6"); ถ้า (Number == 0) Number = 6; else Number = (หมายเลข * 10) + 6; // กดสองครั้ง} if (key == '9') // ปุ่ม 09 ถูกกด {Serial.println ("ปุ่ม 9"); ถ้า (Number == 0) Number = 9; อื่น จำนวน = (หมายเลข * 10) + 9; // กดสองครั้ง} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Detecting Buttons on Column 4 {Num1 = Number; หมายเลข = 0; ถ้า (คีย์ == 'A') { Serial.println ("เพิ่มเติม"); การกระทำ = '+'; } if (คีย์ == 'B') {Serial.println ("ลบ"); การกระทำ = '-'; } if (key == 'C') {Serial.println ("การคูณ"); การกระทำ = '*'; } if (key == 'D') {Serial.println ("Devesion"); การกระทำ = '/'; } ล่าช้า (100); }}

10. ห่วงเป็นโมฆะ ()เป็นฟังก์ชันที่จะทำงานซ้ำแล้วซ้ำอีกในวง ฟังก์ชันนี้ใช้เพื่อเรียกฟังก์ชันอื่น ๆ ทั้งหมดที่จะใช้เพื่อดำเนินการทั้งหมด ฟังก์ชันเหล่านี้ได้อธิบายไว้ข้างต้น

โมฆะ loop () {key = kpd.getKey (); // จัดเก็บค่าคีย์ที่กดไว้ในถ่าน if (key! = NO_KEY) DetectButtons (); // เรียกใช้ฟังก์ชัน if (ผลลัพธ์ == จริง) CalculateResult (); // เรียกใช้ฟังก์ชัน DisplayResult (); // ฟังก์ชันการโทร}

ขั้นตอนที่ 7: การทดสอบ

ตอนนี้เมื่อเราเชื่อมต่อส่วนประกอบทั้งหมดเข้าด้วยกันและอัปโหลดโค้ดในไมโครคอนโทรลเลอร์แล้วเรามาทดสอบเครื่องคิดเลขว่าทำงานได้ดีหรือไม่ ในการทดสอบเครื่องคิดเลขให้กดแป้นตัวเลขใด ๆ หลังจากนั้นกด จากนั้นกดแป้นตัวเลขอีกครั้ง เมื่อคุณทำเสร็จแล้ว LCD จะแสดงการเพิ่มของตัวเลขทั้งสอง

นี่เป็นขั้นตอนทั้งหมดในการสร้างและทดสอบเครื่องคิดเลขโดยใช้ Arduino ตอนนี้คุณสามารถสนุกกับการสร้างเครื่องคิดเลข Arduino ของคุณเองที่บ้านได้แล้ว

Facebook Twitter Google Plus Pinterest