วันศุกร์ที่ 28 กันยายน พ.ศ. 2561

Flowchart

สัญลักษณ์ Flowchart ความหมายและวิธีใช้เขียนผังงาน

สัญลักษณ์ Flowchart ความหมายและวิธีใช้เขียนผังงาน
สัญลักษณ์ Flowchart คือ รูปภาพที่ใช้แทนความหมายการทำงานในลักษณะต่างๆ ภายในผังงาน (Flowchart)
Dec 01, 2017
แก้ไขล่าสุด มีผู้อ่าน 587,894  |   FLOWCHART


สัญลักษณ์ Flowchart คือ รูปภาพที่ใช้แทนความหมายการทำงานในลักษณะต่างๆ ภายในผังงาน (Flowchart) ประกอบไปด้วย การเริ่มต้น (Start), การจบ (End), การกระทำ (Process), การนำเข้าข้อมูล (Input), การแสดงผลข้อมูล (Output), การตัดสินใจ (Decision), คำอธิบาย (Annotation), จุดเชื่อมต่อ (Connector), ทิศทางการทำงาน (Direction Flow) 
สัญลักษณ์เหล่านี้เมื่อถูกนำมาเชื่อมต่อกัน จะกลายเป็น "ผังงาน (Flowchart)" ที่แสดงลำดับขั้นตอนการทำงานเพื่อ
  • เป็นเครื่องมือในการจัดลำดับความคิด
  • เห็นลำดับขั้นตอนการทำงานที่ชัดเจน
มาดูกันว่าสัญลักษณ์ต่างๆ มีความหมายว่าอย่างไรกันบ้างครับ

สัญลักษณ์ Flowchart (ผังงาน)

รูปภาพสัญลักษณ์ความหมายของสัญลักษณ์
Start / End
การเริ่มต้นหรือจบ Flowchart (Start หรือ End)
Process
การกระทำ (Process) ถูกใช้เพื่อแสดงที่การกระทำใน Flowchart
ตัวอย่างเช่น "กำหนด 1 ให้ X", "บันทึกการเปลี่ยนแปลง", "แทนที่ X ด้วยค่า 10"
Input / Output

ส่วนการนำเข้าข้อมูลหรือแสดงผลข้อมูล (Input / Output) 
ตัวอย่างเช่น "นำเข้าค่า X จากผู้ใช้", "แสดงผลข้อมูล X"
Decision
การตัดสินใจ (Decision)
นำมาใช้เพื่อพิจารณา True หรือ False เส้นการทำงานที่ออกจาก Decision จะมีสองเส้นเสมอ
เส้นแรกเมื่อเป็น True และอีกเส้นเมื่อเป็น False
Annotation
คำอธิบายประกอบ (Annotation) 
สัญลักษณ์นี้ถูกนำมาใช้เพื่อเขียนคอมเม้นต์ให้กับ Flowchart
Connector

จุดเชื่อมต่อ (Connector) 
ใช้รวมเส้นการทำงานของ Flowchart ให้ออกไปเหลือเพียงเส้นเดียว
Direction Flow
ทิศทางการทำงาน (Direction Flow)
ใช้เชื่อมต่อสัญลักษณ์ต่างๆ เพื่อแสดงการไหลการงาน

วิธีใช้เขียนผังงาน

หลักการนำสัญลักษณ์ Flowchart ต่างๆ มาเขียนผังงาน
  1. ผังงาน (Flowchart) ต้องมีจุดเริ่มต้น (Start) และจุดสิ้นสุด (End)
  2. สัญลักษณ์แต่ละรูปจะถูกเชื่อมต่อด้วยทิศทางการทำงาน (Direction Flow) เพื่อบอกว่าเมื่อทำงานนี้เสร็จต้องไปทำงานไหนต่อไป
  3. การทำงานจะต้องเริ่มต้นที่จุดเริ่มต้น (Start) และจบที่จุดสิ้นสุด (End) เท่านั้น

ตัวอย่างการใช้สัญลักษณ์ Flowchart ในการเขียนผังงานระบบ

 

ตัวอย่าง ผังงานการลาป่วย 


อธิบายผังงานลาป่วย
  1. เริ่มต้น - Start
  2. ไปทำงาน - Process
  3. ฉันป่วยหรือไม่ ? - Decision ถ้าไม่ป่วยก็จบเลย - False
  4. ใช่ ฉันป่วย - True
  5. กรอกใบลาป่วย - Process
  6. ส่งอีเมล์ให้หัวหน้า - Process
  7. นอนพักผ่อน - Process
  8. จบ - End

ตัวอย่างการเขียนแผนผังงานเดินทางไปทำงาน





เป็นไงบ้างครับ พื้นฐานการใช้สัญลักษณ์  Flowchart แบบง่ายๆ สามารถนำไปประยุกต์ใช้ในการเขียนผังงานอื่นๆ ได้ครับ ในบทความอื่นๆ เดี๋ยวเราจะมาลงลึกไปในรายละเอียดของผังงานแบบต่างๆ กัน

งานในคอม 18

#include <SoftwareSerial.h>
#include <DHT11.h>
//=============================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x3F, 16, 2);
SoftwareSerial ArduinoSerial(3, 2); // RX, TX
//=============================================
int SW_ON = 4,SW_OFF = 5,pin=6;//กำหนดขา INPUT
int Sun = 9,CSun = 0,Relay1 = 12, Relay2 = 11; //กำหนดขา OUTPUT 
int ATL = A0,ATH = A1;//กำหนดขา Analog
int VTL1 = 0,VTH1 = 0,TL = 0,TH =0,VRHL = 50,VRHH = 80;
DHT11 dht11(pin);
//=============================================
void setup()
{
  lcd.begin();
  Serial.begin(115200);
  ArduinoSerial.begin(4800);
  while (!Serial){
    ;
    }
  //=====================================================
  lcd.setCursor(0, 0);lcd.print("Elec Pattayatech");
  lcd.setCursor(0, 1);lcd.print("Smart Farm 2016 ");
  delay(5000);
  //====================================================
  pinMode(Relay1, OUTPUT);pinMode(Relay2, OUTPUT);   
  pinMode(SW_ON, INPUT); pinMode(SW_OFF, INPUT); pinMode(Sun, INPUT); 
  digitalWrite(Relay1, HIGH);digitalWrite(Relay2, HIGH);
  lcd.setCursor(0, 0);lcd.print("                ");
  lcd.setCursor(0, 1);lcd.print("                "); 
}
//=============================================================
void loop()
{
  while (ArduinoSerial.available() > 0) {
  float val = ArduinoSerial.parseFloat();
  if (ArduinoSerial.read() == '\n') {
  if (val == 10) {
  digitalWrite(13, 1);
  } else if (val == 11) {
  digitalWrite(13, 0);
  }
  Serial.println(val);
  }
  }
  delay(100);
  //========ปรับค่าอุณหภูมิอ้งอิง====================================
  CSun = digitalRead(Sun);
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
  VTL1 = analogRead(ATL);
  VTH1 = analogRead(ATH);
  TL = map(VTL1,0,1023,10,30);
  TH = map(VTH1,0,1023,25,45);
  Serial.print("TL :");Serial.print(TL);Serial.println("*C");
  Serial.print("TH :");Serial.print(TH);Serial.println("*C");
  //===========================================================
    int Stemp =(int)(temp);int Shumi=(int)(humi);//ตัดทศนิยม
    Serial.print("temp :");Serial.print(Stemp);Serial.println("*C");
    Serial.print("humidity :");Serial.print(Shumi);Serial.println("%");
    Serial.print("SUN :");Serial.println(CSun);//Serial.println();
    //===================================================
    lcd.setCursor(0, 0);lcd.print("TL:");lcd.print(TL);
    lcd.setCursor(6, 0);lcd.print("TH:");lcd.print(TH);
    lcd.setCursor(12, 0);lcd.print("S1:");lcd.print(!CSun);
    lcd.setCursor(0, 1);lcd.print("TN:");lcd.print(Stemp);
    lcd.setCursor(6, 1);lcd.print("RH:");lcd.print(Shumi);
    lcd.setCursor(12, 1);lcd.print("P1:0");lcd.print(Shumi);
    delay(1000);
    //===================================================
   //=======ควบคุมอุณหภูมิ===========================
   if(temp < TL && temp < TH ){
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        delay(100);
        digitalWrite(Relay2, LOW);//หลอดไฟทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(temp > TL && temp > TH){
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:0");
        delay(100);
        digitalWrite(Relay1, LOW);//ปั๊มน้ำทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(temp > TL && temp < TH){
       //=======ควบคุมความชื้น===========================
      if(humi < VRHL && humi < VRHH){
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:0");
        delay(100);
        digitalWrite(Relay1, LOW);//ปั๊มน้ำทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(humi > VRHL && humi > VRHH){
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        delay(100);
        digitalWrite(Relay2, LOW);//หลอดไฟทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(humi > VRHL && humi < VRHH){
        //delay(1000);
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน 
        lcd.setCursor(12, 0);lcd.print("L1:0");
        //หน่วงเวลา 1 นาที       
        }
     //=======ENDควบคุมความชื้น===========================     
        }
     //=======ENDควบคุมอุณหภูมิ===========================
  }
  else
  {
    Serial.println();Serial.print("Error No :");
    Serial.print(err);Serial.println();   
  }
 delay(DHT11_RETRY_DELAY);
}

งานในคอม 17

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int aVal=0,tempaVal=0;
const int SW_ON = 2;
const int led_ON =  13; int CSW_ON = 0; int C_CSW_ON =0;
int Relay1=12,Relay2=11,Relay3=10,Relay4=9;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
  lcd.backlight();
  lcd.begin();
  Serial.begin(9600);
  pinMode(led_ON, OUTPUT);pinMode(SW_ON, INPUT);
  pinMode(Relay1,OUTPUT);pinMode(Relay2,OUTPUT);
  pinMode(Relay3,OUTPUT);pinMode(Relay4,OUTPUT);
//
  digitalWrite(Relay1,HIGH);digitalWrite(Relay2,HIGH);
  digitalWrite(Relay3,HIGH);digitalWrite(Relay4,HIGH);
  lcd.setCursor(0,0);
  lcd.print("Project2017");
  lcd.setCursor(0,1);
  lcd.print("standby");
}
//END Setup
void loop() {
  CSW_ON = digitalRead(SW_ON);
  sensorValue = analogRead(sensorPin);//Serial.println(sensorValue);
  //=======================================================================
  int c_sensorValue1 = map(sensorValue,0,1023,0,255);
  //Serial.print("c_sensorValue1 = ");Serial.println(c_sensorValue1);
  int c_sensorValue2 = map(sensorValue,0,1023,255,0);
  //Serial.print("c_sensorValue2 = ");Serial.println(c_sensorValue2);
  //=======================================================================
  //check SW_ON
  if (CSW_ON == LOW) { delay(1000);
    lcd.clear();
    C_CSW_ON++;
      Serial.print("C_CSW_ON = ");Serial.println(C_CSW_ON);
    //OPEN Project
    digitalWrite(led_ON, HIGH);
  //END check SW_ON
    if(C_CSW_ON == 1){
    lcd.setCursor(0,0);
    lcd.print("Power On ");
    delay(1000);
    lcd.clear();
    lcd.print("Power On ");
    delay(1000);
    lcd.clear();
    }
  }
  if(C_CSW_ON == 1){//OPEN PROJECT
    digitalWrite(led_ON, HIGH);
    //delay(1000);
    digitalWrite(Relay1, HIGH);
    //ตรวจสอบค่า VR================
      //lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(c_sensorValue1);
      lcd.print(" ");
      //==============================
      if(c_sensorValue1 >= 150){
      digitalWrite(Relay2, LOW);
      }else{
        digitalWrite(Relay2, HIGH);
        }
      //=============================
    //RelaySTART();
    }else{//OFF PROJECT
    lcd.setCursor(0,0);
    //lcd.print("Power Off");
    lcd.setCursor(0,1);
    lcd.print("standby");
    digitalWrite(led_ON, LOW); C_CSW_ON = 0;
    RelaySTOP();
    }
  }//END Loop
//======โปรแกรมย่อย==========
void RelaySTOP(){
digitalWrite(Relay1,HIGH);digitalWrite(Relay2,HIGH);
digitalWrite(Relay3,HIGH);digitalWrite(Relay4,HIGH); 
  }
void RelaySTART(){
digitalWrite(Relay1,LOW);digitalWrite(Relay2,LOW);
digitalWrite(Relay3,LOW);digitalWrite(Relay4,LOW);

งานในคอม 16

#include <Stepper.h>
#include "Keypad.h"
#define STEP_ANGLE_4STEP 32 //360/11.25 degree
#define STEP_OUT_WITH_GEAR 2048 //32*64
Stepper stepper(STEP_ANGLE_4STEP,8,10,9,11);
char keys[4][4]={
  {'7','8','9','A'},
  {'4','5','6','B'},
  {'1','2','3','C'},
  {'*','0','#','D'}};
byte rowPins[] = {7,6,5,4};
byte colPins[] = {3,2,1,0};
int speedmotor = 400;
int dirmotor = 1;
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,4,4);
void setup()
{
}
void loop()
{
  char key = keypad.getKey();
  if (key != NO_KEY)
  {
        if (key == '1')
            speedmotor = 400;
        if (key == '2')
            speedmotor = 700;
        if (key == '3')
            speedmotor = 1000; 
        if (key == 'A')
            dirmotor = 1;
        if (key == 'B')
            dirmotor = -1;   
        if (key == 'C')
            dirmotor = 0;
  }
  stepper.setSpeed(speedmotor);
  stepper.step(dirmotor);
}

งานในคอม 15

#include <LedControl.h>
#include <DHT11.h>
int pin=4;
DHT11 dht11(pin);
LedControl lc=LedControl(8,10,9,1);
// Pin 8->DIN, 10->CLK, 9->CS(LOAD), 1 = No.of devices
void show2digit(int h,int t)
{
  int seg1,seg2,seg3,seg4;
  seg1 = h%10;
  seg2 = h/10;
  lc.setDigit(0,4,seg1,false);
  lc.setDigit(0,5,seg2,false);
  seg3 = t%10;
  seg4 = t/10;
  lc.setDigit(0,0,seg3,false);
  lc.setDigit(0,1,seg4,false);
  delay(300);
}
void setup()
{
  Serial.begin(9600);
  while (!Serial) {
      ; // wait for serial port to connect. Needed for Leonardo only
    }
  lc.shutdown(0,false); 
  lc.setIntensity(0,5);
  lc.clearDisplay(0);
}
void loop()
{
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    Serial.print("temperature:");
    Serial.print(temp);
    Serial.print(" humidity:");
    Serial.print(humi);
    Serial.println();
   
  }
  else
  {
    Serial.println();
    Serial.print("Error No :");
    Serial.print(err);
    Serial.println();   
  }
  lc.clearDisplay(0);
  show2digit(humi,temp);
}

งานในคอม 14

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,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()
{
  int x = digitalRead(PIRpin);
  lcd.home();
  lcd.print("PIR = ");
  lcd.print(x);
  delay(100);
}

งานในคอม 13

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,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()
{
  int x = digitalRead(PIRpin);
  lcd.home();
  lcd.print("PIR = ");
  lcd.print(x);
  delay(100);
}

งานในคอม 12

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int aVal=0,tempaVal=0;
void setup()
{
  lcd.begin();
}
void loop()
{
  aVal = analogRead(A0);

  if (tempaVal != aVal)
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("LDR");
    lcd.setCursor(0,1);
    lcd.print(aVal);
    delay(300);
  }
  tempaVal = aVal;
}

งานในคอม 11

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int aval,temp_aval=0;
void setup()
{
  lcd.begin();
  lcd.setCursor(0,0);
  lcd.print("aval = ");
}
void loop()
{
   aval = analogRead(A0);
   if (temp_aval != aval)
   {
      lcd.setCursor(7,0);
      lcd.print("    ");
   }
   lcd.setCursor(7,0);
   lcd.print(aval);
   temp_aval = aval;
   delay(300);
}

งานในคอม 10

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int aVal=0,tempaVal=0;
void setup()
{
  lcd.begin();
}
void loop()
{
  aVal = analogRead(A0);

  if (tempaVal != aVal)
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("LDR");
    lcd.setCursor(0,1);
    lcd.print(aVal);
    delay(300);
  }
  tempaVal = aVal;
}

งานในคอม 9

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
  lcd.backlight();
  lcd.begin();//LiquidCrystal_I2C
}
void loop()
{
  lcd.setCursor(0,0);
  lcd.print("Hello LCD I2C");
  lcd.setCursor(0,1);
  lcd.print("Pattayatech");
}

งานในคอม 8

#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]={
  {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);
// Pin 8->DIN, 10->CLK, 9->CS(LOAD), 1 = No.of devices
void setup()
{
  lc.shutdown(0,false); 
  lc.setIntensity(0,5);
  lc.clearDisplay(0);
  pinMode(buzzerpin,OUTPUT);
  digitalWrite(buzzerpin,HIGH);
}
void loop()
{
  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);
  }

งานในคอม 7

#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};
int buzzerpin = 11;
int timestop = 70;
LedControl lc=LedControl(8,10,9,1);
// Pin 8->DIN, 10->CLK, 9->CS(LOAD), 1 = No.of devices
void setup()
{
  lc.shutdown(0,false); 
  lc.setIntensity(0,5);
  lc.clearDisplay(0);
  int dl = 500;
  pinMode(buzzerpin,OUTPUT);
  int numnote;
  numnote = sizeof(melody)/2; 
  for (int i=0;i<numnote;i++)
  {
    lc.setChar(0,7-i,'-',false);
    tone(buzzerpin, melody[i],dl*beats[i]);
    delay(dl*beats[i]);
    digitalWrite(buzzerpin,HIGH);
    delay(timestop);
  }
}
void loop()
{
}

งานในคอม 6

#include "LedControl.h"
#include "Keypad.h"
char keys[4][4]={
  {'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);
// Pin 8->DIN, 10->CLK, 9->CS(LOAD), 1 = No.of devices
void setup()
{
  lc.shutdown(0,false); 
  lc.setIntensity(0,5);
  lc.clearDisplay(0);     
}
void loop()
{
  char key = keypad.getKey();
  if (key != NO_KEY)
  {
    lc.setChar(0,0,key,false);
  }
}

งานในคอม 5

int led = 13;
int sw = 2;
void setup()
{
  Serial.begin(9600);
  pinMode(led,OUTPUT);
  pinMode(sw,INPUT);     
}

void loop()
{
  int x;
  x = digitalRead(sw);
  Serial.print("x = ");Serial.println(x);
  digitalWrite(led,!x); 
}

งานในคอม 4

int led = 10;
void setup()
{
  Serial.begin(9600);
  pinMode(led,OUTPUT);   
}
void loop()
{
  int x,y;
  x = analogRead(A0);
  y = map(x,0,1023,0,255);
  Serial.print("x = ");Serial.println(x);
  Serial.print("y = ");Serial.println(y); 
  analogWrite(led,y);
}

งานในคอม 3

#include "LedControl.h"
LedControl lc=LedControl(5,7,6,1);
// Pin 5->DIN, 7->CLK, 6->CS(LOAD), 1 = No.of devices
void show4digit(int num)
{
   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);
    lc.shutdown(0,false); 
    lc.setIntensity(0,5);
    lc.clearDisplay(0);     
}
void loop()
{
    int num;
    num = analogRead(A0);
    Serial.print("analogRead=");Serial.println(num);
    lc.clearDisplay(0);
    show4digit(num);
}

งานในคอม 2

int led1 = 7;int led2 = 6;int led3 = 5;int led4 = 4;
void setup()
{
    pinMode(led1,OUTPUT);pinMode(led2,OUTPUT);
    pinMode(led3,OUTPUT);pinMode(led4,OUTPUT);
}
void loop()
{
    digitalWrite(led1,HIGH);digitalWrite(led2,LOW);
    digitalWrite(led3,LOW);digitalWrite(led4,LOW);
    delay(1000);
    digitalWrite(led1,LOW);digitalWrite(led2,HIGH);
    digitalWrite(led3,LOW);digitalWrite(led4,LOW);
    delay(1000);
    digitalWrite(led1,LOW);digitalWrite(led2,LOW);
    digitalWrite(led3,HIGH);digitalWrite(led4,LOW);
    delay(1000);
    digitalWrite(led1,LOW);digitalWrite(led2,LOW);
    digitalWrite(led3,LOW);digitalWrite(led4,HIGH);
    delay(1000);
}


งานในคอม 1

int LED =13;  // ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
void setup()  // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  { pinMode (LED,OUTPUT);   //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต}
void loop() // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ { digitalWrite(LED,HIGH);    //ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล delay(1000); digitalWrite(LED,LOW); delay(1000);     //  การหน่วงเวลา 
}

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

มินิโปรเจค

มินิโปรเจค

เปิด-ปิด ไฟ 220V AC ด้วย แอพ Blynk




 Blynk Application เป็นโปรแกรมบนมือถือที่ทำให้เราสร้างหน้าต่างควบคุมหรือแสดงผลเชื่อมต่อกับพวกไมโครคอนโทรเลอร์
                    
                 รูป Blynk Application

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

1. Arduino UNO R3
2. Relay Module
3. หลอดไฟ 220V AC
4. โทรโทรศัพท์มือ​
5. Notbook
การต่อวงจร ระหว่าง UNO + Relay + หลอดไฟ 200V AC


การต่อวงจร ระหว่าง Relay กับ Arduino UNO
ไปที่ Play Store ค้นหา Blynk

ติดตั้ง เหมือน App ทั่วๆไป


เปิด Blynk Application ขึ้นมา

-> Create New Account




กรอก อีเมล และ พาสเวิด -> Sign Up




-> New Project




เลือก DEVICE



เลือกเป็น Arduino UNO

เลือก connection type เป็น USB




ตั้งชื่อ Project ในตัวอย่างชื่อ led-v1 -> Create


โปรกรม จะส่ง Auth Toke ไปที่ อีเมล ที่เรากรอกไว้ -> OK

โดยทุกๆครั้งที่เริ่มสร้างโปรเจคใหม่ AUTH TOKEN จะถูกเปลี่ยนใหม่เสมอ ซึ่ง KEY นี้เองที่เป็นเสมือนกุญแจสำหรับเชื่อมต่อ


คลิก เครื่องหมาย +

คลิก เพิ่ม Button




จะมี ปุ่ม BUTTON เพิ่มเข้ามาที่หน้าจอ แล้วจึง คลิกที่ BUTTON เพื่อตั้งค่า


เลือก เป็นแบบ SWITCH แล้ว คลิก ที่ PIN


Select pin -> Digital -> D7 -> CONTINUE

BUTTON จะอยู่ริมซ้ายมือบน



เพื่อความสวยงาม ให้ ลาก BUTTON ไว้กลางหน้าจอ


ไปที่

http://www.blynk.cc/getting-started/

ดาวน์โหลด ไลบรารี่ Blynk





เปิด โปรแกรม Arduino IDE จากนั้นให้ทำการเพิ่ม ไลบรารี่ Blynk  ให้กับ Arduino (IDE) ของเรา
การเพิ่ม ไลบรารี่ Blynk ให้กับ Arduino (IDE) ของเรา ตามรูป
เลือกไฟล์ ไลบรารี่ blynk-library-0.4.8.ZIP ที่เรา ดาวน์โหลดมาอยู่ในคอมพิวเตอร์ของเรา จากนั้นคลิก Open โปรแกรม จะเพิ่ม ไลบรารี่ Blynk เข้าสู่ Arduino (IDE) ของเรา

เมื่อเพิ่มเสร็จแล้วไปที่ File -> Eamples -> Blynk -> Boards_USB_Serial -> Arduino_Serial_USB



แก้ไข YourAuthToken ที่เราได้รับจาก อีเมล

ที่เราได้รับจาก อีเมล


เมื่อแก้ไขแล้ว อัพโหลดโค้ด ไปยัง  Arduino UNO



/*************************************************************
  Download latest Blynk library here:
    https://github.com/blynkkk/blynk-library/releases/latest

  Blynk is a platform with iOS and Android apps to control
  Arduino, Raspberry Pi and the likes over the Internet.
  You can easily build graphic interfaces for all your
  projects by simply dragging and dropping widgets.

    Downloads, docs, tutorials: http://www.blynk.cc
    Sketch generator:           http://examples.blynk.cc
    Blynk community:            http://community.blynk.cc
    Social networks:            http://www.fb.com/blynkapp
                                http://twitter.com/blynk_app

  Blynk library is licensed under MIT license
  This example code is in public domain.

 *************************************************************
  =>
  =>          USB HOWTO: http://tiny.cc/BlynkUSB
  =>

  Feel free to apply it to any other example. It's simple!
 *************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT DebugSerial


// You could use a spare Hardware Serial on boards that have it (like Mega)
#include <SoftwareSerial.h>
SoftwareSerial DebugSerial(2, 3); // RX, TX

#include <BlynkSimpleStream.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "bd1043f4d0084767b4a7f5650ce12c26"; // ต้องแก้ไข


void setup()
{
  // Debug console
  DebugSerial.begin(9600);

  // Blynk will work through Serial
  // Do not read or write this serial manually in your sketch
  Serial.begin(9600);
  Blynk.begin(Serial, auth);
}

void loop()
{
  Blynk.run();
}

**** ต้องแก้ไข  USB Port ของ Arduino UNO ให้ตรงกัน ****

ในตัวอย่าง จะเป็น COM3



ไปที่ Arduino ไลบรารี่ blynk-library-0.x.x คลิกขวาเปิดไฟล์ blynk-ser เพื่อทำการแก้ไข


ตรง COMM_PORT แก้ไขให้ตรงกับ Port  Arduino ของเรา ในตัวอย่างคือ COM3 แล้วจึง Save



จากนั้น คลิกซ้าย เปิดไฟล์ให้ทำงาน (ต้องเปิดไฟล์นี้ไว้ตลอดในขณะทดสอบ)


กลับไปที่ Blynk Application คลิกที่ เครื่องหมาย สามเหลี่ยม


เพื่อทดสอบการทำงานของโปรแกรม led-v1




#define BLYNK_PRINT DebugSerial   //ใช้เพื่อตั้งชื่อค่าคงที่ 
 
#include <SoftwareSerial.h>    // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
SoftwareSerial DebugSerial(2, 3);  //ฟังก์ชั่นของ SoftwareSerial กำหนด ให้ขา2 เป็น tx ขา3เป็นrx

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

 
char auth[] = "bd1043f4d0084767b4a7f5650ce12c26";  // เก็บข้อมูลอักขระ


void setup() // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น  
{

  DebugSerial.begin(9600);   

   
  Serial.begin(9600); //ประกาศการใช้งานการสื่อสารรับส่งข้อมูลผ่าน พอร์ตRS232
  Blynk.begin(Serial, auth); //เริ่มการทำงานเริ่มต้นของ Blynk
}

void loop()   // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ
{
  Blynk.run(); //ฟังก์ชั่นของ BlynkSimpleStream
}
}



https://www.youtube.com/watch?v=w0HRl_xchP8



Internet of Things (IoT)

Internet of Things หรือ IoT  Internet of Things (IoT)  คือ การที่อุปกรณ์อิเล็กทรอนิกส์ต่างๆ สามารถเชื่อมโยงหรือส่งข้อมูลถึงกันได้ด้วยอิ...