lnwshop logo
เจ้าของร้านค้านี้ ไม่ได้เข้าสู่ระบบเป็นระยะเวลา 16 วัน แล้ว
  • ตอบกระทู้
  • ตั้งกระทู้ใหม่
QUOTE 

การสั่งงานควบคุมมอเตอร์ ด้วยคอมพิวเตอร์ For NOD MCU ESP8266 (ลง library ก่อนนะครับ)

เจ้าของร้าน

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

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

 

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

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

 

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

int state = 0;        // กำหนดตัวแปรชื่อ state โดยที่ให้มีค่าเริ่มต้น = 0

 

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

 

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);

 

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

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

}

 

void loop()

{

  switch (state) // โครงสร้าของประโยคเงื่อนไขแบบ switch หรือ ประโยคเงื่อนไขแบบทางเลือก โดยเรียกใช้ตัวแปร state ที่กำหนดค่าไว้ข้างบน มาใช้แทนค่าผลลัพธ์ในการตัดสินใจ

  {

    case 0: // ผลลัพธ์ที่ 1

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

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

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

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

      break; // คำสั่ง เบรก เมื่อเรียกใช้ ประโยคเงื่อนไข switch ต้องใส่ เบรค ทุกครั้ง เพื่อออกจาก ผลลัพธ์ที่ 1 ไปแสดงผลลัพธ์ต่อไป

 

    case 1: // ผลลัพธ์ที่ 2

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

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

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

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

      break;

 

    case 2: // ผลลัพธ์ที่ 3

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

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

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

      delay(100);

      break;

 

    case 3: // ผลลัพธ์ที่ 4

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

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

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

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

      break;

  }

  state++; // กำหนดให้ค่าผลลัพธ์ เพิ่มขึ้นทีละ 1

  if (state > 4) state = 0; // โครงสร้าของประโยคเงื่อนไขแบบ if หรือประโยคเงื่อนไข ถ้า... แล้ว.... อธิบายได้ว่า ถ้า ผลลัพธ์ มากกว่า 4 ให้ผลลัพธ์มีค่าเท่ากับ 0 ทันที ซึ่งก็คือ ถ้าผลลัพธ์ ยังไม่มากกว่า 4 ก็จะยังทำงานต่อไปจนกว่าจะมากกว่า 4 จึงจะออกจากคำสั่งนี้ได้

}

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,457 ครั้ง
ผู้ชมทั้งหมด3,243 ครั้ง
เปิดร้าน21 ก.ย. 2559
ร้านค้าอัพเดท5 ก.ค. 2561
ตะกร้าของฉัน (0)
มีสินค้าทั้งหมด 0 ชนิด 0 ชิ้น
0 บาทราคาสินค้าทั้งหมด
(ยังไม่รวมค่าจัดส่ง)
สั่งซื้อสินค้า
ตะกร้า
( 0 )
รายการสั่งซื้อของฉัน
เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

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

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