วันพฤหัสบดีที่ 27 สิงหาคม พ.ศ. 2558
วันที่ 50 ของการฝึกงานที่ FIBO
วันสรุปผลที่มาฝึกงานที่ FIBO ตั่งแต่วันแรกที่เข้ามาครับมาวันแรกผมรู้สึกดีมากครับอาจารย์สะยามต้อนรับเป็นอย่างดีครับและแนะนำคำนิยามของ FIBO ครับอาจารย์สะยามได้แนะนำพี่ที่ปรึกษาให้พวกผมทั่ง 4 คนครับหลังจากนั้นอาจารย์ก็ให้พี่ดูแลพวกผมครับโดยการหาของมาให้เล่นครับมันคือ ARDUINO และ SHIELD มาทำการเขียนโปรแกรมตั่งแต่ไฟไฟกระพริบไฟเลยครับ คือพวกผมไม่มีพื้นฐานการเขียนโปรแกรมมาก่อนเลยครับที่เรียนอยู่มหาลัยก็เป็นแค่การเขียนภาษา C แค่พื้นฐานครับโดยเขียนลง PIC แบบงายครับมันทำให้ผมรู้สึกว่าผมยังไม่รู้อะไรเลยครับเกียวกับโปรแกรมแต่พอได้ไปฝึกงานที่ FIBO ทำให้ผมได้ความรู้ทางด้านโปรแกรมมากขึ้นและสามารถที่จะนำมาต่อยอดได้ครับ
วันจันทร์ที่ 27 กรกฎาคม พ.ศ. 2558
วันที่ 49 ของการฝึกงานที่ FIBO
วันนี้พี่ปูเอาหัวฉีดพลาสติกมาให้ครับผมจึงทำงานทดลองครับผมทีได้คือพลาสติกออกมาครับผมดีใจมากครับ
ผมจึงทำการเขียนโปรแกรมให้มันทำงานอัตโนมัติครับโดยมีโปรแกรมแป็นแบบนี้ครับ
#define EN 24
#define X_DIR 28
#define X_STP 26
#define END_EFFECTOR 10
#include <LiquidCrystal.h>
#include <Wire.h>
//ประกาศ Library ของจอ I2C
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal lcd(16, 17, 23, 25, 27, 29);
const int analogInPin = A13;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
float Temperature = 0;
float Ta = 0;
float Tb = 0;
float Tc = 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 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(10,OUTPUT);
pinMode(A13,INPUT);
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop()
{
sensorValue = analogRead(analogInPin); // Read the SENSOR
RValue = (sensorValue*5.0000)/1024.0000; //Calculated from sensor
Rsensor = ((50/(5 - RValue))-10)*1000; //The value of the resistive sensors.
//delay(100);
for(int i =0 ; i<72 ; i++)
{
if(Rsensor>table[i][1])
{
Ta = ((table[i-1][1])-Rsensor); //Calculated the resistive sensors
Tb = Ta/((table[i-1][1])-(table[i][1]));
Tc = Tb*5; Temperature = (table[i][0])-Tc;
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Temp =" );
lcd.print(Temperature);
lcd.print(" C");
break;
}
}
if(Temperature < 150)
{
digitalWrite(END_EFFECTOR, HIGH);
}
else{digitalWrite(END_EFFECTOR, LOW);
step (HIGH, X_DIR, X_STP, 200, 200 );
}
if(Temperature >= 170)
{
digitalWrite(END_EFFECTOR, LOW);
}
else{digitalWrite(END_EFFECTOR, HIGH); }
}
วันที่ 48 ของการฝึกงานที่ FIBO
วันนี้ผมได้ทดลองฉีดพลาสิกครับแต่ผลที่ได้คือพลาสติกไม่ยอมไหลผมคิดว่ามันต้องมีอะไรไปติดแน่ๆๆเลยครับผมต้องให้พี่ปูมาแก่ปัญหาให้ครับต้องรอเป็นพรุ่งนี้ครับเพราะปี่ปูจะเอาไปแช้น้ำยาละลายพลาสติกครับผมเลยทำการติดตั่งเซ็นเซอร์ตัวที่สองครับและรอทดลองหัวฉีดพลาสติกครับ
วันอาทิตย์ที่ 26 กรกฎาคม พ.ศ. 2558
วันที่ 47 ของการฝึกงานที่ FIBO
วันนี้พี่สองพาไปซื่อของที่บ้านหม้อครับพี่สองไปซื่อสลิงมาทำแขนกลของพี่เขาพวกผมทุกคนเลยขอติดรถไปด้วยครับโดยผมจะไปซือเวอร์เนียร์และพาบอมไปซือโน๊ดบุ๊กที่ ฟอร์จูนทาวน์ผมได้ซือเวอร์เนียร์มาด้วยครับ
วันพุธที่ 22 กรกฎาคม พ.ศ. 2558
วันที่ 46 ของการฝึกงานที่ FIBO
วันนี้ผมได้ทำการเขียนโปรแกรมใหม่ เหตุผมที่ผมเขียนใหม่คือโปรแกรมอันเดิมมันยังไม่ดีครับมันยังอ่านค่าอุณหภูมิไม่ถูกต้องครับ แนวทางการเขียนของผมคือ ให้ความร้อนจากหัวฉีดพลาสติกแล้วแสดงผลออกทางจอภาพแล้วทำการคอนโทรลความร้อนให้คงที่จากนั้นให้ทำการจ่ายพลาสติกให้กับหัวหัวฉีดพลาสติก ครับ
#define END_EFFECTOR 10
#include <LiquidCrystal.h>
#include <Wire.h>
//ประกาศ Library ของจอ I2C
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal lcd(16, 17, 23, 25, 27, 29);
const int analogInPin = A13;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
float Temperature = 0;
float Ta = 0;
float Tb = 0;
float Tc = 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(10,OUTPUT);
pinMode(A13,INPUT);
}
void loop()
{
sensorValue = analogRead(analogInPin); // Read the SENSOR
RValue = (sensorValue*5.0000)/1024.0000; //Calculated from sensor
Rsensor = ((50/(5 - RValue))-10)*1000; //The value of the resistive sensors.
delay(100);
for(int i =0 ; i<72 ; i++)
{
if(Rsensor>table[i][1])
{
Ta = ((table[i-1][1])-Rsensor); //Calculated the resistive sensors
Tb = Ta/((table[i-1][1])-(table[i][1]));
Tc = Tb*5; Temperature = (table[i][0])-Tc;
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Temperature =" );
lcd.print(Temperature);
lcd.print(" C");
break;
}
}
if(Temperature < 150)
{
digitalWrite(END_EFFECTOR, HIGH);
}
else{digitalWrite(END_EFFECTOR, LOW); }
if(Temperature >= 200)
{
digitalWrite(END_EFFECTOR, LOW);
}
else{digitalWrite(END_EFFECTOR, HIGH); }
}
#define END_EFFECTOR 10
#include <LiquidCrystal.h>
#include <Wire.h>
//ประกาศ Library ของจอ I2C
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal lcd(16, 17, 23, 25, 27, 29);
const int analogInPin = A13;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
float Temperature = 0;
float Ta = 0;
float Tb = 0;
float Tc = 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(10,OUTPUT);
pinMode(A13,INPUT);
}
void loop()
{
sensorValue = analogRead(analogInPin); // Read the SENSOR
RValue = (sensorValue*5.0000)/1024.0000; //Calculated from sensor
Rsensor = ((50/(5 - RValue))-10)*1000; //The value of the resistive sensors.
delay(100);
for(int i =0 ; i<72 ; i++)
{
if(Rsensor>table[i][1])
{
Ta = ((table[i-1][1])-Rsensor); //Calculated the resistive sensors
Tb = Ta/((table[i-1][1])-(table[i][1]));
Tc = Tb*5; Temperature = (table[i][0])-Tc;
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Temperature =" );
lcd.print(Temperature);
lcd.print(" C");
break;
}
}
if(Temperature < 150)
{
digitalWrite(END_EFFECTOR, HIGH);
}
else{digitalWrite(END_EFFECTOR, LOW); }
if(Temperature >= 200)
{
digitalWrite(END_EFFECTOR, LOW);
}
else{digitalWrite(END_EFFECTOR, HIGH); }
}
วันจันทร์ที่ 20 กรกฎาคม พ.ศ. 2558
วันที่ 45 ของการฝึกงานที่ FIBO
วันนี้ผมได้ทำการเปลี่ยนตัวจับหัวฉีดพลาสติกครับเนื่องจารต้องทำงารติดพัดลมครับในการออกแบบของผมยังไม่ดีเท่าที่ควรครับคือรูขันน็อตมันไม่ตรงกับตัวอย่างเดิมครับมันแตกต่างกันอยู่ประมาณ 1-2 mm ครับจากนั้นได้ทำการเปลี่อนครับและทำการลงโปรแกรมครับซึงผลที่ผมทำสามารถฉีดพลาสติกได้ครับแต่ผมยังไม่ได้เอาโปรแกรมคอลโทรลมอเตอรืฉีดพลาสติกลงครับแค่รองดูว่ามันสามารถละลายพลาสติกได้ไหมครับซึงผลที่ออกมาเป็นที่น่าพอใจครับมันสามารถงานพรุ่งนี้คือเขียนโปรแกรมใหม่ครับแล้วหาไฟเลี้ยงให้กับพัดลมครับปัญหามันคือพัดลมใช้ไป 5V 0.11 A แต่บอร์ดไดร์ จ่ายไฟ 12 V ครับ
วันที่ 44 ของการฝึกงานที่ FIBO
วันพฤหัสบดีที่ 16 กรกฎาคม พ.ศ. 2558
วันที่ 43 ของการฝึกงานที่ FIBO
วันนี้ผมพี่ปูได้เอาชิ้นงานที่ผมออกแบบมาให้ดูครับรูปร้างจะเป็นแบบนี้ครับ
วันนี้ได้ลอง Heating ดูว่าโปรแกรมใช้งานได้จริงไหมผมก็ทำได้จริงครับแต่แค่ลองดูครับก็
#define END_EFFECTOR 10
#include <LiquidCrystal.h>
#include <Wire.h>
//ประกาศ Library ของจอ I2C
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal lcd(16, 17, 23, 25, 27, 29);
const int analogInPin = A13;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
float Temperature = 0;
float Ta = 0;
float Tb = 0;
float Tc = 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(10,OUTPUT);
pinMode(A13,INPUT);
}
void loop()
{
sensorValue = analogRead(analogInPin); // Read the SENSOR
RValue = (sensorValue*5.0000)/1024.0000; //Calculated from sensor
Rsensor = ((23.5/(5 - RValue))-11)*1000; //The value of the resistive sensors.
delay(100);
for(int i =0 ; i<72 ; i++)
{
if(Rsensor>table[i][1])
{
Ta = ((table[i-1][1])-Rsensor); //Calculated the resistive sensors
Tb = Ta/((table[i-1][1])-(table[i][1]));
Tc = Tb*5; Temperature = (table[i][0])-Tc;
lcd.setCursor(0, 1);
lcd.print("Temperature =" );
lcd.print(Temperature);
lcd.print(" C");
break;
}
}
digitalWrite(END_EFFECTOR, HIGH);
delay(800);
}
วันนี้พี่ให้ทำงานครับคือเข้าเล่มหนังสือครับ
วันที่ 42 ของการฝึกงานที่ FIBO
วันนี้ผมได้ทำโปรแกรมอ่านค่าอุณหภูมิแล้วแสดงผลที่ จอ LCD โปรแกรมผมทำยังไม่ได้เพราะยังไม่มีไลบรารี LCD 20*4 ผมเลยยังทำไม่ได้แต่ผมก้อ่านวิธีการใช้งานของอุปกรณ์ต่างๆๆของ 3d printer และเปิดดูการต่ออุปกรณ์และได้อ่านหนังสือจาก inex เพื่อทำความเข้าในในโปรแกรมที่จะนำมาใช้งานให้ได้มากที่สุดครับ
วันอังคารที่ 14 กรกฎาคม พ.ศ. 2558
วันที่ 41 ของการฝึกงานที่ fibo
ผมได้ทำการอ่านดาต้าชีท 3D shield เพื่อที่จะติดตั่งเซ็นเซอร์วัดอุณหภูมิและทำการเขียนโปรแกรมวัดค่าแล้วแสดงผลที่ LCD ในการอ่านเจอปัญหาคือตัว R ที่ต่ออนุกรมกับเซ็นเซอร์มันค่าไม่เท่ากันคือที่ผมใช้ในการเขียนทดลองจะมีค่า R = 10 k OHM แต่อยู่ใน shield จะมีค่า R = 4.7 k OHM ผมจึงได้ทำการคำนวณใหม่ครับ โดนการคำนวณหาค่าที่ PIN analog อ่านค่าได้ แล้วนำมาคำนวนหาค่าความต้านทางที่เกิดจากอุณหภูมิที่ทำให้ค่าความต้านทานของเซ็นเชอร์เปรีนรไปครับ จากการคำนวณผมได้ค่า Vin ที่ PIN analog อ่านได้ คือ Vin = 4.7 V
ดาต้าชีท 3D shield จะเป็นตัวนี้ครับ
ดาต้าชีท 3D shield จะเป็นตัวนี้ครับ
วันจันทร์ที่ 13 กรกฎาคม พ.ศ. 2558
วันที่ 40 ของการฝึกงานที่ FIBO
วันนี้ได้อ่านวิธีการใช้งานหัวทำความร้อน 3d ปรินเตอร์ว่ามีวิธีการใช้แบบถูกวิธีจึงจะเกิดการนำมาใช้ให้เกิดประสิทธิภาพสูงสุดครับ

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

ส่วนนี้จะเป็นส่วนที่สำคัญมากครับเพราะจะทำให้หัวฉีกพลาสติกทำงานได้ดีต้องมีความร้อนที่พอเหมาะครับการทำงานของมันคือจะจ่ายกระแสให้กับหัวทำความร้อนแล้วจะไดความรอนที่ต้องการครับ
ส่วนวงจรข้างใน 3D printer ผมก็ศึกษาครับแต่ยังไม่มากครับรู้แค่ pin ไหนต่อกับอะไรอค่นี้ครับ
วันที่ 39 ของการฝึกงานที่ FIBO
วันนี้ผมได้อ่านวิธีการใช้งานเซ็นเชอร์ Ultrasonic Sensor ModuleHC-SR04 โมดูลเพื่อใช้ในการวัด
ระยะทางโดยไม่มีการสัมผัส
ระยะทางโดยไม่มีการสัมผัส
วันนี้เรามาคุยกันเรื่องของการวัดระยะทางโดยไม่ต้องมีการสัมผัสกับพื้นผิวของวัตถุที่ต้องการวัดระยะ
นะครับ อุปกรณ์ตัวนี้ราคาถูกสุดๆ จึงมีความเหมาะสมกับผู้เริ่มต้นใช้งาน Arduino Board เพื่อศึกษาการทำงานเบื้องต้นของ Arduino ครับ และแน่นอนมันใช้กับบอร์ดได้ทุกชนิดนะครับ ทั้งที่เป็น Arduino หรือ เป็นไมโครคอนโทรลเลอร์อย่างอื่น
ก่อนอื่นมาคุยกันถึงหลักการที่ใช้ในการวัดระยะทางโดยไม่ต้องใช้ไม้บรรทัดกันก่อนครับ
คราวนี้มาแบบยาวๆ เพื่อความเข้าใจกันมากขึ้นครับ อุปกรณ์ตัวนี้เริ่มต้นทำงานโดยการส่งสัญญาณเริ่มต้นยาว 10 ไมโครวินาที ไปสั่งให้แหล่งกำเนิดเสียงทำงาน จากนั้นจะส่งคลื่นเสียงความถี่ 40 kHz ออกไป 8 พัสส์ แล้วรอฟังเสียงสะท้อนครับ ตัวซ้ายจะเป็นตัวส่งคลื่นเสียงออกไป ส่วนตัวขวาในรูปจะเป็นตัวรับความถี่ที่สะท้อนกลับมาครับ
เนื่องจากเสียงที่ส่งออกไปถึงแม้จะไม่ได้ยินเพราะเกิน 20 kHZ ที่หูมนุษย์จะรับฟังได้ แต่เนื่องจากยังคงเป็นคลื่นเสียง ดังนั้นความเร็วของเสียงจึงแปรผันตามอุณหภูมิด้วยตามสูตรนี้ครับ
C ≈ 331.5 + 0.61 θ (m/s)
ดังนั้นแน่นอนครับ เวลาผู้ผลิตเขียนโปรแกรมออกแบบไว้ก็อยู่ที่อุณภูมิทำงานที่อาจจะแตกต่างจากบ้านเรา ก็ทำให้ค่าที่วัดได้มีความผิดพลาดไปบ้างครับ
อีกส่วนที่จะต้องรู้ก็คือช่วงวัด และมุมที่สามารถวัดได้ครับ และเนื่องจากคุณสมบัติของอุปกรณ์ที่ใช้ในการกำเนิดเสียง และรูปร่างของตัวลำโพง (Horn) ก็ทำให้อุปกรณ์ตัวนี้มีมุมวัด 15 องศา (Measuring Angle) ครับ โดยสามารถวัดระยะห่างได้ตั้งแต่ 2 ซม. จนถึง 4 เมตร
เนื่องจากเสียงที่ส่งออกไปถึงแม้จะไม่ได้ยินเพราะเกิน 20 kHZ ที่หูมนุษย์จะรับฟังได้ แต่เนื่องจากยังคงเป็นคลื่นเสียง ดังนั้นความเร็วของเสียงจึงแปรผันตามอุณหภูมิด้วยตามสูตรนี้ครับ
C ≈ 331.5 + 0.61 θ (m/s)
ดังนั้นแน่นอนครับ เวลาผู้ผลิตเขียนโปรแกรมออกแบบไว้ก็อยู่ที่อุณภูมิทำงานที่อาจจะแตกต่างจากบ้านเรา ก็ทำให้ค่าที่วัดได้มีความผิดพลาดไปบ้างครับ
อีกส่วนที่จะต้องรู้ก็คือช่วงวัด และมุมที่สามารถวัดได้ครับ และเนื่องจากคุณสมบัติของอุปกรณ์ที่ใช้ในการกำเนิดเสียง และรูปร่างของตัวลำโพง (Horn) ก็ทำให้อุปกรณ์ตัวนี้มีมุมวัด 15 องศา (Measuring Angle) ครับ โดยสามารถวัดระยะห่างได้ตั้งแต่ 2 ซม. จนถึง 4 เมตร
วันพฤหัสบดีที่ 9 กรกฎาคม พ.ศ. 2558
วันที่ 38 ของการฝึกงานที่ FIBO
วันนี้ได้ทำการทดรองโปรแกรมอ่านค่าอุณหภูมิแล้วแสดงผลที่จอ LCD โดยการคำนวณค่าจากโปรแกรมแล้วแสดงผลที่จอ LCD นี้คือโปรแกรมครับ
const int analogInPin = A0;
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;
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); // Read the SENSOR
RValue = (sensorValue*5.0000)/1024.0000; //Calculated from sensor
Rsensor = ((50/(5 - RValue))-10)*1000; //The value of the resistive sensors.
delay(100);
for(int i =0 ; i<72 ; i++)
{
if(Rsensor>table[i][1])
{
Ta = ((table[i-1][1])-Rsensor); //Calculated the resistive sensors
Tb = Ta/((table[i-1][1])-(table[i][1]));
Tc = Tb*5;
Temperature = (table[i][0])-Tc;
Serial.print(" Temperature = " );
Serial.print(Temperature);
Serial.println(" C");
break;
}
}
delay(1000);
}
วันพุธที่ 8 กรกฎาคม พ.ศ. 2558
วันที่ 37 ของการฝึกงานที่ FIBO
วันนี้ผมได้ทำโปรแกรมแสดงผลทางจอ LCD จริงๆๆแล้วครับ เนื่องจากไปซื่อตัวนี้มาครับ
วิธีการต่อวงจรครับผมได้ต่อประมาณนี้ครับ
รูปวิธีการต่ออุปกรณ์
มีโปรแกรมที่ที่ผมรองเอามาทดสอบครับ
วิธีการต่อวงจรครับผมได้ต่อประมาณนี้ครับ
รูปวิธีการต่ออุปกรณ์
มีโปรแกรมที่ที่ผมรองเอามาทดสอบครับ
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //ประกาศ Library ของจอ I2C
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
// initialize the LCD
lcd.begin();
// Print a message to the LCD.
lcd.print("Hello !!!"); //ฟังก์ชั่นในการกำหนดข้อความที่ต้องการแสดงผล
lcd.setCursor(0, 1); //ฟังก์ชั่นในการกำหนดตำแหน่ง Cursor
lcd.print("bass");
}
void loop()
{
}
ผมได้ทำโปรแกรมอ่านค่าอุณหภูมิแล้วแสดงผลออกทางจอ LCD ครับผลที่ออกมาก็ได้ดั่งใจหมายครับเป็นการเริ่มที่ดีครับ
รูปค่าที่แสดงผล
รูปค่าที่แสดงผล
ส่วนโปรแกรมก็จะได้เป็นประมาณนี้ครับพร้อมที่จะนำมาใช้งานจริงครับ
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //ประกาศ Library ของจอ I2C
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
// initialize the LCD
lcd.begin();
// Print a message to the LCD.
//lcd.print("Hello !!!"); //ฟังก์ชั่นในการกำหนดข้อความที่ต้องการแสดงผล
//lcd.setCursor(0, 1); //ฟังก์ชั่นในการกำหนดตำแหน่ง Cursor
//lcd.print("10");
}
void loop()
{
for(int i=0; i<=10; i++)
{
lcd.setCursor(14, 0);
lcd.print(i);
delay(300);
}
}
วันที่ 36 ของการฝึกงานที่ FIBO
วันที่ 7/07/2558 ผมได้ไปซื่อขอกกับพี่ไนท์ฟอจูนทาว ที่พระราม 9 ครับหลังจากนั้นได้ไปหาอาจารยืที่มาบุญครอง ที่สยามสแควร์ ครับผมได้เดินดูของมากมายเลยครับแต่ไม่ได้ซื่ออะไรเลยครับ ไปเวลา 11.00 น
กลับมาถึงก้ประมาณ 21.00 น ครับซึ่งกานไปครั้งนี้ก็รู้สึกดีใจครับคือผมยังไม่เคยไปเลยครับเป็นการไปครั้งแรกของผมครับซึ่งก็มีข้อดีข้อเสียครับคือรถมันติดมากเลยครับทำให้ใช้เวลาอยู่บนรถนานพอสมควรครับสิ่งของมีมากมายเว้นแต่จะหาสิ่งที่ต้องการเจอหรือเปล่าเท่านั้นเองครับ
กลับมาถึงก้ประมาณ 21.00 น ครับซึ่งกานไปครั้งนี้ก็รู้สึกดีใจครับคือผมยังไม่เคยไปเลยครับเป็นการไปครั้งแรกของผมครับซึ่งก็มีข้อดีข้อเสียครับคือรถมันติดมากเลยครับทำให้ใช้เวลาอยู่บนรถนานพอสมควรครับสิ่งของมีมากมายเว้นแต่จะหาสิ่งที่ต้องการเจอหรือเปล่าเท่านั้นเองครับ
วันจันทร์ที่ 6 กรกฎาคม พ.ศ. 2558
วันที่ 35 ของการฝึกงานที่ FIBO
วันอาทิตย์ที่ 5 กรกฎาคม พ.ศ. 2558
วันที่ 34 ของการฝึกงานที่ FIBO
ผมได้ศึกษาวิธีการเขียนโปรแกรมเพื่อแสดงผมทาง จอ LCD โดยการเขียนโปแกรม ARDUINO และได้ศึกษาการสั่งงาน Arduino ผ่าน Bluetooth ครับ
จากนั้นสั่งอัพโหลดโค้ดดังนี้
char BYTE;
int LED = 13; // LED on pin 13
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop() {
Serial.println("Press 1 to turn Arduino pin 13 LED ON or 0 to turn it OFF:");
while (!Serial.available()); // stay here so long as COM port is empty
BYTE = Serial.read(); // read next available byte
Serial.print(BYTE);
if( BYTE == '0' ) digitalWrite(LED, LOW); // if it's a 0 (zero) tun LED off
if( BYTE == '1' ) digitalWrite(LED, HIGH); // if it's a 1 (one) turn LED on
delay(50);
}
วันพฤหัสบดีที่ 2 กรกฎาคม พ.ศ. 2558
วันที่ 33 ของการฝึกงานที่ FIBO
1.วันนี้ผมได้ทำวงจรวัดอุณหภูมิของของเซ็นเซอร์โดยการคำนวณทางคณิตศาสตร์จนได้มาเป็นโปรแกรมวัดค่าอุณหภูมิที่น่าจะตรงกับความจริงครับ ซึ่งโปรแกรมนี้ผมได้ทำมาหลายแบบแล้วทั่งเขียนโปรแกรมจริงและนำมาคำนวณอีกด้วยซึงผมที่ได้มาค่อนข้างน่าพอใจเป็นอย่างมากเลยครับจากคนที่ไม่เคยทำโปรแกรมมาก่อนครับซึ่งผลที่ได้เป็นประมาณนี้ครับ
ตอนนี้หรือแค่จะเอาค่าที่ได้ไปแสดงผลออกทางจอ LCD ครับซึงผมยังไม่เคนเขียนโปรแกรมแสดงผลออกทางจอ LCD เลยครับ อย่างแรกเลยที่ผมต้องทำคือศึกษาให้เข้าใจก่อนลงมือทำครับถ้าทำแล้วมันไม่ได้เดียวใจผมจะท้อซะก่อนยังใงก็สู้ต่อไปครับ
วันพุธที่ 1 กรกฎาคม พ.ศ. 2558
วันที่ 32 ของการฝึกงานที่ FIBO
วันนี้ผมได้อ่านวิธี่การเขียนโปรแกรมแสดงผลทางจอ LCD ครับในการอ่านที่จะนำมาใช้งานจริงผมได้อ่านบทความนี้ครับ
การแสดงผล Output แบบ LCD หรือชื่อเต็มๆเคือ Liquid Crystal Display กันนะครับ
การแสดงผล Output แบบ LCD หรือชื่อเต็มๆเคือ Liquid Crystal Display กันนะครับ
เรียกให้ชัดๆก็คือหน้าจอ Character LCD ขนาด 16 ตัวอักษร จำนวน 2 บรรทัดนั้นเองครับ
สำหรับ LCD ส่วนใหญ่ที่ใช้กัน ก็จะใช้ Controller ของ Hitachi เบอร์ HD44780 ครับ
เริ่มแรกก็ทำการ Hello World ! กันก่อนนะครับ
โดย Code ทั้งหมดในตัวอย่างนี้จะใช้ library หน้าจอของ LiquidCrystal นะครับ
สำหรับ LCD ส่วนใหญ่ที่ใช้กัน ก็จะใช้ Controller ของ Hitachi เบอร์ HD44780 ครับ
เริ่มแรกก็ทำการ Hello World ! กันก่อนนะครับ
โดย Code ทั้งหมดในตัวอย่างนี้จะใช้ library หน้าจอของ LiquidCrystal นะครับ
ขาของ LCD จะมีอยู่ 16 ขา อธิบายเพิ่มเติมของขาแต่ละขากันสักนิดนะครับ
– GND : Ground ระหว่าง ไมโครคอนโทรลเลอร์กับ LCD
-VCC : ไฟเลี้ยง LCD ขนาด +5VDC
-VO : ขาสำหรับปรับความสว่างของหน้าจอ LCD
-RS : Register select ใช้บอกให้ LCD Controller ว่า ข้อมูลที่ส่งให้ขา Data เป็นคำสั่งหรือข้อมูล
-R/W : Read/Write ใช้กำหนดว่าจะอ่านหรือเขียนข้อมูลกับ LCD Controller
-E : Enable ใช้กำหนดการทำงานให้กับ LCD Controller
-DB0-DB7 : เป็นขาสัญญาณ Data ใช้เขียนหรืออ่านข้อมูล/คำสั่ง กับ LCD Controller
– GND : Ground ระหว่าง ไมโครคอนโทรลเลอร์กับ LCD
-VCC : ไฟเลี้ยง LCD ขนาด +5VDC
-VO : ขาสำหรับปรับความสว่างของหน้าจอ LCD
-RS : Register select ใช้บอกให้ LCD Controller ว่า ข้อมูลที่ส่งให้ขา Data เป็นคำสั่งหรือข้อมูล
-R/W : Read/Write ใช้กำหนดว่าจะอ่านหรือเขียนข้อมูลกับ LCD Controller
-E : Enable ใช้กำหนดการทำงานให้กับ LCD Controller
-DB0-DB7 : เป็นขาสัญญาณ Data ใช้เขียนหรืออ่านข้อมูล/คำสั่ง กับ LCD Controller
การต่อ LCD จะทำได้ 2 แบบครับ
– 4 Bit : ใช้ 7 ขา I/O ต่อกับ arduino
– 8 Bit : ใช้ 11 ขา I/O ต่อกับ arduino
สำหรับการแสดงผลข้อความโดยทั่วไปจะใช้กันแค่ 4 bit ครับ ดังตัวอย่างก็เช่นกันครับ
– 4 Bit : ใช้ 7 ขา I/O ต่อกับ arduino
– 8 Bit : ใช้ 11 ขา I/O ต่อกับ arduino
สำหรับการแสดงผลข้อความโดยทั่วไปจะใช้กันแค่ 4 bit ครับ ดังตัวอย่างก็เช่นกันครับ
Example 1 : Character LCD 16×2เราจะทำการทดของเขียนโปรแกรม Hello World จากโค๊ดตัวอย่างก่อนนะครับ
ดูว่าเราต่อวงจรถูกต้องไหมก่อนนะครับ
ดูว่าเราต่อวงจรถูกต้องไหมก่อนนะครับ
– Arduino UNO R3 จำนวน 1 อัน
– LCD 16×2 จำนวน 1 อัน
– R ปรับค่าได้ (Potentiometer) 10K (จะเรียกสั้นๆว่า 10K pot นะครับ) จำนวน 1 อัน
– สายจั๊ม
– โปรโตบอร์ด
– LCD 16×2 จำนวน 1 อัน
– R ปรับค่าได้ (Potentiometer) 10K (จะเรียกสั้นๆว่า 10K pot นะครับ) จำนวน 1 อัน
– สายจั๊ม
– โปรโตบอร์ด
Circuit :
โดยเราจะต่อวงจร LCD เข้ากับ Arduino ดังภาพนะครับ
ภาพการต่อวงจรอย่างง่ายนะครับ
ถ้าดูแบบเป็นวงจรหน่อยก็แบบนี้ครับ
โดยเจ้าหน้าจอ LCD จะมีขาอยู่ 16 ขา จะต่อดังนี้นะครับ
– LCD RS ต่อกับ Digital 12
– LCD Enable ต่อกับ Digital 11
– LCD D4 ต่อกับ Digital 5
– LCD D5 ต่อกับ Digital 4
– LCD D6 ต่อกับ Digital 3
– LCD D7 ต่อกับ Digital 2
– LCD Gnd และ LCD R/W ต่อเข้ากับ ขาข้างซ้ายหรือขวาของ 10K pot ก็ได้ครับ แล้วจั๊มเข้า GND ครับ
– LCD Vcc ต่อกับ ขาอีกข้างของ 10K pot แล้วจั๊มเข้า 5V ครับ
– LCD VO ต่อกับ ขากลางของ 10K pot ครับ
– LCD Enable ต่อกับ Digital 11
– LCD D4 ต่อกับ Digital 5
– LCD D5 ต่อกับ Digital 4
– LCD D6 ต่อกับ Digital 3
– LCD D7 ต่อกับ Digital 2
– LCD Gnd และ LCD R/W ต่อเข้ากับ ขาข้างซ้ายหรือขวาของ 10K pot ก็ได้ครับ แล้วจั๊มเข้า GND ครับ
– LCD Vcc ต่อกับ ขาอีกข้างของ 10K pot แล้วจั๊มเข้า 5V ครับ
– LCD VO ต่อกับ ขากลางของ 10K pot ครับ
CODE :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
|
อ้างอิง
http://www.sathittham.com/arduino/arduino-basic-lcd/
http://www.sathittham.com/arduino/arduino-basic-lcd/
สมัครสมาชิก:
บทความ (Atom)