Title: stepping motor Post by: mold2003226 on March 03, 2010, 08:09:42 AM ผมจะเพิ่ม Sensor เข้าไปนะครับ เมื่อ Sensor on จะส่ง logic 0 ออกมาเข้า พอร์ต b6และ b7
ถ้า พอร์ต b6 เป็น 0 Stepping motor (left) จะStop ตอนนี้ sensor จะออนค้างอยู่ทำให้ พอร์ต b6 เป็น 0 ตลอด แล้วถ้า กดปุ่ม right ให้ Stepping motor มันวิ่งออกจาก sensor จะต้องเพิ่มส่วนไหนครับ ถ้า พอร์ต b7 เป็น 0 Stepping motor (right) จะStop ตอนนี้ sensor จะออนค้างอยู่ทำให้ พอร์ต b7 เป็น 0 ตลอด แล้วถ้า กดปุ่ม left ให้ Stepping motor มันวิ่งออกจาก sensor จะต้องเพิ่มส่วนไหนครับ ขอบคุณครับ #include <16F877.h> #fuses HS,NOWDT,NOPUT,NOPROTECT #use delay (clock=4000000) void main() { int step[8]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; signed int ,SL,SR,stop,left,right,stop1,left1,right1,index=0,direct=0,index1=0,direct1=0; while(TRUE) { stop = input(pin_B0); left = input(pin_B1); right = input(pin_B2); stop1 = input(pin_B3); left1 = input(pin_B4); right1 = input(pin_B5); SL = input(pin_B6); \\Sensor 1 SR = input(pin_B7); \\Sensor 2 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Stepping ตัวที่1 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ if(stop==0) direct = 0; if(left==0) direct = 1; if(right==0) direct = 2; if(direct==0) index=index; if(direct==1) index=index+1; if(direct==2) index=index-1; if(index>7) index=0; if(index<0) index=7; output_c(step[index]); delay_ms(5); \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Stepping ตัวที่2 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ if(stop1==0) direct1 = 0; if(left1==0) direct1 = 1; if(right1==0) direct1 = 2; if(direct1==0) index1=index1; if(direct1==1) index1=index1+1; if(direct1==2) index1=index1-1; if(index1>7) index1=0; if(index1<0) index1=7; output_d(step[index1]); delay_ms(5); } } Title: Re: stepping motor Post by: s_engine on March 03, 2010, 02:36:56 PM ตอนนี้มันคงจะเดินหน้าถอยหลังได้แล้ว สินะ ครับ
ความหมายที่ถามคือ จะมี เซนเซอร์ ติดด้าน ซ้าย กับ ขวา เมื่อ เซนเซอร์ซ้าย จับได้ ก็ให้มอเตอร์ซ้ายหยุด เมื่อ เซนเซอร์ขวา จับได้ ก็ให้มอเตอร์ขวาหยุด แล้วถ้า กดปุ่ม right ให้ Stepping motor มันวิ่งออกจาก sensor จะต้องเพิ่มส่วนไหนครับ if(SL==0&&RIGHT==0){ ....; // อยากให้มันวิ่งไปทางไหนก็ป้อนไปตรงนี้เลย } |