lnwshop logo
  • ตอบกระทู้
  • ตั้งกระทู้ใหม่
QUOTE 

การควบคุมมอเตอร์ หรือ Robot ด้วยรีโมทย์อินฟาเรด For NOD MCU ESP8266 (ลง library ก่อนนะครับ)

เจ้าของร้าน

#include <Wire.h> // เรียกใช้งาน library Wire.h เพื่อรองรับการเชื่อมต่อแบบ I2C

#include "Adafruit_MCP23017.h" // เรียกใช้งาน library Adafruit_MCP23017.h เพื่อติดต่อ IC MCP23017 ในรูปแบบ I2C

#include <IRremoteESP8266.h>  // เรียกใช้งาน library IRremoteESP8266.h สำหรับการใช้งาน รีโมตอินฟาเรท

#define pwm_L      4      // กำหนดค่าคงที่ให้กับ pwm_L เท่ากับ 4 นั้นก็คือ หมายเลขขาที่เใข้ในการควบคุม มอเตอร์ ด้านซ้าย

#define pwm_R      5      // กำหนดค่าคงที่ให้กับ pwm_R เท่ากับ 5 นั้นก็คือ หมายเลขขาที่เใข้ในการควบคุม มอเตอร์ ด้านขวา

 

int PWR = 1000;       // กำหนด ตัวแปร ชื่อ PWR ให้มีค่าเท่ากับ 1000 ทั้งนี้เพื่อใชในการ กำหนดความเร็วของมอเตอร์

 

/******************** ตัวแปรที่ใช้ในการเก็บค่า เพื่อเทียบกับค่าที่อ่านได้ *************************/

const long IRfront = 0xFF629D;      //go straight: button ^

const long IRback = 0xFFA857;       //go back    : button v

const long IRturnright = 0xFFC23D;  //turn right : button >

const long IRturnleft = 0xFF22DD;   //turn left  : button <

/***********************************************************************************/

int RECV_PIN = 13; // กำหนด หมายเลขขา สำหรับ ส่งข้อมูล อินฟาเรต

Adafruit_MCP23017 mcp; // เรียกใช้ฟังค์ชั่นเริ่มต้น สำหรับการใช้งาน library Adafruit_MCP23017.h ค่าเริ่มต้น ของ address จะ เท่ากับ 0

 

IRrecv irrecv(RECV_PIN);   // เรียกใช้งานฟังค์ชั่น เพื่อเรียกใช้งานขาอินฟาเรท ในที่นี่ = ขา 13 ที่กำหนดไวในตัวแปร RECV_PIN

 

decode_results results;  // เรียกใช้งานฟั้งค์ชั่น อ่านค่ารีโมทอินฟาเรท โดยกำหนดให้ results เป็นตัวเก็บค่า

 

void setup()

{

  Wire.begin(12, 14); // เรียกใช้ฟังค์ชั่น Wire.begin(SDA, SCL); เพื่อกำหนด ขา SDA และ SCL ** ค่าเริ่มต้นของ library จะเท่ากับ SCL = ขา5 SDA = ขา4

  mcp.begin();       // เริ่มต้นใช้งาน library ของ Adafruit_MCP23017.h หลังจากที่ กำหนดค่าเรียบร้อยแล้ว

  mcp.pinMode(7, OUTPUT);   // mcp.pinMode เป็นการกำหนด ขา input, output digital ** การใช้านคล้ายกับ Arduino, pinMode(pin, value);

  mcp.pinMode(6, OUTPUT);

  mcp.pinMode(5, OUTPUT);

  mcp.pinMode(4, OUTPUT);

  irrecv.enableIRIn();  // ฟังค์ชั่น เริ่มต้นการใช้งานรีโมทอินฟาเรท

  pinMode(pwm_L, OUTPUT);  // กำหนดให้ pwm_L เป็น output

  pinMode(pwm_R, OUTPUT);  // กำหนดให้ pwm_R เป็น output

}

 

void loop()

{

  if (irrecv.decode(&results))  // โครงสร้าของประโยคเงื่อนไขแบบ if หรือ ประโยคเงื่อนไขแบบทางเลือก คือถ้ามีการรับข้อมูลจากอินฟาเรทเข้ามา ก็จะทำงานเงื่อนไขในบรรทัดต่อไป ถ้าไม่มีก็จะไปที่บรรทัดสุดท้ายทันที

  {

    if (results.value == IRfront) // ถ้าค่าที่อ่านได้เท่ากับ ตัวแปรเงื่อนไข หุ่นยนต์จะเดินหน้า

    {

      go(); // เรียกใช้ฟังค์ชั่น go() ในการแสดงผลลัพธ์ เคลื่อนที่ไปข้างหน้า

      delay(100); // หน่วงเวลา ไป 100 มิลลิวินาที

    }

    if (results.value == IRback) // ถ้าค่าที่อ่านได้เท่ากับ ตัวแปรเงื่อนไข หุ่นยนต์จะเดินถอยหลัง

    {

      back(); // เรียกใช้ฟังค์ชั่น back() ในการแสดงผลลัพธ์ เคลื่อนที่ไปข้างหลัง

      delay(100); // หน่วงเวลา ไป 100 มิลลิวินาที

    }

    if (results.value == IRturnleft)  // ถ้าค่าที่อ่านได้เท่ากับ ตัวแปรเงื่อนไข หุ่นยนต์จะหันซ้าย

    {

      L(); // เรียกใช้ฟังค์ชั่น L() ในการแสดงผลลัพธ์ เคลื่อนที่ไปทางซ้าย

      delay(100); // หน่วงเวลา ไป 100 มิลลิวินาที

    }

    if (results.value == IRturnright)  // ถ้าค่าที่อ่านได้เท่ากับ ตัวแปรเงื่อนไข หุ่นยนต์จะหันขวา

    {

      R(); // เรียกใช้ฟังค์ชั่น R() ในการแสดงผลลัพธ์ เคลื่อนที่ไปทางขวา

      delay(100); // หน่วงเวลา ไป 100 มิลลิวินาที

    }

    irrecv.resume(); // รอรับข้อมูลชุดต่อไป

  }

  delay(100); // หน่วงเวลา 100 มิลลิวินาที

}

void L()  // ข้อมูลฟังค์ชั่น L(); โดยฟังค์ชั่นนี้ จะเป็นการกำหนดทิศทางให้รถ เคลื่อนที่ไปทางซ้าย **โดยที่เรากำหนดทิศทางการหมุนของล้อโดยดูตาม ตารางการกำหนดทิศทางของล้อ โดยการป้อนค่า HIGH หรือ LOW ลงไป

{

  mcp.digitalWrite(7, LOW);   // ฟังค์ชั่นกำหนดการใช้งาน ขา 7 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(6, HIGH);    // ฟังค์ชั่นกำหนดการใช้งาน ขา 6 ของ MCP 23017 เป็นเอาท์พุต HIGH หรือ 1 โดยผ่านทาง I2C BUS

  analogWrite(pwm_L, PWR);   // ฟังค์ชั่นกำหนดขาเอาพุต แบบ อนาล๊อค ของ Arduino โดยกำหนดให้ pwm_L = 4 เป็นเอาต์พุต และมีค่า = PWR = 1000  **โดยปกติค่าอนาล็อคเริ่มต้นของ NODE MCU จะมีค่า อยู่ที่ 0 - 1023 ซึ่งเราสามารถปรัปความเร็วได้ในฟังค์ชั่นนี้

}

void R()  // ข้อมูลฟังค์ชั่น R(); โดยฟังค์ชั่นนี้ จะเป็นการกำหนดทิศทางให้รถ เคลื่อนที่ไปทางขวา

{

  mcp.digitalWrite(5, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 5 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(4, HIGH);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 4 ของ MCP 23017 เป็นเอาท์พุต HIGH หรือ 1 โดยผ่านทาง I2C BUS

  analogWrite(pwm_R, PWR);   // ฟังค์ชั่นกำหนดขาเอาพุต แบบ อนาล๊อค ของ Arduino โดยกำหนดให้ pwm_R = 5 เป็นเอาต์พุต และมีค่า = PWR = 1000

}

void st() // ข้อมูลฟังค์ชั่น st(); โดยฟังค์ชั่นนี้ จะเป็นการกำหนดให้รถหยุดเคลื่อนที่ โดยการป้อนค่า LOW

{

  mcp.digitalWrite(7, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 7 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(6, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 6 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(5, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 5 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(4, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 4 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

}

void go()  // ข้อมูลฟังค์ชั่น go(); โดยฟังค์ชั่นนี้ จะเป็นการกำหนดทิศทางให้รถเคลื่อนที่ไปข้างหน้า

{

  mcp.digitalWrite(7, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 7 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(6, HIGH);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 6 ของ MCP 23017 เป็นเอาท์พุต HIGH หรือ 1 โดยผ่านทาง I2C BUS

  analogWrite(pwm_L, PWR);   //  ล้อซ้าย หมุนไปข้างหน้า

  mcp.digitalWrite(5, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 5 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(4, HIGH); // ฟังค์ชั่นกำหนดการใช้งาน ขา 4 ของ MCP 23017 เป็นเอาท์พุต HIGH หรือ 1 โดยผ่านทาง I2C BUS

  analogWrite(pwm_R, PWR);  // ล้อซ้าย หมุนไปข้างหน้า

}

void back()

{

  mcp.digitalWrite(7, HIGH);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 7 ของ MCP 23017 เป็นเอาท์พุต HIGH หรือ 1 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(6, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 6 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  analogWrite(pwm_L, PWR);  //  ล้อซ้าย หมุนไปข้างหลัง

  mcp.digitalWrite(5, HIGH);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 5 ของ MCP 23017 เป็นเอาท์พุต HIGH หรือ 1 โดยผ่านทาง I2C BUS

  mcp.digitalWrite(4, LOW);  // ฟังค์ชั่นกำหนดการใช้งาน ขา 4 ของ MCP 23017 เป็นเอาท์พุต LOW หรือ 0 โดยผ่านทาง I2C BUS

  analogWrite(pwm_R, PWR);  //  ล้อขวา หมุนไปข้างหลัง

}

1
แสดงความคิดเห็นที่ 0-0 จากทั้งหมด 0 ความคิดเห็น
ข้อความ
ชื่อผู้โพส
ข้อมูลสำหรับการติดต่อกลับ (ไม่เปิดเผย เห็นเฉพาะเจ้าของร้าน)
อีเมล
เบอร์มือถือ
  • ตอบกระทู้

<



    ติดต่อเรา สะดวก    รวดเร็ว ไว้ใจได้

 091-109-7711


  ติดต่อเราผ่านช่องทาง LINE

  ID : king5k

MEMBER

เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)

STATISTICS

หน้าที่เข้าชม6,406 ครั้ง
ผู้ชมทั้งหมด3,204 ครั้ง
เปิดร้าน21 ก.ย. 2559
ร้านค้าอัพเดท5 ก.ค. 2561
ตะกร้าของฉัน (0)
มีสินค้าทั้งหมด 0 ชนิด 0 ชิ้น
0 บาทราคาสินค้าทั้งหมด
(ยังไม่รวมค่าจัดส่ง)
สั่งซื้อสินค้า
ตะกร้า
( 0 )
รายการสั่งซื้อของฉัน
เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)
รายการสั่งซื้อของฉัน
ข้อมูลร้านค้านี้
ร้านPiapples
Piapples
วิสัยทัศน์ของเราคือ สร้างชุดฝึกสำหรับการโปรแกรมคอมพิวเตอร์ มอบให้ระบบการศึกษาทั่วประเทศ ยินดีให้คำปรึกษา R&D งานระบบไมโครคอนโทรลเลอร์ งานโปรเจค งานออกแบบดีไซด์
เบอร์โทร : 0911097711
อีเมล : kittisak.krua@gmail.com
ส่งข้อความติดต่อร้าน
เกี่ยวกับร้านค้านี้
สินค้าที่ดูล่าสุด
ดูสินค้าทั้งหมดในร้าน
สินค้าที่ดูล่าสุด
บันทึกเป็นร้านโปรด
Join (สมัครสมาชิกร้าน)
แชร์หน้านี้
แชร์หน้านี้

TOP เลื่อนขึ้นบนสุด
Go to Top
พูดคุย-สอบถาม คลิก