ESP32: Finite-State Machine

update: 07.07.2019

Concept Finite-State Machine (FSM) or State Transition Diagram (STD)

FSM_00

FSM: Project 1. Simple Switch Control LED.

Problem

จากวงจรด้านล่าง  จงต่อวงจรและเขียนโปรแกรมอ่านค่าจาก Push-Botton Switch SW0 โดยมีเงื่อนไข

  • SW0 ปิดวงจร (กดสวิตช์) หลอด LED0 จะติด
  • SW0 เปิดวงจร (ปล่อยสวิตช์) หลอด LED0 จะดับ

จงเขียนโปรแกรมโดยใช้แนวคิด Finite-State Machine

Circuit

FSM_01

Note:

  • SW0 press (Close  circuit) => LOGIC ‘0’
  • SW0 depress (Open circuit)  => LOGIC ‘1’

Algorithm

FSM_02

Program


/* ESP32_FSM_01simple.ino
* Study Finite-State Machine 
*/

#define LED0 15
#define SW0 32

byte State;
bool StateSW0;


void setup() {
  pinMode(LED0,OUTPUT);
  digitalWrite(LED0,LOW);
  pinMode(SW0,INPUT_PULLUP);

  Serial.begin(115200);
  Serial.println("...START...");

  State = 0;
}

void loop() {
  StateSW0 = digitalRead(SW0);

  switch (State)
  {
    case 0: //LED OFF
    if(StateSW0 == LOW)
      {
        digitalWrite(LED0,HIGH);
        State = 1;
      }
      break;
    case 1: //LED ON
    if(StateSW0 == HIGH)
      {
        digitalWrite(LED0,LOW);
        State = 0;
      }
      break;
  }
}

Result

Press SW0 and depress SW0 and see the result at LED0.

Description

FSM_03