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

อุปกรณ์การทดลอง

ปฏิบัติการครั้งที่ 1 วันศุกร์ ที่ 11 มีนาคม 2559

ในวันแรก ผมตื่นเต้นกับการที่จะได้เขียนโปรแกรมฝังเข้าไปในบอร์ด Arduino มากๆ
ทั้งวิธีการ และ การ อธิบาย ของ อ.วิชัย  ศรีสุรักษ์ 
ณ ห้องปฏิบัติการณ์ F3 มหาวิทยาลัยเทคโนโลยีสุรนารี
อ. ท่านได้สอน วิธีการต่อวงจร เข้ากับ ระหว่าง 
เบรดบอร์ด และ บอร์ด Arduino ใช้รุ่น Duemilanov 
ขนาดมันเล็กกระทัดรัดน่ารักเหมาะมือ ฟรุ้งฟริ้งกระดิ่งแมว 
เอ้ยย ไม่ใช่แล้ว เข้าเรื่องกันดีกว่าครับ
ก่อนอื่นผมก็ขอแนะนำ 
อุปกรณ์ ที่ใช้ในการทำการทดลองทั้งหมดตั้งแต่สัปดาห์แรกจนถึง
สัปดาห์สุดท้ายที่ต้องส่งคืน อาจารย์ครับ

อุปกรณ์ที่ใช้ได้แก่

1.Arduino Duemilanove Extended                          
2.TickTock Shield                                   
3.Ethernet Shield                                       
4.DS18B20 Waterproof Temperature Pro (ตัววัดอุณหภูมิ)      
5.Bread Board                                           
6.LED@100 + Switch@100                                 
7.BOX(กล่องพลาสติกธรรมดาสำหรับใส่อุปกรณ์)                   
8.Support and Stand                                    
9.Cable M-M (สายจั้มป์ ผู้-ผู้)                             
10.Cable M-F  (สายจั้มป์ ผู้-เมีย)                          
11.Cable F-F (สายจั้มป์ เมีย-เมีย)
12.RaspberryPi Board
13.สายLan                      
จากอุปกรณ์ดังที่กล่าวมาข้างต้นก็เพียงพอต่อการที่จะนำมาทำขนมเอ้ย มาทดลองกันได้เลยครับ หมายเหตุ อาจมีอุปกรณ์ที่เพิ่มเข้ามา และ จะอธิบายรายละเอียดของอุปกรณ์นั้น เพิ่มเติมนะครับ
Share:

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

LED Arduino

LED Arduino

Digital Output LED

สำหรับการทดลองนี้จะเป็นการทดลองต่อ
LED เข้ากับบอร์ด Arduino แล้วเขียนโปรแกรม
เพื่อสั่งให้ไฟ LED ติดดับได้ครับ
อุปกรณ์การทดลอง
1.LED
2.Arduino Duemilanove Board
3.สายจัมป์เปอร์
4.Program Arduino 1.6.9
วิธีการทดลอง
1.เปิดโปรแกรม Arduino 1.6.9
2.ทดลองใช้ code ด้านล่าง
3.ต่อวงจร ตาม pin ของบอร์ด Arduino ครับ
4.Load Source code ใส่ลงในบอร์ด
5.สามารถดูผลการทดลองได้ตามคลิปด้านบนเลยครับ

คำเตือน!:
อย่าลืมปรับ port และ บอร์ด ในโปรแกรม
ให้ตรงกับ port และ บอร์ด ที่ตนเองใช้ครับ

Source Code


void setup() {
  // initialize digital pin 13 as an output.
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(6, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(7, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(8, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(9, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(10, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(11, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(12, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(6, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(7, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(8, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(9, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(10, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(11, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(12, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}
Share:

วันเสาร์ที่ 4 มิถุนายน พ.ศ. 2559

Switch LED Arduino

Switch LED Arduino

Digital Input LED

สำหรับการทดลองนี้จะเป็นการทดลองต่อ
LED เข้ากับบอร์ด Arduino แล้วเขียนโปรแกรม
เพื่อสั่งให้เมื่อกด Switch แล้วทำให้ไฟ LED ติด
และเมื่อปล่อยมือออกให้ LED ดับ ได้ครับ
อุปกรณ์การทดลอง
1.LED
2.Arduino Duemilanove Board
3.สายจัมป์เปอร์
4.Program Arduino 1.6.9
วิธีการทดลอง
1.เปิดโปรแกรม Arduino 1.6.9
2.ทดลองใช้ code ด้านล่าง
3.ต่อวงจร ตาม pin ของบอร์ด Arduino ครับ
4.Load Source code ใส่ลงในบอร์ด
5.สามารถดูผลการทดลองได้ตามคลิปด้านบนเลยครับ

คำเตือน!:
อย่าลืมปรับ port และ บอร์ด ในโปรแกรม
ให้ตรงกับ port และ บอร์ด ที่ตนเองใช้ครับ

Source Code

void setup() {
  Serial.begin(9600); 
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {

  if(digitalRead(6)==LOW){ 
    digitalWrite(10,LOW);   // turn the LED on (HIGH is the voltage level)
    digitalWrite(11,LOW);
    digitalWrite(12,LOW);
    digitalWrite(13,LOW);
    delay(15); 
  }
  else if(digitalRead(6)==HIGH){
    digitalWrite(10,HIGH);   // turn the LED on (HIGH is the voltage level)
    digitalWrite(11,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(13,HIGH);
    delay(15); 
  }
 
}

สามารถลองประยุกต์ใช้กับอุปกรณ์อื่นได้นะครับ

Share:

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

Analog Read R potential Arduino

Analog Read R potential Arduino

Digital Input LED

สำหรับการทดลองนี้จะเป็นการทดลองต่อ
ตัวต้านทานปรับ เข้ากับ บอร์ด Arduino
เพื่อรับค่าจาก R potential แบบ Analog
หรือ ปรับค่าจากมือของเรานั่นเองครับ
อุปกรณ์การทดลอง
1.R potential (ตัวต้านทานปรับค่าได้)

2.Arduino Duemilanove Board 3.สายจัมป์เปอร์ 4.Program Arduino 1.6.9
วิธีการทดลอง
1.เปิดโปรแกรม Arduino 1.6.9
2.ทดลองใช้ code ด้านล่าง
3.ต่อวงจร ตาม pin ของบอร์ด Arduino ครับ
4.Load Source code ใส่ลงในบอร์ด
5.สามารถดูผลการทดลองได้ตามคลิปด้านบนเลยครับ
6.เมื่อเราลองหมุนตัวต้านทานแล้วให้ลองกดที่ 
Serial Monitor มีลักษณะคล้ายแว่นขยาย
7.เมื่อได้หน้าต่างขึ้นมาแล้วให้เราลองหมุน ตัวต้านทานดูจะทำให้ ค่าเปลี่ยนแปลงตามที่เราหมุนไปเรื่อยๆ
คำเตือน!: อย่าลืมปรับ port และ บอร์ด ในโปรแกรม ให้ตรงกับ port และ บอร์ด ที่ตนเองใช้ครับ

Source Code

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1);        // delay in between reads for stability
}

สามารถลองนำไปประยุกต์ใช้กับอุปกรณ์อื่นได้นะครับ

Share:

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

Tick Tock Counter EEPROM


Tick Tock Counter EEPROM

ขั้นตอนที่ 1 นำ Code ข้างล่างนี้โหลดลงบอร์ด

#include <EEPROM.h>    
#include "TM1636.h"   
TM1636 tm1636(7, 8);
int8_t disp[4];
int count = 2008;
int counter = count;
int buttonMenu = 11;
int buttonUp = 10;
int buttonDown = 9;
int voice = 6;
int temp = count ;
int sensorPin = A0;
int sensorValue = 0;
void setup()
{
  Serial.begin(9600);
  Serial.println(EEPROM.read(0), HEX);
  tm1636.init();
  pinMode(buttonMenu, INPUT_PULLUP);
  pinMode(buttonUp, INPUT_PULLUP);
  pinMode(buttonDown, INPUT_PULLUP);
  pinMode(voice, OUTPUT);
  while (!Serial) {

  }

}

void loop()
{
  disp[0] = EEPROM.read(0);
  disp[1] = EEPROM.read(1);
  disp[2] = EEPROM.read(2);
  disp[3] = EEPROM.read(3);
  tm1636.display(disp);

  if (digitalRead(buttonMenu) == 0) {
    count = 2008;
    temp = count;
    disp[0] = temp / 1000; temp = count % 1000;
    disp[1] = temp / 100;  temp = count % 100;
    disp[2] = temp / 10;   temp = count % 10;
    disp[3] = temp;
    delay(160);
    EEPROM.write(0, disp[0]);
    EEPROM.write(1, disp[1]);
    EEPROM.write(2, disp[2]);
    EEPROM.write(3, disp[3]);
    digitalWrite(voice, HIGH);
    while (buttonMenu == 0) {}
    delay(5);
    digitalWrite(voice, LOW);
    Serial.print("MonitorValue = ");
    Serial.println(count);
    tm1636.display(disp);
    delay(100);
  }

  if (digitalRead(buttonUp) == 0) {
    count = 0;
    count = count + (disp[0] * 1000);
    count = count + (disp[1] * 100);
    count = count + (disp[2] * 10);
    count = count + (disp[3] * 1);
    count++;
    temp = count;
   
    disp[0] = temp / 1000; temp = count % 1000;
    disp[1] = temp / 100;  temp = count % 100;
    disp[2] = temp / 10;   temp = count % 10;
    disp[3] = temp;
    delay(160);
    
    EEPROM.write(0, disp[0]);
    EEPROM.write(1, disp[1]);
    EEPROM.write(2, disp[2]);
    EEPROM.write(3, disp[3]);
    digitalWrite(voice, HIGH);
    delay(5);
    while (buttonUp == 0) {}
    digitalWrite(voice, LOW);
    Serial.print("MonitorValue = ");
    Serial.println(count);

    tm1636.display(disp);
    delay(100);
  }
  if (digitalRead(buttonDown) == 0) {
    count = 0;
    count = count + (disp[0] * 1000);
    count = count + (disp[1] * 100);
    count = count + (disp[2] * 10);
    count = count + (disp[3] * 1);
    count--;
    temp = count;
 
    disp[0] = temp / 1000; temp = count % 1000;
    disp[1] = temp / 100;  temp = count % 100;
    disp[2] = temp / 10;   temp = count % 10;
    disp[3] = temp;
    delay(160);
  
    EEPROM.write(0, disp[0]);
    EEPROM.write(1, disp[1]);
    EEPROM.write(2, disp[2]);
    EEPROM.write(3, disp[3]);
    digitalWrite(voice, HIGH);
    delay(5);
    while (buttonDown == 0) {}
    digitalWrite(voice, LOW);
    Serial.print("MonitorValue = ");
    Serial.println(count);
    tm1636.display(disp);
    delay(100);
  }

}
2.นำบอร์ด TickTock Shield มาประกอบร่างเข้ากับบอร์ด Arduino ดังรูปเลยค้าบบบ
3.ลองถอดสายบอร์ดออกเพื่อทดสอบว่ามีการ save ข้อมูลเข้าไปจริงไหม
4.ลองโหลดโค้ดลงบอร์ดีอกหนึ่งครั้ง เพื่อดูว่าเลขที่เรากดไปครั้งล่าสุด กำลังแสดงอยู่หรือไม่
5.ลองทดสอบกับ labView ว่าค่าที่ได้แสดงใน read String ไหม
Share:

Tick Tock Shield LED

Tick Tock Shield LED
อุปกรณ์ที่ใช้
1.Tick Tock Shield
2.Arduino Duemilanove
3.สายสำหรับโหลดข้อมูลลองบอร์ด Arduino
วิธีการทดลอง
1.นำบอร์ด Tick Tock Shield เสียบเข้ากับ
บอร์ด Arduino

2.เสียบสาย Load code ด้านล่างลง Arduino
Source code
void setup() {
    pinMode(5, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(2, OUTPUT);
}
void loop() {
  digitalWrite(5, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(3, LOW);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(5, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(5, LOW);
  digitalWrite(4, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(5, LOW);
  digitalWrite(4, LOW);
  digitalWrite(3, LOW);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(5, LOW);
  digitalWrite(4, LOW);
  digitalWrite(3, LOW);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(5, LOW);
  digitalWrite(4, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(5, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(5, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(3, LOW);
  digitalWrite(2, LOW);
  delay(100);
}
Share:

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

Labview Switch Control 8 LED


Lab Week03 HomeWork 1/3
ครับสำหรับการทำการทดลองนี้ก็คือการทดลอง ใช้บอร์ด Arduino
ควบคุมโดยโปรแกรม LabView เพื่อทดลองว่าสามารถใช้งาน
LabView ทำเป็นสวิช เพื่อควบคุม LED ผ่านบอร์ด Arduino ครับ

ขั้นตอนที่ 1 นำ Source Code โหลดลงบอร์ด

source code อย่าลืมเลือก port ให้ถูกต้องด้วยนะครับ

int led = 3;  
int led2 = 4; 
int led3 = 5;
int led4 = 6;
int led5 = 7;
int led6 = 8;
int led7 = 9;
int led8 = 10;
int inByte = 0;    
int sensorPin = A0;
int sensorValue = 0;
void setup() 
  { Serial.begin(9600);
    pinMode(led, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
    pinMode(led6, OUTPUT);
    pinMode(led7, OUTPUT);
    pinMode(led8, OUTPUT);
  }
void loop()
  { if (Serial.available() > 0)
    { inByte = Serial.read();
      if(inByte == '0') digitalWrite(led, LOW);
      if(inByte == '1') digitalWrite(led, HIGH);
      if(inByte == '2') digitalWrite(led2, LOW);
      if(inByte == '3') digitalWrite(led2, HIGH);
      if(inByte == '4') digitalWrite(led3, LOW);
      if(inByte == '5') digitalWrite(led3, HIGH);
      if(inByte == '6') digitalWrite(led4, LOW);
      if(inByte == '7') digitalWrite(led4, HIGH);
      if(inByte == '8') digitalWrite(led5, LOW);
      if(inByte == '9') digitalWrite(led5, HIGH);
      if(inByte == 'a') digitalWrite(led6, LOW);
      if(inByte == 'b') digitalWrite(led6, HIGH);
      if(inByte == 'c') digitalWrite(led7, LOW);
      if(inByte == 'd') digitalWrite(led7, HIGH);
      if(inByte == 'e') digitalWrite(led8, LOW);
      if(inByte == 'f') digitalWrite(led8, HIGH);
      }
    //sensorValue = analogRead(sensorPin); 
    //Serial.print("sensorValue = ");
    //Serial.println(sensorValue); 
    //delay(100); 
  }

ขั้นตอนที่ 2 ต่อวงจรบอร์ด Arduino Duemilanov เข้ากับวงจร LED@100 ดังรูป


ขั้นตอนที่ 3 เขียน LAB VIEW ดังภาพ


3.1 ต่อสวิทช์ ON OFF ดังภาพ

3.2 กด CTRL+E จะมีหน้าต่าง วงจร loop while ต่างๆ ของ lab view 
ไม่ต้องไปใส่ใจมาก ให้เราเข้าไปแก้ค่าที่รับส่งของ สวิทช์ ให้ตรงกับ code ด้านบน เพื่อให้มีการส่งค่ากันเกิดขึ้น และ ส่งผลให้สวิทช์ ติด หรือ ดับ
จากนั้นเราก็มาดูกันว่าผลการทดสอบเป็นอย่างไร
Share: