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

ทดสอบ Robot เดือนตามเส้น For NOD MCU ESP8266 (ลง library ก่อนนะครับ)

เจ้าของร้าน

//********Include libraries*********************************************

#include <Wire.h>

#include <Adafruit_MCP23008.h>

 

//Pin assignments and global variables per function. Customize if needed

//*******Pin assignments Motor board and IR receiver********************

const int MotorLeft1 = 2; // MCP23008 PIN 2

const int MotorLeft2 = 3;  // MCP23008 PIN 3

const int MotorRight1 = 0;  // MCP23008 PIN 0

const int MotorRight2 = 1;  // MCP23008 PIN 1

const int MotorLeftPWM = 4; // Nodemcu pin D2 = GPIO 4

const int MotorRightPWM = 5; // Nodemcu pin D1 = GPIO 5

int iSpeed = 700; //speed, range 70% from 0 - 1024

#define LINETHRESHOLD 400

Adafruit_MCP23008 mcp;

 

//******Track following pin assignments and signals**********************

const int pin_In_Mux = A0; // Nodemcu pin ADC 0 = GPIO A0

const int pin_Out_S0 = 7; // MCP23008 PIN 7

const int pin_Out_S1 = 6; // MCP23008 PIN 6

const int pin_Out_S2 = 5; // MCP23008 PIN 5

int s0 = 0;

int s1 = 0;

int s2 = 0;

int sensor [] = {0, 0, 0}; // keep sensor value

 

void setup() {

  // put your setup code here, to run once:

  Wire.begin(12, 14); // i2c enable

  //start receiving serial infor

  //motor connections

  mcp.begin();  // mcp 28003 enable

  mcp.pinMode(MotorRight1, OUTPUT);  //

  mcp.pinMode(MotorRight2, OUTPUT);  //

  mcp.pinMode(MotorLeft1,  OUTPUT);  //

  mcp.pinMode(MotorLeft2,  OUTPUT);  //

  pinMode(MotorRightPWM, OUTPUT); //enable for right side motor

  pinMode(MotorLeftPWM, OUTPUT); //enable for right side motor

 

  //black track following

  mcp.pinMode(pin_Out_S0, OUTPUT);

  mcp.pinMode(pin_Out_S1, OUTPUT);

  mcp.pinMode(pin_Out_S2, OUTPUT);

  pinMode(pin_In_Mux, INPUT);

}

 

//**************Movement functions******************************

void advance(int d) { //go straight

  mcp.digitalWrite(MotorRight1, HIGH);

  mcp.digitalWrite(MotorRight2, LOW);

  mcp.digitalWrite(MotorLeft1, LOW);

  mcp.digitalWrite(MotorLeft2, HIGH);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

  delay(d * 10);

}

void right(int d) { //turn right (single wheel)

  mcp.digitalWrite(MotorLeft1, LOW);

  mcp.digitalWrite(MotorLeft2, HIGH);

  mcp.digitalWrite(MotorRight1, LOW);

  mcp.digitalWrite(MotorRight2, LOW);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

  delay(d * 10);

}

void left(int d) {//turn left(single wheel)

  mcp.digitalWrite(MotorRight1, HIGH);

  mcp.digitalWrite(MotorRight2, LOW);

  mcp.digitalWrite(MotorLeft1, LOW);

  mcp.digitalWrite(MotorLeft2, LOW);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

  delay(d * 10);

}

void turnR(int d) {//turn right (two wheels)

  mcp.digitalWrite(MotorRight1, LOW);

  mcp.digitalWrite(MotorRight2, HIGH);

  mcp.digitalWrite(MotorLeft1, LOW);

  mcp.digitalWrite(MotorLeft2, HIGH);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

  delay(d * 10);

}

void turnL(int d) {//turn left (two wheels)

  mcp.digitalWrite(MotorRight1, HIGH);

  mcp.digitalWrite(MotorRight2, LOW);

  mcp.digitalWrite(MotorLeft1, HIGH);

  mcp.digitalWrite(MotorLeft2, LOW);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

  delay(d * 10);

}

void stopp(int d) { //stop

  mcp.digitalWrite(MotorRight1, LOW);

  mcp.digitalWrite(MotorRight2, LOW);

  mcp.digitalWrite(MotorLeft1, LOW);

  mcp.digitalWrite(MotorLeft2, LOW);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

  delay(d * 10);

}

void back(int d) { //go back

  mcp.digitalWrite(MotorRight1, LOW);

  mcp.digitalWrite(MotorRight2, HIGH);

  mcp.digitalWrite(MotorLeft1, HIGH);

  mcp.digitalWrite(MotorLeft2, LOW);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

  delay(d * 10);

}

 

//************************* for line follower **********************************

void Advance()

{ //go straight

  mcp.digitalWrite(MotorRight1, HIGH);

  mcp.digitalWrite(MotorRight2, LOW);

  mcp.digitalWrite(MotorLeft1, LOW);

  mcp.digitalWrite(MotorLeft2, HIGH);

  analogWrite(MotorRightPWM, iSpeed); // mas

  analogWrite(MotorLeftPWM, iSpeed);

}

 

void TurnR()

{ //turn right (two wheels)

  mcp.digitalWrite(MotorRight1, LOW);

  mcp.digitalWrite(MotorRight2, HIGH);

  mcp.digitalWrite(MotorLeft1, LOW);

  mcp.digitalWrite(MotorLeft2, HIGH);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

}

 

void TurnL()

{ //turn left (two wheels)

  mcp.digitalWrite(MotorRight1, HIGH);

  mcp.digitalWrite(MotorRight2, LOW);

  mcp.digitalWrite(MotorLeft1, HIGH);

  mcp.digitalWrite(MotorLeft2, LOW);

  analogWrite(MotorRightPWM, iSpeed);

  analogWrite(MotorLeftPWM, iSpeed);

}

 

void read_sensor_values()

{

  for (int count = 0; count <= 2; count++)

  {

    s0 = bitRead(count, 0);

    s1 = bitRead(count, 1);

    s2 = bitRead(count, 2);

 

    mcp.digitalWrite(pin_Out_S0, s0);

    mcp.digitalWrite(pin_Out_S1, s1);

    mcp.digitalWrite(pin_Out_S2, s2);

 

    sensor[count] = analogRead(pin_In_Mux);

    delay(10);

  }

}

 

void followBlackLine()

{

  int SL;  //sensor left

  int SM;  //sensor middle

  int SR;  //sensor right

  read_sensor_values();

  SL = sensor[2];

  SM = sensor[1];

  SR = sensor[0];

 

  if ((SL > LINETHRESHOLD) && (SM < LINETHRESHOLD) && (SR < LINETHRESHOLD) )

  {

    TurnL();

  }

  else if ((SL < LINETHRESHOLD) && (SM < LINETHRESHOLD) && (SR > LINETHRESHOLD) )

  {

    TurnR();

  }

  else if ((SL > LINETHRESHOLD) && (SM > LINETHRESHOLD) && (SR < LINETHRESHOLD) )

  {

    TurnL();

  }

  else if ((SL < LINETHRESHOLD) && (SM > LINETHRESHOLD) && (SR > LINETHRESHOLD) )

  {

    TurnR();

  }

  else

  {

    Advance();

  }

}

 

void loop() {

  // put your main code here, to run repeatedly:

  followBlackLine();

}

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
พูดคุย-สอบถาม คลิก