วันอังคารที่ 30 มิถุนายน พ.ศ. 2558

วันที่ 31 ของการฝึกงานที่ FIBO

วันนี้ทำโปรแกรมอ่านค่าเซ็นเซอร์วัดอุณหภูมิครับซึงผมที่ได้ทำโปรแกรมสามตัวครับโดยจะเอามาคำนวณหาค่าโดยใช้ฟังก์ชั้นทางคณิตศาสตร์ในการคำนวณครับ
   const int analogInPin = A0;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
float Temperature = 0;
float Ta = 0;
float Tb = 0;
float Tc = 0;
float Td = 0;
const long table [72][2] =
{
 {-55,10723236},{-50,7366689},{-44,5132757},{-40,3624165},{-35,2591304},
 {-30,1874913},{-25,1371886},{-20,1014545},{-15,757881},{-10,571590},
 {-5,435026},{0,333964},{5,258497},{10,201659},{15,158499},{20,125468},
 {25,100000},{30,80223},{35,64759},{40,52589},{45,42951},{50,35272},
 {55,29119},{60,24161},{65,20144},{70,16874},{75,14198},{80,11998},
 {85,10181},{90,8674},{95,7419},{100,6369},{105,5487},{110,4744},
 {115,4115},{120,3581},{125,3126},{130,2737},{135,2404},{140,2117},
 {145,1869},{150,1655},{155,1469},{160,1307},{165,1166},{170,1043},
 {175,934},{180,839},{185,755},{190,681},{195,615},{200,557},{205,505},
 {210,459},{215,418},{220,382},{225,349},{230,319},{235,292},{240,269},
 {245,247},{250,227},{255,210},{260,194},{265,179},{270,166},{275,154},
 {280,143},{285,133},{290,124},{295,115},{300,107}};
 void setup()
 {
   pinMode(A0,INPUT);
   Serial.begin(9600);
 }
 void loop()
 {
   sensorValue = analogRead(analogInPin);
   Serial.print("sensor = " );
   Serial.print(sensorValue);
   //RValue = ((50/(5-((sensorValue*5)/1024)))-10);
   RValue = (sensorValue*5.0000)/1024.0000;
   Serial.print(" \t R = " );
   Serial.print(RValue);
   Rsensor = ((50/(5 - RValue))-10)*1000;
   Serial.print("  Rsensor = " );
   Serial.println(Rsensor);
   for(int i =0 ; i<72 ; i++)
   {
     if(Rsensor>table[i][1])
     {
        Serial.print(table[i][1]); //R_MAX
       Serial.print(',');
       Serial.print(table[i][0]); //T_MAX
       Serial.print(',');
       Serial.print(table[i-1][1]); //R_MIN
       Serial.print(',');
       Serial.println(table[i-1][0]); //T_MIN
        Ta  = ((table[i-1][1])-Rsensor);
       Serial.print(" Ta = " );
       Serial.print(Ta);
       Tb = Ta/((table[i-1][1])-(table[i][1]));
       Serial.print(" Tb = " );
       Serial.print(Tb);
       Tc = Tb*5;
       Serial.print(" Tc = " );
       Serial.print(Tc);
       Temperature = (table[i][0])-Tc;
       Serial.print(" Temperature = " );
       Serial.println(Temperature);
       break;
     
     }
   
   }
   delay(5000);
 
 }
 
   ส่วนโปรแกรมที่เส็ดใช้ได้แล้วนะครับจะเป็นโปรแกรมนี้ครับ
const int analogInPin = A0;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
float Temperature = 0;
float Ta = 0;
float Tb = 0;
float Tc = 0;
float Td = 0;
const long table [72][2] =
{
 {-55,10723236},{-50,7366689},{-44,5132757},{-40,3624165},{-35,2591304},
 {-30,1874913},{-25,1371886},{-20,1014545},{-15,757881},{-10,571590},
 {-5,435026},{0,333964},{5,258497},{10,201659},{15,158499},{20,125468},
 {25,100000},{30,80223},{35,64759},{40,52589},{45,42951},{50,35272},
 {55,29119},{60,24161},{65,20144},{70,16874},{75,14198},{80,11998},
 {85,10181},{90,8674},{95,7419},{100,6369},{105,5487},{110,4744},
 {115,4115},{120,3581},{125,3126},{130,2737},{135,2404},{140,2117},
 {145,1869},{150,1655},{155,1469},{160,1307},{165,1166},{170,1043},
 {175,934},{180,839},{185,755},{190,681},{195,615},{200,557},{205,505},
 {210,459},{215,418},{220,382},{225,349},{230,319},{235,292},{240,269},
 {245,247},{250,227},{255,210},{260,194},{265,179},{270,166},{275,154},
 {280,143},{285,133},{290,124},{295,115},{300,107}};
 void setup()
 {
   pinMode(A0,INPUT);
   Serial.begin(9600);
 }
 void loop()
 {
   sensorValue = analogRead(analogInPin);
   RValue = (sensorValue*5.0000)/1024.0000;
   Rsensor = ((50/(5 - RValue))-10)*1000;
     for(int i =0 ; i<72 ; i++)
   {
     if(Rsensor>table[i][1])
     {
       Ta  = ((table[i-1][1])-Rsensor);
       Tb = Ta/((table[i-1][1])-(table[i][1]));
       Tc = Tb*5;
       Temperature = (table[i][0])-Tc;
       Serial.print(" Temperature = " );
       Serial.println(Temperature);
       break;
     }
   }
   delay(5000);
 }
 
 

วันจันทร์ที่ 29 มิถุนายน พ.ศ. 2558

วันที่ 30 ของการฝึกงานที่ FIBO

วันนี้ตอนเช้าอาจารได้มีการปนะชุมเล็กๆของห้องช็อปได้มีการพูดคุยกันเรื่องการคืบหน้าของงานในแต่ละคนว่าไปถึงไหนกันแล้วครับคุยกันว่าอาจารย์ทำอะไรอยู่ว่านักศึกษาทำไรกันอยู่ครับซึ่งผมก็ยังไม่เคยเข้าประชุมมาก่อนนี้เป็นการเข้าประชุมครั่งแรกก้รู้ศึกดีมากครับได้รู้ว่าแต่ละคนกำลังทำอะไรกันบ้างครับ
       ตอนบ่ายผมได้ทำโปรแกรมวัดค่าอุณหภูมิโดยการอ่านค่าความต้านทานจากเช็นเชอร์โดนมีตารางเทียค่าจากดาต้าชีทสามารถโหลดได้ที่นี้ครับ
www.farnell.com/datasheets/102485.pdf
      สวนผมของโปรแกรมครับจะได้แบบนี้ครับ
ส่วนของโปรแกรมครับจะเป็นแบบนี้ครับ

const int analogInPin = A0;

int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
const long temperature [72][2] =
{
 {-55,10723236},{-50,7366689},{-44,5132757},{-40,3624165},{-35,2591304},
 {-30,1874913},{-25,1371886},{-20,1014545},{-15,757881},{-10,571590},
 {-5,435026},{0,333964},{5,258497},{10,201659},{15,158499},{20,125468},
 {25,100000},{30,80223},{35,64759},{40,52589},{45,42951},{50,35272},
 {55,29119},{60,24161},{65,20144},{70,16874},{75,14198},{80,11998},
 {85,10181},{90,8674},{95,7419},{100,6369},{105,5487},{110,4744},
 {115,4115},{120,3581},{125,3126},{130,2737},{135,2404},{140,2117},
 {145,1869},{150,1655},{155,1469},{160,1307},{165,1166},{170,1043},
 {175,934},{180,839},{185,755},{190,681},{195,615},{200,557},{205,505},
 {210,459},{215,418},{220,382},{225,349},{230,319},{235,292},{240,269},
 {245,247},{250,227},{255,210},{260,194},{265,179},{270,166},{275,154},
 {280,143},{285,133},{290,124},{295,115},{300,107}};
 void setup()
 {
   pinMode(A0,INPUT);
   Serial.begin(9600);
 }
 void loop() 
 {
   sensorValue = analogRead(analogInPin);
   Serial.print("sensor = " );
   Serial.print(sensorValue);
   //RValue = ((50/(5-((sensorValue*5)/1024)))-10);
   RValue = (sensorValue*5.0000)/1024.0000;
   Serial.print(" \t R = " );
   Serial.print(RValue);
   Rsensor = ((50/(5 - RValue))-10)*1000;
   Serial.print("  Rsensor = " );
   Serial.println(Rsensor);
   for(int i =0 ; i<72 ; i++)
   {
     if(Rsensor>temperature[i][1])
     {
       Serial.print(temperature[i][1]); //R_MAX
       Serial.print(',');
       Serial.print(temperature[i][0]); //T_MAX
       Serial.print(',');
       Serial.print(temperature[i-1][1]); //R_MIN
       Serial.print(',');
       Serial.println(temperature[i-1][0]); //T_MIN
       break;
     }
   }
   delay(1000);
   
 }
   
   

วันอาทิตย์ที่ 28 มิถุนายน พ.ศ. 2558

วันที่ 29 ของการฝึกงานที่ FIBO

ผมได้ทำโปรแกรมวัดอุณหภูมิของเช็นเชอร์
เทียบกับเซ็นเชอร์
ซึ่งผผลออกมาอุณหภูมิมันไม่ตรงกันครับปัญหาคือ ตัว LM35 มันเป็น linear แต่ เช็นเชอร์ที่จะมาวัดจริงๆๆมันเป็น Not linear ค่าที่วัดได้จึงไม่เท่ากันครับ

เทียวกับเช็นเชอร์ที่จะให้จะได้แบบนี้ครับ


 

วันพฤหัสบดีที่ 25 มิถุนายน พ.ศ. 2558

วันที่ 28 ของการฝึกงานที่ FIBO ครับ

วันนี้ออกแบบตัวจับหัวฉีดพลาสติกครับในการออกแบบคือจะติดพัดลมระบายความร้อนให่กับหัวฉีดพลาสติกครับแบบที่ผมได้จะเป็นหน้าตาแบบนี้ครับ
วันนี้ผมศึกษาด้วยตัวเองครับมันก็เล่นไม่อยากครับแต่ต้องใช้งานโปรแกรมบ่อยๆถึงจะเกิดความชำนาญและได้งานมาคือเขียนโปรแกรมอ่านค่าอุณหภูมิจากหัวฉีดพลาสติก และไปแสดงผลที่หน้าจอ LCD ครับ
ส่วนต้ววัดอุณหภูมิจะเป็นแบบนี้ครับ

วันพุธที่ 24 มิถุนายน พ.ศ. 2558

วันที่ 27 ของการฝึกงานที่ FIBO

ผมได้มีโอกาสที่ได้รองศึกษา 3d printer delta ซึ่งเพื่อนผมจะใช้งานผมก็สนใจเป็นอย่างมาในการที่จะทำความเข้าใจในการใช้งาน และศึกษาหัวฮีดพลาสติก ว่าจะนำมาใช้งานกับเครือง 3d printer ของพี่ปูครับ ตามที่ผมดูมันจะต้องมีพัดลมระบายความร้อนให้กับหัวฉีดพลาสติก ครับ


ส่วนของพี่ปูจะเป็นแบบนี้ครับ
ส่วนหัวเฉีดพลาสติดที่แยกออกจะมีส่วนประกอบเป็นแบบนี้ครับ
และทำการทดรองปริ้นชิ้นงานครับ

วันอังคารที่ 23 มิถุนายน พ.ศ. 2558

วันที่ 26 ของการฝึกงานที่ FIBO

ผมศึกษาวิธีใช้งานของเซ็นเซอร์วัดความร้อน
เพื่อที่จะนำมาใช้กับปริ้นเตอร์ 3D ของพี่ปู ครับ
ผมได้เขียนโปรแกรมทดรองครับแต่ใช้ LM 35 แทนครับพอเซ็นเชอร์รับค่าความร้อนถึงจุดที่กำหนดให้ LED ติดครับ 
ส่วนของโปรแกรมครับ


const int analogInPin = A4; 

int LED = 8;
int sensorValue = 0;       
float voltageValue = 0;       
float temperatureValue = 0;
void setup() 
{
  pinMode(LED,OUTPUT);
  
  Serial.begin(9600);
}

void loop() {
  
  sensorValue = analogRead(analogInPin);
  voltageValue = (sensorValue*5.0000)/1024.0000;
  temperatureValue = voltageValue*100;
   Serial.print("sensor = " );
  Serial.print(sensorValue);
  Serial.print("\t voltage = ");
  Serial.print(voltageValue);
  Serial.print(" V\t temperature = ");
  Serial.print(temperatureValue);
  Serial.println(" C");

  delay(1000);
  if (temperatureValue >= 25)
{
  digitalWrite(LED,HIGH);
}
  else{
  digitalWrite(LED,LOW);
  }
}

วันจันทร์ที่ 22 มิถุนายน พ.ศ. 2558

วันที่ 25 ของการฝึกงานที่ FIBO

วันนี้พี่ปูได้ให้งานมาคือคอนโทรลสเต็ปมอเตอร์ป้อนเส้นพราสติกให้กับหัว 3d printer ผมจึงไปศึกษา shield  
และให้ศึกษาวิธีการใช้งานกับ arduino mega 2560 ผมจึงได้อ่านศึกษาครับ


มีวิธีการใช้งานกับ arduino mega 2560 ว่าใช้ Pin ไหนใช้กับสเต็ปมอเตอร์ตัวไหน
ผมจึงได้เขียนโปรแกรมขึ้นมาประมาณนี้ครับการทำงานด้วยความเร็วกี้รอบต่อนาทีมันถึงจะพอดีกับหัวฉีดพราสติกมีโปรแกรมประมาณนี้ครับ


#define EN 24

#define X_DIR 28
#define X_STP 26
void step (boolean dir, byte dirPin, byte stepperPin, int steps, int RPM) 
    digitalWrite (dirPin, dir); 
     for (int i = 0; i <steps; i++)
   { 
   digitalWrite (stepperPin, HIGH); 
   delayMicroseconds (150000/RPM); 
   digitalWrite (stepperPin, LOW); 
   delayMicroseconds (150000/RPM); 
   } 
void setup () 
{
   pinMode (X_DIR, OUTPUT); 
   pinMode (X_STP, OUTPUT); 
   pinMode (EN, OUTPUT); 
   digitalWrite (EN, LOW); 
void loop ()
 
  
    step (LOW, X_DIR, X_STP, 200, 200 );

}

และมีการทดรองโปรแกรมว่าถ้าหัวฉีดพราสติกร้อนได้ที่แล้วให้มีการทำงานคือมีการป้อนเส้นพราสติกแต่จำรองการทำงานให้ LED ติดแทนครับคือมีการรับค่าจารตัวอ่านค่าความร้อนมาผมจำรองให้หัวรับความร้อนเป็น  25 ํC LED ติดถ้าต้ำกว่า 25 ํC LED จะตับ ครับ

const int analogInPin = A4; 
int LED = 8;
int sensorValue = 0;       
float voltageValue = 0;       
float temperatureValue = 0;
void setup() 
{
  pinMode(LED,OUTPUT);
  Serial.begin(9600);
}

void loop() {
    sensorValue = analogRead(analogInPin);
  voltageValue = (sensorValue*5.0000)/1024.0000;
  temperatureValue = voltageValue*100;
   Serial.print("sensor = " );
  Serial.print(sensorValue);
  Serial.print("\t voltage = ");
  Serial.print(voltageValue);
  Serial.print(" V\t temperature = ");
  Serial.print(temperatureValue);
  Serial.println(" C");

  delay(1000);
  if (temperatureValue >= 25)
{
  digitalWrite(LED,HIGH);
}
  else{
  digitalWrite(LED,LOW);
  }
}

วันอาทิตย์ที่ 21 มิถุนายน พ.ศ. 2558

วันที่ 24 ของการฝึกงานที่ FIBO

1.ทำสเต็ปมอเตอร์ให้หมุนเร็วหมุนช้าใด้ตามใจชอบครับจากโปรแกรมเดิม
 #define EN 8
#define X_DIR 5
#define X_STP 2
void step (boolean dir, byte dirPin, byte stepperPin, int steps) 
    digitalWrite (dirPin, dir); 
    delay (50); 
    for (int i = 0; i <steps; i++)
   { 
   digitalWrite (stepperPin, HIGH); 
   delayMicroseconds (1000); 
   digitalWrite (stepperPin, LOW); 
   delayMicroseconds (1000); 
   } 
void setup () 
{
   pinMode (X_DIR, OUTPUT); 
   pinMode (X_STP, OUTPUT); 
   pinMode (EN, OUTPUT); 
   digitalWrite (EN, LOW); 
void loop ()
   step (false, X_DIR, X_STP, 200);  
   delay (1000); 
}
จะเห็นว่ามีการใช้ delayMicroseconds (1000);
มี 2 delay ในการหมุนหนึ่งสเต็บ ถ้าต้องการให้หมุนหนึ่งรองเราต้องใช้ 200 สเต็ปจึงจะได้หนึ่งรอบถ้าต้งการใจะคำนวณหาความเร็วรอบของสเต็ปมมอเตอร์
 เราต้องนำค่า delay มาจะได้ 0.002 s/stp ,200 สเต็ป,เวลา 1 นาธี = 60 s
จะได้ 0.002*200 = 0.4 s/rev
 ดังนั้น 60/0.4 = 150 rev/s
ผมจึงทำงานซุ่มหาค่าที่เร็วที่สุด คือ 300 rev/s และความเร็วต่ำสุดคือ 100 rev/s
ฉนั้น เราจึงนำค่าความเร็ว สูงสุด มาคูณกับค่า delay จะได้ 300*500 = 150000
แล้วนำค่า 150000 มาหารด้วยค่า RPM จะได้ delay เป็น delayMicroseconds (150000/RPM);
โปรแกรมที่เส็ดแล้วคือ
#define EN 8
#define X_DIR 5
#define X_STP 2
void step (boolean dir, byte dirPin, byte stepperPin, int steps, int RPM)
{
    digitalWrite (dirPin, dir);
     for (int i = 0; i <steps; i++)
   {
   digitalWrite (stepperPin, HIGH);
   delayMicroseconds (150000/RPM);
   digitalWrite (stepperPin, LOW);
   delayMicroseconds (150000/RPM);
   }
}
void setup ()
{
   pinMode (X_DIR, OUTPUT);
   pinMode (X_STP, OUTPUT);
   pinMode (EN, OUTPUT);
   digitalWrite (EN, LOW);
}
void loop ()
{
  for (int RPM = 100; RPM <=300; RPM++) //หมุนากค่าต่ำสุดคือ 100 รอบ/นาที
  {
    step (false, X_DIR, X_STP, 10, RPM);
  }
 for (int RPM = 300; RPM >=100; RPM--) //หมุนากค่าต่ำสุดคือ 300 รอบ/นาที
  {
    step (false, X_DIR, X_STP, 10, RPM);
  }  
}

วันพฤหัสบดีที่ 18 มิถุนายน พ.ศ. 2558

วันที่ 23 ของการฝึกงานที่ FIBO

1. พี่ปูได้ให้งานมาทำครับคือให้ทำสเต็ปมอเตอร์ให้คอนโทรลความเร็วของสเต็ปมอเตอร์ให้มีความเร็วช้าเร็วได้ผมจรึงได้อ่านเพื่อนำความรู้มาทำครับผมได้อ่านหนังสือ
และได้ดู VDO อธิบายการใช้ สเต็ปมอเตอร์ครับ
 https://www.youtube.com/watch?v=uBZjTzukUXY
 https://www.youtube.com/watch?v=bltMgWkM6YU
และตอนบ่ายอาจารย์สยาม เจริญเสียง พาไปเที่ยวงาน คอมมาร์ทครับในงานมีของมากมายครับมีแต่ของใหม่ที่ยังไม่เคยเห็นขายที่ไหนเลยครับสุดท้ายอาจารย์ได้พาไปเลี้ยง MK ด้วยครับอาจารย์ใจดีมากเลยครับ

วันพุธที่ 17 มิถุนายน พ.ศ. 2558

วันที่ 22 ของการฝึกงานที่ FIBO

1.วันนี้ส่วนใหญ่ผมจะอ่านวิธีใช่งาน Electrical Conductivity Kit ผมจะศึกษาให้ดีก่อนใช่งานจริงครับซึงราค่ามันแพงมากครับจึงจำเป็นต้องรู้รายระเอียดให้ดีก่อนลงมือทำครับ 
ขอมูลที่ผมศึกษามาจากที่นี้ครับ   -http://www.thaieasyelec.com/products/sensors/ph-d-o-orp/electrical-conductivity-kit-detail.html
 รูปที่ทำการทดรองครับ

และมีโปรแกรมมาให้ดูด้วยครับ

  #include <SoftwareSerial.h>


  #define rxpin 2 //rx กำหนดที่ขา 2

  #define txpin 3 //tx กำหนดที่ขา 3

   SoftwareSerial myserial(rxpin, txpin); //รับและส่งข้อมูลทาง rx และ tx

   String inputstring = "";
   String sensorstring = "";
   boolean input_stringcomplete = false; //รับค่า input เป็น 0 หรือ LOW
   boolean sensor_stringcomplete = false; //กำหนดให้ค่า sensor เป็น 0 หรือ LOW


 void setup()
  {
   Serial.begin(38400); // รับหรือส่งข้อมูลด้วยความเร็ว 38400
   myserial.begin(38400); //รับหรือส่งข้อมูลไปยัง mtserial ด้วนความเร็ว 38400
   inputstring.reserve(5);
   sensorstring.reserve(30);
  }

 void serialEvent() //เป็นฟังก์ชั้นเมื่อมีการใช้ Serial.read() จะเข้ามาทำงานในฟังก์ชั้นนี้
   {
    char inchar = (char)Serial.read();
    inputstring += inchar;
   if(inchar == '\r') {input_stringcomplete = true;}
   }
 void loop()
 {
   if (input_stringcomplete)
   {
   myserial.println(inputstring);
   inputstring = "";
   input_stringcomplete = false;
   }

   while (myserial.available())
   {
        char inchar = (char)myserial.read();
        sensorstring += inchar;
    if (inchar == '\r') {sensor_stringcomplete = true;}
   }

   if (sensor_stringcomplete)
     {
     Serial.println(sensorstring);
      sensorstring = "";
      sensor_stringcomplete = false;
     }
 }

และงานของพรุ่งนี้คือการ calibrate ค่ามาตรฐานของการวัดค่าความนำกระแสไฟฟ้าครับ มีหน่วยเป็น hS ครับ


วันอังคารที่ 16 มิถุนายน พ.ศ. 2558

วันที่ 21 ของการฝึกงานที่ FIBO

1.ทำความเข้าใจกับโปรแกรมอ่านค่าจากเซ็นเซอร์ครับ
 - การต่ออุปรกรณ์ครับ

-หน้าจอแสดงผลครับ
การแสดงผมจะแสดงเป็นสีช่องคือช่องแรกจะแสดง  Conductivity
ช่องที่สองจะแสดงเป็น  
Total Dissolved Solids
ช่องที่สามจะแสดงเป็น  
Salinity
ช่องที่สี่จะแสดงเป็น 
Specific Gravity
ที่มาของข้อมูลครับ http://atlas-scientific.com/product_pages/probes/ec_k1-0.html?2. ดูวธีลง solidworks 2015 แล้วทำการติดตั้งครับผมจะออกแบบหุ่นยนต์เพื่อจะเอาไปเป็นโปรเจคของผมครับเลยลองศึกษาว่าวิธีใช้โปรแกรมทำอย่างไรบ้างเวลาที่หมดไปวันนี้คือหมดกับการดู youtube สอนออกแบบสิ่งของง่ายๆ ครับ
ลิงค์อ้างอิงครับ - https://www.youtube.com/watch?v=r7GwUUGBW5Q
                         -https://www.youtube.com/watch?v=DIJKA08nj_Q
                         -https://www.youtube.com/watch?v=xLd8Ds0mFeY


วันจันทร์ที่ 15 มิถุนายน พ.ศ. 2558

วันที่ 20 ของการฝึกงานที่ FIBO

พี่ในท์ให้ทำโปรแกรมวันค่าความนำกระแสไฟฟ้าโดยหน้าตาของเซ็นเซอร์จะเป็นประมาณนี้ครับ




 #include <SoftwareSerial.h>
  #define rxpin 2 //rx กำหนดที่ขา 2
  #define txpin 3 //tx กำหนดที่ขา 3

   SoftwareSerial myserial(rxpin, txpin); //รับและส่งข้อมูลทาง rx และ tx

   String inputstring = "";
   String sensorstring = "";
   boolean input_stringcomplete = false; //รับค่า input เป็น 0 หรือ LOW
   boolean sensor_stringcomplete = false; //กำหนดให้ค่า sensor เป็น 0 หรือ LOW


 void setup()
  {
   Serial.begin(38400); // รับหรือส่งข้อมูลด้วยความเร็ว 38400
   myserial.begin(38400); //รับหรือส่งข้อมูลไปยัง mtserial ด้วนความเร็ว 38400
   inputstring.reserve(5);
   sensorstring.reserve(30);
  }

 void serialEvent() //เป็นฟังก์ชั้นเมื่อมีการใช้ Serial.read() จะเข้ามาทำงานในฟังก์ชั้นนี้
   {
    char inchar = (char)Serial.read();
    inputstring += inchar;
   if(inchar == '\r') {input_stringcomplete = true;}
   }
 void loop()
 {
   if (input_stringcomplete)
   {
   myserial.print(inputstring);
    inputstring = "";
   input_stringcomplete = false;
   }

   while (myserial.available())
   {
        char inchar = (char)myserial.read();
        sensorstring += inchar;
    if (inchar == '\r') {sensor_stringcomplete = true;}
   }

   if (sensor_stringcomplete)
     {
     Serial.print(sensorstring);
      sensorstring = "";
      sensor_stringcomplete = false;
     }
 }

วันศุกร์ที่ 12 มิถุนายน พ.ศ. 2558

วันที่ 19 ของการฝึกงานที่ FIBO

1.ทำการบ้านครับพี่ปูให้หาวิธีการเขียนฟังก์ชั้นมีอยู่ 4 แบบมีอะไรบ้างและตัวอย่าง
 ตอบ 1. ฟังก์ชั้น Setup() เป็นฟังก์ชั้นประกาศตัวแปรที่จะนำมาใช้ในโปรแกรม
             ตัวอย่าง void setup ()
                                          {
                                               pinMode (13,OUTPUT); //เรียกใช้ pin 13 output
                                               digitalWrite (13,LOW); //pin 13 =  low
                                           }
         2.ฟังก์ชั้น loop() เป็นฟังก์ชั้นที่ทำงานเช่นให้ LED กระพริบมันจะทำงานวนลูปอยู่อย่างนั้นตลอดครับ
            ตัวอย่าง void loop()
                                      {
                                           digitalWrite(13,HIGH); //LED ติด
                                            delay(1000);
                                           digitalWrite(13,LOW); // LED ดับ
                                            delay(1000);
                                      }
        3.ฟังก์ชั้น interrupt () เป็นฟังกืชั้นเกียวกับการขัดจังหวะการทำงานของโปรแกรม ถ้ามีการ interrupt  ไม่ว่าโปรแกรมจะทำอะไรอยู่ก็ตามก็ต้องหยุดการทำงานมาทำ interrupt  ก่อนแล้วค่อยกลับไปทำงานขอโปรแกรมต่อครับ
             ตัวอย่าง / Interrupt INT0 (Port PD2)
                              ISR (INT0_vect)
                              {
                                       if (i)
                                      sbi(PORTA,0); // Set bit
                                       else
                                       cbi(PORTA,0); // Clear bit
                                        i = !i; // Toggle bit
                                     delay_ms(200); // Delay debound
                                }
   4.ฟังก์ชั้น serialpoptc() เป็นฟังก์ชั้นสื่อสารอนุกรมเช่น arduino to arduino
          ตัวอย่าง 

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

ตอนบ่ายผมได้ทำโปรแกรมกดสวิทช์แล้วให้มอเตอร์หมุนครับโดยการสั่งทาง serialpoptc ครับแต่โปรแกรมมันยังไม่สมบูรณ์ครับคือมันยังกดแล้วไม่หมุนบางครั้งก้หมุนผมจึงคิดว่าต้องใช้ interrupt
เข้ามาครับแต่วันนี้ได้แค่นี้ก็ดีใจแล้วครับ



ส่วนของโปรแกรมนะครับ
อาดูโน่ตัวติดกับ CNC shield ครับ

#define EN 8 //enable
#define X_DIR 5  //direction
#define X_STP 2  //step
int incomingByte = 0;
int BYTE = 0;
void step (boolean dir, byte dirPin, byte stepperPin, int steps) 
    digitalWrite (dirPin, dir); 
   
    for (int i = 0; i <steps; i++)
   { 
   digitalWrite (stepperPin, HIGH); 
   delayMicroseconds (800); 
   digitalWrite (stepperPin, LOW); 
   delayMicroseconds (800); 
   } 
void setup () 
{
   Serial.begin(9600);
  pinMode (X_DIR, OUTPUT); 
   pinMode (X_STP, OUTPUT); 
   pinMode (EN, OUTPUT); 
   digitalWrite (EN, LOW); 
   
 void loop() {
 if (Serial.available() > 0)     { 
         incomingByte= Serial.read();
           Serial.print ("> ");
           Serial.println (incomingByte,BYTE);
          if (incomingByte == 'A') {
              step1();
}
          if (incomingByte == 'B') {
              step2();


}
}
}
void step1 (void)
{
   step (HIGH, X_DIR, X_STP, 800); // call function 
   // delay(100);
}  
void step2 (void){
   step (LOW, X_DIR, X_STP, 800); // call function 
    //delay(100);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
อาดูโน่ตัวรับค่าสวิทช์ ครับ

void setup() {
 pinMode(2,INPUT_PULLUP); 
 attachInterrupt(0, Wap, LOW); 
 Serial.begin(9600);
}

void loop() { 
  Serial.println("B"); 
  delay(200);
}  
void Wap() 
{
  Serial.println("A");
 
 while(digitalRead(2)==LOW);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////                                        
   
           

วันพฤหัสบดีที่ 11 มิถุนายน พ.ศ. 2558

วันที่ 18 ของการฝึกงานที่ FIBO

ผมอ่านหนังสือใน inex เป็นหนังสือภาษา C/C++ เล่มนี้ครับ    http://issuu.com/innovativeexperiment/docs/pop-xt_educationkit_130805


ตอนบ่ายพี่ปูได้สอนโปรแกรมและอธิบายให้ผมเข้าใจว่าการทำงานของโปรแกรมมันทำงายอย่างไรผมจึงเข้าใจในโปรแกรมเป็นย่างมากครับซึงผมทำให้มอเตอร์หมุมทวนและตามเข็มนาฬิกาได้แล้วครับได้การบ้านมาด้วยครับ โปรแกรมจะเป็นแบบนี้ครับ




#define EN 8 //enable
#define X_DIR 5  //direction
#define X_STP 2  //step
void step (boolean dir, byte dirPin, byte stepperPin, int steps) 
    digitalWrite (dirPin, dir); 
   
    for (int i = 0; i <steps; i++)
   { 
   digitalWrite (stepperPin, HIGH); 
   delayMicroseconds (800); 
   digitalWrite (stepperPin, LOW); 
   delayMicroseconds (800); 
   } 
void setup () 
{
   pinMode (X_DIR, OUTPUT); 
   pinMode (X_STP, OUTPUT); 
   pinMode (EN, OUTPUT); 
   digitalWrite (EN, LOW); 
void loop ()
   step (HIGH, X_DIR, X_STP, 400); // call function 
    delay(1000);
   step (LOW, X_DIR, X_STP, 400);
    delay(1000);
}
 

 

วันพุธที่ 10 มิถุนายน พ.ศ. 2558

วันที่ 17 ของการฝึกงานที่ FIBO

วันนี้ผมได้ทำการติดตังโปรแกรม GRBLสำหรับ CNC shield หน้าตามันจะเป็นประมาณนี้ครับ
ใช้ในการคอนโทรลมอเตอร์ทั่งสามแกน คือ X Y Z แต่ผมยังไม่ได้ทำความเข้าใจในเรืองนี้มากนักครับ
โปรแกรมนี้มันจะต่อกับอาดุโน่ได้งายมากครับ
ผมได้รองติดตั้งโปรแกรมออกแบบ 3D solidwork 2015 แต่ติดตั้งไม่ได้ครับไม่รู้เป็นอะไรรองทำหลายครั่งมาแต่ก็ทำไม่ได้อยู่ดีครับ
ผมเตรียมตัวที่จะรองออกแบบโดยการดู youtube ครับได้ดูอยู่หลายคลิปมากครับเช่น
-https://www.youtube.com/watch?v=JyOsv8Gc9S4
-https://www.youtube.com/watch?v=xLd8Ds0mFeY
-https://www.youtube.com/watch?v=youvc8V1j3U



วันอังคารที่ 9 มิถุนายน พ.ศ. 2558

วันที่ 16 ของการฝึกงานที่ FIBO

1.วันนี้มีคนมาดูงานที่ FIBO ครับพวดผมได้เตรียมของมานำเสนอด้วยครับโดยนำเจ้า POY ของพี่เครืองกลมีรูปมาให้ดูด้วยครับ
และแล้วแขกก็มาถึงครับผมไม่ได้พูดไรเลยครับมีแต่พี่ไนท์และพี่ต้อมเป็นคนพรีเซ้นโปรเจคของพวกพี่ๆครับ

ตอนบ่ายมีน้องๆจากโรงเรียนมัธยมมาดูด้วยครับแต่น่าเสียดายผมลืมเก็บภาพครับน้องๆน่ารักมากครับสนใจในสิ่งที่พี่ๆพรีเซ้นเป็นอย่างมาก
2.ตอนที่ว่างผมได้ทำวงจรสเต็ปมอเตอร์เล่นๆๆครับจากการทำได้ผลลัพธ์ คือสามารถทำให้มันหมุนได้ครับจากที่ไม่เคยทำมาก่อนเลยได้รู้จักกับเจ้า CNC SHIELD มันทำหน้าที่จ่านกระแสให้กับสเต็ปมอเตอร์มีรูปมาให้ดูครับ 
ส่วนโปรแกรมจะเป็นประมาณนี้ครับ

#define EN 8

#define X_DIR 5
#define X_STP 2
void step (boolean dir, byte dirPin, byte stepperPin, int steps) 
    digitalWrite (dirPin, dir); 
    delay (50); 
    for (int i = 0; i <steps; i++)
   { 
   digitalWrite (stepperPin, HIGH); 
   delayMicroseconds (800); 
   digitalWrite (stepperPin, LOW); 
   delayMicroseconds (800); 
   } 
void setup () 
{
   pinMode (X_DIR, OUTPUT); 
   pinMode (X_STP, OUTPUT); 
   pinMode (EN, OUTPUT); 
   digitalWrite (EN, LOW); 
void loop ()
   step (false, X_DIR, X_STP, 200);  
   delay (1000); 
}

วันจันทร์ที่ 8 มิถุนายน พ.ศ. 2558

วันที่ 15 ของการฝึกงานที่ FIBO

1.ผมได้เข้าไปอ่าน 3D Printer เพื่อศึกษาหลังการทำงานและอุปกรณ์ของ 3D Printer และทำความเข้าใจกับ 3D Printer จากการอ่านทำให้ผมเข้าใจในการทำงานและหน้าที่ของอุปกรณ์แต่ละชิ้นของ3D Printer  ว่ามีหน้าที่อะไรลิงค์ที่ผมเข้าไปอ่านนะ ครับ
- http://www.inventor-3d.com/3d-printer-introduction/
 



2.ผมอ่านเจอแล้วคิดว่าเจ่งดีครับคือเครืองบินบังคับด้วยรีโมทบังคับวิทยุหน้าตามันจะเป็นแบบนี้ครับ
ว่าด้วยเรื่องไรสาระกันเลยครับผมอยากทำมากเลยครับเครื่องบินบังครับ แต่ติดที่ว่ายังไม่มีความรู้พอที่จะทำได้แต่ต้องทำให้ได้ครับไม่มีไรเกินความสามารถของผมไปได้หรอกครับ 5555  คือผมชอบทำของเล่นเแงอยู่แล้วครับถ้าซือมามันก้เลนไม่สนุกครับผมไม่ได้ทำเองหน้าตามันจะเป็นประมาณนี้ครับ
ได้ทั่งเล่นและก็ได้ความรู้มากมายเลครับถ้าทำในสิงที่ชอมยังไงก็ไม่น่าเบื่อครับทำนะไม่อยากครับแต่
ตอนที่วัสดุอุปกรณ์ยังไม่มีทีจะทำครับ

3.สึกษาการคอนโทรลมอเตอร์ด้วยอาดูโน่ครับผมศึกษาอยู่นานเลยครับแต่ยังไม่เข้าใจอยู่ดีครับผมได้คึกษาอยู่ที่หน้าเว็ปนี้ครับ
-http://www.arduitronics.com/article/arduino-and-motor-control-part-3-stepper-motor