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

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 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



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

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

#include "LedControl.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
int melody[] = {C4,D4,E4,F4,G4,A4,B4,C5};  // ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
float beats[] ={1,1,1,1,1,1,1,1};   // ตัวแปรชนิด floating-point หรือตัวแปรที่มีจุดทศนิยม
int buzzerpin = 11;
int timestop = 70;
LedControl lc=LedControl(8,10,9,1); 

void setup()  // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น
{
  lc.shutdown(0,false);  
  lc.setIntensity(0,5); 
  lc.clearDisplay(0);  // ล้างหน้าจอ lcd
  int dl = 500;
  pinMode(buzzerpin,OUTPUT); //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต
  int numnote;
  numnote = sizeof(melody)/2;    
  for (int i=0;i<numnote;i++)     //คำสั่ง FOR เป็นคำสั่งกำหนดเงื่อนไขเป็นจำนวนครั้งที่จะทำตามชุดคำสั่งต่าง ๆ ภายใน loop เหมาะที่จะใช้กับงานประเภทที่ไม่มีการเปลี่ยนแปลง   
  {
    lc.setChar(0,7-i,'-',false);
    tone(buzzerpin, melody[i],dl*beats[i]); 
    delay(dl*beats[i]);
    digitalWrite(buzzerpin,HIGH);    //ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล
    delay(timestop);     // หน่วงเวลา
  }  
}
void loop()  // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ
{
}


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



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


มีเสียงเพลง โด เร มี ฟา ซอล ลา ที โด  เเล้ว เเสดงตัวอักษรบน  7segment




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

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

#include "LedControl.h"  // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
#include "Keypad.h"       
char keys[4][4]={            // เก็บข้อมูลที่ หน่วยความจำ 1 ไบต์
  {'7','8','9','A'},
  {'4','5','6','B'},
  {'1','2','3','C'},
  {'E','0','F','D'}};
byte rowPins[] = {7,6,5,4};
byte colPins[] = {3,2,1,0};
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,4,4);
LedControl lc=LedControl(8,10,9,1); 

void setup()    // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  
{
  lc.shutdown(0,false);  
  lc.setIntensity(0,5); 
  lc.clearDisplay(0);      
}
void loop()   // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ 
{
  char key = keypad.getKey();
  if (key != NO_KEY)    // คำสั่งในการตัดสินใจ แบบตัวเลือกเดียว โดยใช้งานร่วมกับ ==, !=, <, >เพื่อใช้ใน                                                       การ  ตัดสินใจในการหาคำ
  {
    lc.setChar(0,0,key,false);
  }

}

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


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

เเสดงตัวเลข ที่กด บน keypad

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

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

int led = 13;   // ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
int sw = 2;
void setup()  // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  
{
  Serial.begin(9600);  //ประกาศการใช้งานการสื่อสารรับส่งข้อมูลผ่าน พอร์ตRS232
  pinMode(led,OUTPUT);    //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต
  pinMode(sw,INPUT);       
}

void loop()  // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ 
{ 
  int x;
  x = digitalRead(sw);  //เป็นฟังก์ชันที่ใช้ในการอ่านค่าจากขาแบบเฉพาะเจาะจง มีค่า                                                             เป็น HIGH หรือ LOW
  Serial.print("x = ");Serial.println(x);
  digitalWrite(led,!x);    ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล

}

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



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

เมื่อกดสวิตซ์ขึ้นเลข0 เมือไม่กดสวิตซ์ ขึ้นเลข1 บน Virtual Terminal มีไฟ led ขึ้นทุกครั้งที่กด

สวิตซ์

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

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


Code

int led = 10;   // ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
void setup()  // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  
{
  Serial.begin(9600);  //ประกาศการใช้งานการสื่อสารรับส่งข้อมูลผ่าน พอร์ตRS232
  pinMode(led,OUTPUT);   //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต
}
void loop()  // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ 
{
  int x,y; 
  x = analogRead(A0);      // เขียนค่าอนาล็อกที่ขา A0
  y = map(x,0,1023,0,255);   //เป็นฟังก์ชันที่ใช้ในการจับคู่หมายเลขจากช่วงหนึ่งไปเป็นช่วงอื่นๆ 
  Serial.print("x = ");Serial.println(x);
  Serial.print("y = ");Serial.println(y);  
  analogWrite(led,y);   // ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาอนาลอค

}

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


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


อ่านค่า R เเล้วเเสดงผลที่ Vartual Terminal สามารถปรับค่า R ได้

led กระพริบเมื่อตอนทำงาน


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

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

#include "LedControl.h"         // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
LedControl lc=LedControl(5,7,6,1); 

void show4digit(int num)     // การเขียนฟังก์ชั่นขึ้นมาโดยตั้งชื่อว่า  show4digit
{
   int seg1,seg2,seg3,seg4;   // ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
  seg1 = ((num%1000)%100)%10;
  seg2 = ((num%1000)%100)/10;
  seg3 = (num%1000)/100;
  seg4 = num/1000;  
  lc.setDigit(0,0,seg1,false); 
  if (num>=10)
    lc.setDigit(0,1,seg2,false);    
    if (num>=100)  // คำสั่งในการตัดสินใจ แบบตัวเลือกเดียว โดยใช้งานร่วมกับ ==, !=, <, >เพื่อใช้ในการ                                                   ตัดสินใจในการหาคำ
        lc.setDigit(0,2,seg3,false);
    if (num>=1000)
        lc.setDigit(0,3,seg4,false);   
    delay(300);       //  การหน่วงเวลา 
}
void setup()  // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น
{
    Serial.begin(9600);   //ประกาศการใช้งานการสื่อสารรับส่งข้อมูลผ่าน พอร์ตRS232
    lc.shutdown(0,false);  
    lc.setIntensity(0,5); 
    lc.clearDisplay(0);       // ล้างหน้าจอ lcd
}
void loop()    // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ 
{
    int num;       // ตัวแปร  num
    num = analogRead(A0);     // เขียนค่าอนาล็อกที่ขา A0
    Serial.print("analogRead=");Serial.println(num);    
    lc.clearDisplay(0);
    show4digit(num);

}

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


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

อ่านค่าตัว R เเล้วขึ้นค่าบน 7segment สามรถปรับค่า R ได้