- แนะนำตัวค่ายหุ่นยนต์เติมฝัน1 โปรแกรม arduino 2 ไดรส์เวอร์3 ภาพการประกอบ 4 หลักการต่อวงจรหุ่นยนต์
5 หลักการเขียนโปรแกรม
6 ตารางคะแนน
7 การเขียนโปรแกรม
8 กติกาการแข่งขัน
9 ช่องยูทูป
10 ฝากติดตามผลงาน เพจ fackbook//////////////////////////////////////////////////////////////
CODE
////////////////////////////////////////////////////////////////////////////////////////
/////////////
#include <PS2X_lib.h> // เรียกใช้งานไลบรารีสำหรับจอยสติ๊ก PS2
#include <Servo.h>
Servo myservo1;////ตีวยืด
Servo myservo2;////ตีวคีบ
int potpin = 0;
int pos1=90;
int pos2=90;
int DLS=50;
const int Pin_A = 8;
const int Pin_B = 9;
const int Pin_C = 10;
const int Pin_D = 11;
const int Pin_E = 4;
const int Pin_F = 5;
const int Pin_G = 12;
const int Pin_H = 13;
///////////////////////////////////////////////////////---------------------------------
#define PS2_DAT A1 //
#define PS2_CMD A2 //
#define PS2_CLK A3
#define PS2_SEL A4 //
PS2X ps2x; // ประกาศตัวแปรสำหรับจอยสติ๊ก PS2
/////////////////////////////////////////////
int posA = 20 ;
void setup()
{
pinMode(Pin_A, OUTPUT);
pinMode(Pin_B, OUTPUT);
pinMode(Pin_C, OUTPUT);
pinMode(Pin_D, OUTPUT);
pinMode(Pin_E, OUTPUT);
pinMode(Pin_F, OUTPUT);
pinMode(Pin_G, OUTPUT);
pinMode(Pin_H, OUTPUT);
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
myservo1.attach(6); //ตัวยืด
myservo2.attach(7);//ตัวคีบ
delay(100);
Serial.begin(57600);
Serial.println("Connecting"); // แสดงข้อความเพื่อแจ้งว่า กำลังเชื่อมต่อกับจอยสติ๊ก
while (true) // วนรอการเชื่อมต่อกับจอยสติ๊ก
{
int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false);
if (error == 0) // กรณีที่เชื่อมต่อได้ Error = 0
{
Serial.println("OK"); // แสดงข้อความว่า เชื่อมต่อกับจอยสติ๊กเรียบร้อยแล้ว
delay(100); // หน่วงเวลา 1 วินาที
break; // ออกจาก while(true)
}
delay(500); // หน่วงเวลา 500 มิลลิวินาทีเพื่อรอการเชื่อมต่อครั้งต่อไปในกรณีที่เชื่อมต่อไม่สำเร็จ
}
}
void loop()
{
ps2x.read_gamepad(false, false); // อ่านข้อมูลจาก PS2 Controller
////////////////////////////////----------------------------------------------------
if (ps2x.Button(PSB_CIRCLE)) // ถ้าปุ่มวงกลมถูกกด
{
Serial.println("O");
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_CROSS)) // ถ้าปุ่มกากบาทถูกกด
{
Serial.println("X");
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_SQUARE)) // ถ้าปุ่มสี่เหลี่ยมถูกกด
{
Serial.println("S");
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_TRIANGLE)) // ถ้าปุ่มสามเหลี่ยมถูกกด
{
Serial.println("T");
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_L1)) // ถ้าปุ่ม L1 ถูกกด
{
Serial.println("L1");
DW();
}
else if (ps2x.Button(PSB_L2)) // ถ้าปุ่ม L2 ถูกกด
{
Serial.println("L2");
UP();
}
else if (ps2x.Button(PSB_R1)) // ถ้าปุ่ม R1 ถูกกด
{
Serial.println("R1");
YI();
}
else if (ps2x.Button(PSB_R2)) // ถ้าปุ่ม R2 ถูกกด
{
Serial.println("R2");
YO();
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_START)) // ถ้าปุ่ม Start ถูกกด
{
Serial.println("Start");
DLS=50;// แสดงข้อความว่า Start
}
else if (ps2x.Button(PSB_SELECT)) // ถ้าปุ่ม Select ถูกกด
{
Serial.println("Select");
DLS=10;
}
////////////////////////////////----------------------------------------------------
else if (ps2x.Button(PSB_PAD_UP)) // ถ้าปุ่ม Up ถูกกด
{
Serial.println("UP");
DD();//เดินหน้า
}
else if (ps2x.Button(PSB_PAD_DOWN)) // ถ้าปุ่ม Down ถูกกด
{
Serial.println("DOWN");
BK();//ถอย
}
else if (ps2x.Button(PSB_PAD_LEFT)) // ถ้าปุ่ม Left ถูกกด
{
Serial.println("LEFT");
LL();
}
else if (ps2x.Button(PSB_PAD_RIGHT)) // ถ้าปุ่ม Right ถูกกด
{
Serial.println("RIGHT");
RR();
}
////////////////////////////////----------------------------------------------------
else
{
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW);
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, LOW);
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, LOW);
}
}
//////////////////////////////////
////////////////////////////////----------------------------------------------------เดินหน้า
void DD()
{
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, HIGH);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, HIGH);
delay(DLS);
}
////////////////////////////////----------------------------------------------------ถอยหลัง
void BK()//ถอย
{
digitalWrite(Pin_A, HIGH);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, HIGH);
digitalWrite(Pin_D, LOW);
delay(DLS);
}
////////////////////////////////----------------------------------------------------หมุนขวา
void RR()//หมุนขวา
{
digitalWrite(Pin_A, HIGH);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, HIGH);
delay(DLS);
}
////////////////////////////////----------------------------------------------------หมุนซ้าย
void LL()//หมุนซ้าย
{
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, HIGH);
digitalWrite(Pin_C, HIGH);
digitalWrite(Pin_D, LOW);
delay(DLS);
}
////////////////////////////////----------------------------------------------------จบ
void UP()
{
digitalWrite(Pin_E, LOW);
digitalWrite(Pin_F, HIGH);
delay(50);
}
void DW()
{
digitalWrite(Pin_E, HIGH);
digitalWrite(Pin_F, LOW);
delay(50);
}
void YI()
{
digitalWrite(Pin_G, LOW);
digitalWrite(Pin_H, HIGH);
delay(50);
}
void YO()
{
digitalWrite(Pin_G, HIGH);
digitalWrite(Pin_H, LOW);
delay(50);