วันอาทิตย์ที่ 23 กันยายน พ.ศ. 2561

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 14

                              ใบรายงานผลการปฏิบัติงาน
Code

#include <LedControl.h>    // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 11   //  ใช้เพื่อตั้งชื่อค่าคงที่
OneWire oneWire(ONE_WIRE_BUS);     // ฟังก์ชั่นพิเศษของ OneWire.h
DallasTemperature sensors(&oneWire);
float Tfloat;    // ตัวแปรชนิด floating-point หรือตัวแปรที่มีจุดทศนิยม
long Tint;    เป็นตัวแปรจำนวนเต็มแบบขยายโดยไม่มีจุดทศนิยม เก็บค่าแบบ 32 bit 
LedControl lc=LedControl(8,10,9,1); 

void show6digit(int num)    // การเขียนฟังชังก์ชั่นขึ้นมาโดยใช้ชื่อว่า show6digit
{
  int seg1,seg2;
  seg2 = (((((num%100000)%10000)%1000)%100)/10);
  seg1 = (((((num%100000)%10000)%1000)%100)%10);
  lc.setDigit(0,0,seg1,false); 
  if (num>=10)
      lc.setDigit(0,1,seg2,false);
  delay(300);
}
void setup(void)      // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น
{
  sensors.begin(); // เริ่มการทำงานของเซ็นเซอร์
  lc.shutdown(0,false);  
  lc.setIntensity(0,5); 
  lc.clearDisplay(0); // ล้างหน้าจอ

void loop(void)     // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ
{
  sensors.requestTemperatures(); 
  Tfloat = sensors.getTempCByIndex(0);
  Tint = int(Tfloat);
  lc.clearDisplay(0);
  show6digit(Tint);
}


ภาพจำลองการทำงานด้วยโปรแกรม Proteus



อธิบายการทำงานของโปรแกรม

เเสดงผล การทำงานของ ic วัด อุณหภูมิ  เเละเเสดงผลบน 7segment สามารถปรับค่า ic ได้


ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 13

                             ใบรายงานผลการปฏิบัติงาน
Code

#include <LiquidCrystal_I2C.h>    // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
LiquidCrystal_I2C lcd(0x27,16,2);  //ฟังก์ชั่นของ lcd กำหนดให้ ตัวอักษรที่16 แถวที่2
int PIRpin = 8;   /ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
void setup()   // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  

  lcd.begin(); // ไฟเเบคไลท์  
  pinMode(PIRpin,INPUT);   //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต
  lcd.home();  
  lcd.print("Waiting for PIR");
  delay(10000);       // หน่วงเวลา
  lcd.clear();            // ล้างหน้าจอ
}
void loop()    // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ 

  int x = digitalRead(PIRpin);
  lcd.home();      // ใช้ปรับให้เคเซอร์กลับไปอยู่ที่ตำแหน่งแรกด้านซ้าย
  lcd.print("PIR = ");
  lcd.print(x);
  delay(100);
}


ภาพจำลองการทำงานด้วยโปรแกรม Proteus

อธิบายการทำงานของโปรแกรม

เมื่อกดให้ PIR งานขึ้นค่าเเสดงผลบน LCD เเสดงตัวอักษรเเละตัวเลข


ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 12

                            ใบรายงานผลการปฏิบัติงาน
Code

#include <LiquidCrystal_I2C.h>  // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
LiquidCrystal_I2C lcd(0x27,16,2);  //ฟังก์ชั่นของ lcd กำหนดให้ ตัวอักษรที่16 แถวที่2
int triggerPin = 13; // ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
int echoPin = 12;
long duration,distCM,temp_distCM=0;  // เป็นตัวแปรจำนวนเต็มแบบขยายโดยไม่มีจุดทศนิยม เก็บค่าแบบ 32 bit 
void setup()     // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น 

  lcd.begin();  // การทำงานเริ่มต้นของ lcd 
  lcd.setCursor(0,0);  //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว0
  lcd.print("Dist =      cm");     
  pinMode(triggerPin,OUTPUT);   //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต
  pinMode(echoPin,INPUT);
}
void loop() 
{
  digitalWrite(triggerPin,LOW);    //ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล
  delayMicroseconds(2);   // หน่วงเวลา
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58; 
  if (temp_distCM != distCM)  // คำสั่งในการตัดสินใจ แบบตัวเลือกเดียว โดยใช้งานร่วมกับ ==, !=, <, >เพื่อใช้ใน                                                       การ  ตัดสินใจในการหาคำ
  {
    lcd.setCursor(7,0); //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่7เเถว0
    lcd.print("    ");
  }
  lcd.setCursor(7,0);   
  lcd.print(distCM);
  temp_distCM = distCM;   
  delay(300);    // หน่วงเวลา

}

ภาพจำลองการทำงานด้วยโปรแกรม Proteus

อธิบายการทำงานของโปรแกรม

วัดระยะโดยเซ็นเซอร์ ULTRASONIC มีเสียงการทำงาน เเล้วเเสดงผมบน LCD ว่าระยะ กี่ ซม.

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 11

                            ใบรายงานผลการปฏิบัติงาน
Code

#include <LiquidCrystal_I2C.h>    // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
LiquidCrystal_I2C lcd(0x27,16,2); //ฟังก์ชั่นของ lcd กำหนดให้ ตัวอักษรที่16 แถวที่2
int aval,temp_aval=0; /ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
void setup()  // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  
{
  lcd.begin();    // การทำงานเริ่มต้นของ lcd 
  lcd.setCursor(0,0); //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว0
  lcd.print("aval = ");     
}
void loop() 
{
   aval = analogRead(A0);   
   if (temp_aval != aval)   // คำสั่งในการตัดสินใจ แบบตัวเลือกเดียว โดยใช้งานร่วมกับ ==, !=, <, >เพื่อใช้ใน                                                       การ  ตัดสินใจในการหาคำ
   {
      lcd.setCursor(7,0);     //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่7เเถว0
      lcd.print("    ");
   }
   lcd.setCursor(7,0);
   lcd.print(aval);
   temp_aval = aval;
   delay(300);   // หน่วงเวลา
}


ภาพจำลองการทำงานด้วยโปรแกรม Proteus

อธิบายการทำงานของโปรแกรม

เเสดงผลตาม ตัวSharp Distance Sensor เเสดงระยะทางเเล้วเเสดงผล ที่ lcd

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 10

                              ใบรายงานผลการปฏิบัติงาน
Code

#include <LiquidCrystal_I2C.h>   // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
#include "Keypad.h"       

LiquidCrystal_I2C lcd(0x27,16,2); //ฟังก์ชั่นของ lcd กำหนดให้ ตัวอักษรที่16 แถวที่2
int aVal=0,tempaVal=0;    // ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
void setup()   // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  
{
  lcd.begin();   // การทำงานเริ่มต้นของ lcd 
}
void loop()  // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ 
{
  aVal = analogRead(A0);  // เขียนค่าอนาล็อกที่ขา a0

  if (tempaVal != aVal) // คำสั่งในการตัดสินใจ แบบตัวเลือกเดียว โดยใช้งานร่วมกับ ==, !=, <, >เพื่อใช้ใน                                                       การ  ตัดสินใจในการหาคำ
  {
    lcd.clear();  // ล้างหน้าจอ lcd
    lcd.setCursor(0,0);  //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว0
    lcd.print("LDR");  // เเสดงตัวอักษร
    lcd.setCursor(0,1); //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว1
    lcd.print(aVal); 
    delay(300);  //หน่วงเวลา
  }
  tempaVal = aVal;
}

ภาพจำลองการทำงานด้วยโปรแกรม Proteus


อธิบายการทำงานของโปรแกรม

ขึ้นเเสดงคำว่า LDR พร้อมเเสดงค่าความต้านทาน สามารปรับค่า LDR ได้  แสดงผลที่ LCD

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 9

                             ใบรายงานผลการปฏิบัติงาน
Code

#include <Wire.h>  // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
#include <LiquidCrystal_I2C.h>  
LiquidCrystal_I2C lcd(0x27,16,2); //ฟังก์ชั่นของ lcd กำหนดให้ ตัวอักษรที่16 แถวที่2
void setup()  // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  
{
  lcd.backlight(); // ไฟเเบคไลท์  
  lcd.begin();  // การทำงานเริ่มต้นของ lcd 
}
void loop()  // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ
{
  lcd.setCursor(0,0);    //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว0
  lcd.print("Hello LCD I2C");  // เเสดงตัวอักษร
  lcd.setCursor(0,1);      //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว1
  lcd.print("YUTTASIN");
}


ภาพจำลองการทำงานด้วยโปรแกรม Proteus



อธิบายการทำงานของโปรแกรม

มีข้อความขึ้นคำว่า Hello LCD I2C เเถวเเรก
มีข้อความขึ้นคำว่า YUTTASIN       เเถวสอง
เเสดงที่ LCD
                           



ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 8

                              ใบรายงานผลการปฏิบัติงาน
Code
#include "LedControl.h"   // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
#include "Keypad.h"
#define C4  262     //  ใช้เพื่อตั้งชื่อค่าคงที่
#define D4  294
#define E4  330
#define F4  349
#define G4  392
#define A4  440
#define B4  494
#define C5  523 
char keys[4][4]={   //ข้อมูลชนิดอักขระ ใช้เนื้อที่ 1 byte
  {7,8,9,0},
  {4,5,6,0},
  {1,2,3,0},
  {0,0,0,0}};
byte rowPins[] = {7,6,5,4};
byte colPins[] = {3,2,1,0};
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,4,4);
int melody[] = {C4,D4,E4,F4,G4,A4,B4,C5};  /ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
int dl = 300;
int buzzerpin = 11;   
LedControl lc=LedControl(8,10,9,1);   

void setup()   // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  
{
  lc.shutdown(0,false);  
  lc.setIntensity(0,5); 
  lc.clearDisplay(0);
  pinMode(buzzerpin,OUTPUT); //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต
  digitalWrite(buzzerpin,HIGH); // ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล
}
void loop()  // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ 
{
  char key = keypad.getKey();
  if ((key != NO_KEY) && (key < 9))  // คำสั่งในการตัดสินใจ แบบตัวเลือกเดียว โดยใช้งานร่วมกับ
                                                                             ==, !=, <, >เพื่อใช้ใน การ  ตัดสินใจในการหาคำ
  {
    lc.setDigit(0,0,key,false);
    tone(buzzerpin, melody[key-1],dl);
    delay(dl);    //  หน่วงเวลา
    digitalWrite(buzzerpin,HIGH);   // ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล
  }

}

ภาพจำลองการทำงานด้วยโปรแกรม Proteus



อธิบายการทำงานของโปรแกรม

มีเสียงตอนกด keypad เเละขึ้น ตัวอักษรบน 7segment