- แนะนำตัวค่ายหุ่นยนต์เติมฝัน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);