Skip to content

Instantly share code, notes, and snippets.

@fxprime
Created June 12, 2019 11:55
Show Gist options
  • Select an option

  • Save fxprime/0909233855aaeb8105750b64a4ecedc3 to your computer and use it in GitHub Desktop.

Select an option

Save fxprime/0909233855aaeb8105750b64a4ecedc3 to your computer and use it in GitHub Desktop.
/*
www.arduinona.com
ตัวอย่างการสั่ง servo ให้หมุนตามค่าที่พิมพ์ลงใน Serial monitor
โดยต่อ Servo เข้ากับ arduino board ดังนี้
Servo -> Arduino (Uno)
แดง -> Vcc
ดำ -> Gnd
ขาว -> A0 ซึ่งตรงกับ pin number 14 ที่ใช้ในตัวอย่าง อ้างอิงจาก
https://i2.wp.com/marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.png
วิธีทดสอบ
upload และเปิด Serial monitor
ปรับ baudrate ให้ตรงกับ 9600
หลังจากเห็นคำว่า Ready ให้พิมพ์
พิมพ์ 700s เพื่อขยับ servo ไปมุมนึง
พิมพ์ 2000s เพื่อขยับ servo ไปอีกมุมนึง
พิมพ์ d เพื่อหยุดการเชื่อมต่อ servo (ลองหมุนเซอโวจะพบว่าไม่มีแรงต้าน)
พิมพ์ a เพื่อเชื่อมต่ออีกครั้ง
*/
#include <Servo.h>
//กำหนดค่าเป็น Global scope (นอก setup และ loop) เท่านั้น
Servo servo1;
void setup() {
pinMode(14,OUTPUT);
servo1.attach(14); //analog pin 0
//servo1.setMaximumPulse(2000); //ลบ //ออกเพื่อกำหนดช่วงมุมการหมุน
//servo1.setMinimumPulse(700);
Serial.begin(9600);
Serial.println("Ready");
}
void loop() {
static int v = 0;
if ( Serial.available()) { //ถ้ามีข้อมูลที่ป้อนจากผู้ใช้ผ่าน Serial monitor
char ch = Serial.read(); //อ่านค่าเก็บไว้ที่ตัวแปร ch
switch(ch) {
case '0'...'9':
v = v * 10 + ch - '0'; //Note: ค่า ch-'0' คือการเปลี่ยน char เป็น int อย่างง่าย
break;
case 's':
servo1.write(v); //ส่งค่าไปยัง Servo ด้วยค่า v
v = 0;
break;
case 'd':
servo1.detach(); //ถอด servo ออกจากpin(ทำให้servoไม่มีแรง)
break;
case 'a':
servo1.attach(14); //เชื่อมต่อกับ servo อีกครั้ง
break;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment