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

โฟร์ชาต share.olanlab.com/th/it/blog/view/211(อ้างอิง)

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

สัญลักษณ์ Flowchart ความหมายและวิธีใช้เขียนผังงาน
สัญลักษณ์ Flowchart คือ รูปภาพที่ใช้แทนความหมายการทำงานในลักษณะต่างๆ ภายในผังงาน (Flowchart)
Dec 01, 2017
แก้ไขล่าสุด มีผู้อ่าน 587,904  |  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 แบบง่ายๆ สามารถนำไปประยุกต์ใช้ในการเขียนผังงานอื่นๆ ได้ครับ ในบทความอื่นๆ เดี๋ยวเราจะมาลงลึกไปในรายละเอียดของผังงานแบบต่างๆ กัน

แบ่งปัน

  •  
  •  
  •  

ชอบ +1

  •  
  • 103

บันทึก

ฝากคำถาม คำแนะนำ ได้ที่

Facebook :Share.OlanLab.Com
LINE ID :@olanlab
อีเมล์ :olan@olanlab.com
Share คลังความรู้ด้านเทคโนโลยี สารสนเทศ นวัตกรรมคอมพิวเตอร์ สอนเขียนโปรแกรม Php Java Html CSS Javascript C C++ Objective-C และอื่นๆ บนระบบปฏิบัติการ Window Linux Unix CentOS IOS Android 
โดยผู้เขียนที่มีความเชี่ยวชาญเฉพาะ ให้บริการพื้นที่สำหรับนักเขียนที่ต้องการแบ่งปันความรู้ พร้อมให้คำปรึกษาแก่ผู้ที่สนใจ โดยไม่เสียค่าใช้จ่าย

งาน18

Code
#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

Code
#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

Code
#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

Code
#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


Code
#include <LedControl.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 11
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float Tfloat;
long Tint;
LedControl lc=LedControl(8,10,9,1);
// Pin 8->DIN, 10->CLK, 9->CS(LOAD), 1 = No.of devices
void show6digit(int num)
{
  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)
{
  sensors.requestTemperatures();
  Tfloat = sensors.getTempCByIndex(0);
  Tint = int(Tfloat);
  lc.clearDisplay(0);
  show6digit(Tint);
}

งาน13

Code
#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

Code
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
long duration,distCM,temp_distCM=0;
void setup()
{
  lcd.begin();
  lcd.setCursor(0,0);
  lcd.print("Dist =      cm");
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
}
void loop()
{
  digitalWrite(triggerPin,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);
    lcd.print("    ");
  }
  lcd.setCursor(7,0);
  lcd.print(distCM);
  temp_distCM = distCM;
  delay(300);
}

งาน11

Code
#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

Code
#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

code
#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");
}