ค่ายอบรมหุ่นยนต์ การทำภาระกิจพิชิตอวกาศ
//////////////////////////////////////////////////////////////////////////////////////////////////////
ค่ายอบรมหุ่นยนต์ การทำภาระกิจพิชิตอวกาศ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);