ค่ายอบรมหุ่นยนต์ การทำภาระกิจพิชิตอวกาศ
//////////////////////////////////////////////////////////////////////////////////////////////////////
ค่ายอบรมหุ่นยนต์ การทำภาระกิจพิชิตอวกาศ1 โปรแกรม arduino 2 ไดรส์เวอร์3 ไลบรารี่     4 รายการชุดฝึก
5 ผลงาน
6 youtube
7 การเขียนโปรแกรม
8 กติกาการแข่งขัน
9 ตารางคะแนน
10 ฝากติดตามผลงาน
ตารางคะแนน
ตัวอย่างโค๊ด Auto
//////////////////////////////////////////////////////////////////////
#include <Servo.h>///ไลบรารี่   V3
Servo myservo1;///ตัวแปรเซอร์โว1คีบ
Servo myservo2;///ตัวแปรเซอร์โว2ยก
int pos1 = 90;//คีบ90-140///ค่าตั้งต้น servo1
int pos2 = 170;//ยก170-10 ///ค่าตั้งต้น servo1
const int analogInPin0 = A0; ///ตำแหน่งเซ็นเซอร์
const int analogInPin1 = A1; ///ตำแหน่งเซ็นเซอร์
const int analogInPin2 = A2; ///ตำแหน่งเซ็นเซอร์
const int analogInPin3 = A3; ///ตำแหน่งเซ็นเซอร์
const int analogInPin4 = A4; ///ตำแหน่งเซ็นเซอร์
const int analogInPin5 = A5; ///ตำแหน่งเซ็นเซอร์
int sensorValue0 = 0;///ตัวแปรเซ็นเซอร์
int sensorValue1 = 0;///ตัวแปรเซ็นเซอร์
int sensorValue2 = 0;///ตัวแปรเซ็นเซอร์
int sensorValue3 = 0;///ตัวแปรเซ็นเซอร์
int sensorValue4 = 0;///ตัวแปรเซ็นเซอร์
int sensorValue5 = 0;///ตัวแปรเซ็นเซอร์
////////////////////
const int BZ =4;/////บัสเซอร์
////////////////////////////////////มอเตอร์
const int inB1 =12;///////มอเตอร์
const int inA1 =13;//////มอเตอร์
const int PWB  =10;//////มอเตอร์
const int PWA  =11;///////มอเตอร์
int Step=0;//ตัวแปรขั้นตอนการทำงาน
void setup() 
{
  myservo1.attach(9);//ตำแหน่งเซอร์โว
  myservo2.attach(7);//ตำแหน่งเซอร์โว
  myservo1.write(pos1); //เซอร์โวทำงานค่าตั้งต้น
  myservo2.write(pos2); //เซอร์โวทำงานค่าตั้งต้น
Serial.begin(9600);
 pinMode(BZ , OUTPUT);//บัซเซอร์เป็นภาคเอาส์พุต
 pinMode(inA1 , OUTPUT);//มอเตอร์เป็นภาคเอาส์พุต
 pinMode(PWA , OUTPUT);//มอเตอร์เป็นภาคเอาส์พุต
 pinMode(inB1 , OUTPUT);//มอเตอร์เป็นภาคเอาส์พุต
 pinMode(PWB , OUTPUT);//มอเตอร์เป็นภาคเอาส์พุต
}
void loop() 
{
sensorValue0 = analogRead(analogInPin0);//สวิตช์อ่านค่าอินพุต
sensorValue1 = analogRead(analogInPin1);//เซ็นเซอร์อ่านค่าอินพุต
sensorValue2 = analogRead(analogInPin2);//เซ็นเซอร์อ่านค่าอินพุต
sensorValue3 = analogRead(analogInPin3);//เซ็นเซอร์อ่านค่าอินพุต
sensorValue4 = analogRead(analogInPin4);//เซ็นเซอร์อ่านค่าอินพุต
sensorValue5 = analogRead(analogInPin5);//เซ็นเซอร์อ่านค่าอินพุต
if(sensorValue0<=500&&Step==0)//ถ้ากดปุ่มและสเตปเท่ากับ0
{
digitalWrite(BZ ,HIGH);//บัสเซอร์ดัง
delay(1000);
digitalWrite(BZ , LOW); //บัสเซอร์ดับ
KEEP();    ////มือคีบทำงาน
digitalWrite(BZ ,HIGH);//บัสเซอร์ดัง
delay(1000);
digitalWrite(BZ , LOW); //บัสเซอร์ดับ
delay(1000);
Robot_GO1(); //เดินออกตัว
Step++;//นับ1
}
 
else if(Step==1)//ถ้าเริ่มนับ 1
{
 LINE(); //ให้เดินตามเส้น
}
else if(Step==2)//ถ้านับ2
{
LINE(); //ให้เดินตามเส้น
}
else if(Step==3)//ถ้านับ3
{
LINE(); //ให้เดินตามเส้น
}
else if(Step==4)//ถ้านับ4
{
LL90();//ให้หมุนขวา90 องศา
}
else if(Step==5)//ถ้านับ4
{
LINE(); //ให้เดินตามเส้น
}
else if(Step==6)//ถ้านับ4
{
LINE(); //ให้เดินตามเส้น
} 
else if(Step==7)//ถ้านับ4
{
LINE(); //ให้เดินตามเส้น
} 
else if(Step==8)//ถ้านับ4
{
LINE(); //ให้เดินตามเส้น
} 
 
 
else  //นอกนั้นหยุด
{
  Robot_STOP();//หยุด
digitalWrite(BZ , LOW);  //บัสเซอร์ดับ
}
}//loop   //ปีกกาลูป
////////////////////////
void Robot_GO() ///เดินหน้า
{
   digitalWrite(inA1 , LOW);
   digitalWrite(PWA ,HIGH);///0-255
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);
   digitalWrite(PWB ,HIGH); //0-255
}
void Robot_BACK()//ถอยหลัง
{
   digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///0-255
  /////////////////////////////////////
   digitalWrite(inB1 , HIGH);
   digitalWrite(PWB ,HIGH); //0-255
}
void Robot_RIGH()
{
   digitalWrite(inA1 , LOW);
   digitalWrite(PWA ,HIGH);///0-255
  /////////////////////////////////////
   digitalWrite(inB1 , HIGH);
   digitalWrite(PWB ,HIGH); //0-255
}
void Robot_LEFT()
{
   digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///0-255
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);
   digitalWrite(PWB ,HIGH); //0-255
}
void Robot_STOP()
{
 digitalWrite(inA1 , LOW);
 digitalWrite(PWA ,0);///0-255
  /////////////////////////////////////
 digitalWrite(inB1 , LOW);
 digitalWrite(PWB ,0); //0-255
  delay(10);
}
void LL90()//หมุนซ้าย90
{
   digitalWrite(inA1 , HIGH);
   digitalWrite(PWA ,HIGH);///0-255
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);
   digitalWrite(PWB ,HIGH); //0-255
    delay(500);
   Step++;
}
 
void RR90()//หมุนขวา90
{
   digitalWrite(inA1 , LOW);
   digitalWrite(PWA ,HIGH);///0-255
  /////////////////////////////////////
   digitalWrite(inB1 , HIGH);
   digitalWrite(PWB ,HIGH); //0-255
   delay(500);
   Step++;
}
void Robot_GO1()//เดินออกตัว
{
   digitalWrite(inA1 , LOW);
   digitalWrite(PWA ,HIGH);///0-255
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);
   digitalWrite(PWB ,HIGH); //0-255
delay(500);
digitalWrite(BZ ,HIGH);
delay(100);
digitalWrite(BZ , LOW);  
   digitalWrite(inA1 , LOW);
   digitalWrite(PWA ,0);///0-255
  /////////////////////////////////////
   digitalWrite(inB1 , LOW);
   digitalWrite(PWB ,0); //0-255
Step++;//นับ
}
void LINE()//เดินตามเส้น
{
 if(sensorValue2<500&&sensorValue3<500&&sensorValue4<500)//เจอเส้นตัด
 {
digitalWrite(BZ ,HIGH);  
  Robot_GO();  
  delay(500);
  Robot_STOP();
digitalWrite(BZ ,HIGH);
delay(100);
digitalWrite(BZ , LOW);  
  Step++;//นับ
  } 
else if(sensorValue1<500||sensorValue2<500)//ซ้าย
{
Robot_LEFT();
}
else if(sensorValue5<500||sensorValue4<500)//ขวา
{
Robot_RIGH(); 
}
else
{
Robot_GO();  
}
}
void UKEEP()//ไม่คีบUKEEP()
{
 for (pos1 = 90; pos1 <= 140; pos1 += 1)  
 {
 myservo1.write(pos1);
  delay(15);
}
}
 void WANG()//วาง
{
 for (pos2 = 90; pos2 <= 140; pos2 += 1)  
 {
 myservo2.write(pos2);
  delay(15);
}
}
void KEEP()//่คีบ
{
  for (pos1 = 140; pos1 >= 90; pos1 -= 1)  
 {
 myservo1.write(pos1);
  delay(15);
  Step++;
}
}
void YOG()//ยก
{
  for (pos2 = 170; pos2 >= 10; pos2 -= 1)  
 {
 myservo2.write(pos2);
  delay(15);
}
   Step++;  
}
 
 
-----------------------------------------------------------------------------------------------------------
5 ตัวอย่างโค๊ด บาสเกตบอล
#include <Servo.h>
#include <SoftwareSerial.h> 
Servo myservo;
SoftwareSerial mySerial(A1,A2); 
String readString;
const int Pin_A =  4;
const int Pin_B =  5;
const int Pin_C =  6;
const int Pin_D =  7;
const int Pin_E =  8;
const int Pin_F =  9;
const int Pin_G =  10;
const int Pin_H =  11;
int pos=90;
char unChar;
void setup() 
{
  myservo.attach(9);
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);
delay(100);
//digitalWrite(Pin_A, HIGH);
//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);
//delay(1000);
  Serial.begin(57600);
  while (!Serial)
  {
  }
  Serial.println("Goodnight moon!");
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}
void loop() 
{ 
  if (mySerial.available()) 
  {
    unChar = mySerial.read();
    Serial.println(unChar);
 
 
  if(unChar=='A')///////
    {
digitalWrite(Pin_A, HIGH);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, HIGH);
digitalWrite(Pin_D, LOW); 
delay(20);
     }
  if(unChar=='B')
    {
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, HIGH);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, HIGH);
delay(20);
     }
  
  if(unChar=='D')
    {
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, HIGH);
digitalWrite(Pin_C, HIGH);
digitalWrite(Pin_D, LOW); 
delay(20);
     }
  if(unChar=='C')
    {
digitalWrite(Pin_A, HIGH);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, HIGH); 
delay(20);
     }
  if(unChar=='F'&&pos<=180)///
    {
    pos=pos+10;  
    myservo.write(pos); 
    delay(20);
    }
    
    if(unChar=='E'&&pos>=0)///ซ้าย
    {
    pos=pos-10;  
    myservo.write(pos); 
    delay(20);
    }   
  if(unChar=='N')
    {
 myservo.write(150);   
    }
    
    if(unChar=='M')///ขวา
    {
myservo.write(30); 
    }   
    
    if(unChar=='I')//สามเหลี่ยม
    {
    }  
     
    if(unChar=='J')//กากบาท
        
    {
    }   
    
     if(unChar=='K')//สี่เหลี่ยม
    {
    }  
       if(unChar=='L')//วงกลม
    {
    }  
/////////////////////////////////////////////////////////////////
  }
//////////////////////////////////////////  
else
{
digitalWrite(Pin_A, LOW);
digitalWrite(Pin_B, LOW);
digitalWrite(Pin_C, LOW);
digitalWrite(Pin_D, LOW); 
}
}
 
---------------------------------------------------------------------------------------------
 
#include <PS2X_lib.h>                  // เรียกใช้งานไลบรารีสำหรับจอยสติ๊ก PS2
#include <Servo.h>
Servo myservoA; 
 
int MA=8;
int MB=9;
int MC=10;
int MD=11;
int lelay=2;
 
#define PS2_DAT   7                   // 
#define PS2_CMD   6                  // 
#define PS2_CLK   4 
#define PS2_SEL   5                  //
PS2X ps2x;                             // ประกาศตัวแปรสำหรับจอยสติ๊ก PS2 
 
/////////////////////////////////////////////
 
int posA=20 ;
 
 
void setup()
{
  pinMode(MA, OUTPUT);
  pinMode(MB, OUTPUT);
  pinMode(MC, OUTPUT);
  pinMode(MD, OUTPUT);
  pinMode(lelay, OUTPUT);  
  digitalWrite(MA, LOW);
  digitalWrite(MB, LOW);
  digitalWrite(MC, LOW);
  digitalWrite(MD, LOW);
  digitalWrite(lelay, LOW);  
 
 
  delay(1000);                      
  Serial.begin(9600);  
  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(1000);                     // หน่วงเวลา 1 วินาที
      break;                           // ออกจาก while(true)
    } 
    delay(500);                        // หน่วงเวลา 500 มิลลิวินาทีเพื่อรอการเชื่อมต่อครั้งต่อไปในกรณีที่เชื่อมต่อไม่สำเร็จ
  }
}
 
void loop()
{
  ps2x.read_gamepad(false, false);     // อ่านข้อมูลจาก PS2 Controller  
  if(ps2x.Button(PSB_CIRCLE))          // ถ้าปุ่มวงกลมถูกกด
    {
   
    }
 
  else if(ps2x.Button(PSB_CROSS))      // ถ้าปุ่มกากบาทถูกกด
   {
 
digitalWrite(lelay, HIGH);  
    delay(100);
digitalWrite(lelay, LOW);     
 
   }
  
  
  else if(ps2x.Button(PSB_SQUARE))     // ถ้าปุ่มสี่เหลี่ยมถูกกด
    {
      
 
     
   }
 
 
 
  
  else if(ps2x.Button(PSB_TRIANGLE))   // ถ้าปุ่มสามเหลี่ยมถูกกด
    {
      
    }
 
 
    
    
  else if(ps2x.Button(PSB_L1))         // ถ้าปุ่ม L1 ถูกกด
   {
 
   }
 
 
   
  else if(ps2x.Button(PSB_L2))         // ถ้าปุ่ม L2 ถูกกด
    
    {
 
    }
 
 
    
  
  else if(ps2x.Button(PSB_R1))         // ถ้าปุ่ม R1 ถูกกด
    {
   
    }
 
    
    
  else if(ps2x.Button(PSB_R2))         // ถ้าปุ่ม R2 ถูกกด
    {
   
    }
 
    
 
  else if(ps2x.Button(PSB_START))      // ถ้าปุ่ม Start ถูกกด
    {
      Serial.println("Start");           // แสดงข้อความว่า Start 
    }
  else if(ps2x.Button(PSB_SELECT))     // ถ้าปุ่ม Select ถูกกด
    {
      Serial.println("Select");          // แสดงข้อความว่า Select 
    }
  else if(ps2x.Button(PSB_PAD_UP))     // ถ้าปุ่ม Up ถูกกด
    {
  digitalWrite(MA, LOW);
  digitalWrite(MB, HIGH);
  digitalWrite(MC, LOW);
  digitalWrite(MD, HIGH);
   delay(10);
    }
  else if(ps2x.Button(PSB_PAD_DOWN))   // ถ้าปุ่ม Down ถูกกด
    {
  digitalWrite(MA, HIGH);
  digitalWrite(MB, LOW);
  digitalWrite(MC, HIGH);
  digitalWrite(MD, LOW);
   delay(10);
    }
  else if(ps2x.Button(PSB_PAD_LEFT))   // ถ้าปุ่ม Left ถูกกด
    {
  digitalWrite(MA, HIGH);
  digitalWrite(MB, LOW);
  digitalWrite(MC, LOW);
  digitalWrite(MD, HIGH);
   delay(10);
    }
  else if(ps2x.Button(PSB_PAD_RIGHT))  // ถ้าปุ่ม Right ถูกกด
    
   {
  digitalWrite(MA, LOW);
  digitalWrite(MB, HIGH);
  digitalWrite(MC, HIGH);
  digitalWrite(MD, LOW);
   delay(10);
   }
   else
   {
  digitalWrite(MA, LOW);
  digitalWrite(MB, LOW);
  digitalWrite(MC, LOW);
  digitalWrite(MD, LOW);
     delay(10);
  }
 
 delay(10);