ความรู้แน่น ฟรีสำหรับชุมชน ArduinoAll ที่นี่เท่านั้น

ฟรีและดีที่สุด คอร์สอบรม Arduino + NodeMCU
ทำเพื่อแบ่งปัน ห้ามนำไปจำหน่าย หรือเก็บเงินค่าเรียน
  !!!


  


AllNewStep รับประกันคุณภาพทุกชิ้น วันจันทร์-ศุกร์แจ้งชำระสินค้าก่อน 14.00 จัดส่งทันทีวันนี้ค่ะ

กรุงเทพ /ภาคกลาง ได้พรุ่งนี้


*** สินค้าทุกชิ้น ถ้าสามารถทำรายการสั่งซื้อได้ แสดงว่ามีครบทุกรายการค่ะ *** 

พิมพ์ค้นหาบทความ หัวข้อกระทู้ และสินค้าในเว็บ AllNewStep ได้ที่นี่
QUOTE 

ใช้คำสั่งmillis() แต่ยังติดการหน่วงเวลา

Znook Watcharapon

เมื่อทำงานครบ10วินาทีแล้วพอผมกดสวิตซ์SW1 แล้วจะเข้าเงื่อนไขในคำสั่งif Sec >=10 ให้รีเลย์Motorทำงาน แต่กว่าจะรีเลย์Motor จะทำงานต้องรอ1วินาทีถึงจะทำงาน

สามารถทำพอกดSW1แล้วสั่งให้รีเลยMotor ทำงานได้ทันทีได้ไหมครับไม่รู้ว่างต้องแก้ตรงไหน

 

 

 

int Motor =9 ;   

int Cluth =8;

unsigned long previousMillis = 0;         

int Sec = 0;

int M=0;

int sw1=2;

 

const int analogInPin = A0;

int sensorValue = 0;        

int outputValue = 0;

 

void setup() {

  Serial.begin(9600);

  pinMode(Motor, OUTPUT);

  pinMode(Cluth, OUTPUT);

  pinMode(sw1, INPUT_PULLUP);

 

}

 

void loop() {

  unsigned long currentMillis = millis();

  

  sensorValue = analogRead(analogInPin);

  outputValue = map(sensorValue, 0, 1023, 0, 10);

  

    if(currentMillis - previousMillis >= 1000){

    Sec++;

    if(Sec >= 10){

     

     M++;

     Sec=0;

    }  

    if(M >= outputValue){

     digitalWrite(Motor, HIGH);

      

    }

    else {

  

    digitalWrite(Motor, LOW);

  }

    

    previousMillis = currentMillis;

  }

 

  if (digitalRead(sw1) == LOW) 

    {

      digitalWrite(Cluth, LOW);

        Sec=0;

        M = 0;  

 }

  else {

  

    digitalWrite(Cluth,HIGH);

  }

 

  Serial.print("Minute  =  ");Serial.print(M);

  Serial.print("  Sec  =  ");Serial.print(Sec);

  Serial.print("   Time lavel  =  ");

  Serial.println(outputValue);

   

}

QUOTE 
ความคิดเห็นที่ #1
เจ้าของร้าน

ถ้าต้องการให้ทำทันที ลองดูคำสั่ง interrupt ออกแบบมาสำหรับงานนี้โดนเฉพาะ

มีแนะนำในคอร์สสอน Arduino ที่หน้าเว็บด้านบนซ้ายครับ

 

QUOTE 
ความคิดเห็นที่ #2
Znook Watcharapon

พอเข้าใจแต่ก็ยังงงๆอยู่ ใน void ของ interrupt สามารถใช้ตัวแปรได้ไหมครับ

if ถ้า A>=10ให้หลอดไฟติดอะไรแบบนี้

แสดงความคิดเห็นที่ 1-3 จากทั้งหมด 3 ความคิดเห็น
ขาย ARDUINO
คุณภาพ อันดับ 1

ได้รับรางวัลร้านยอดเยี่ยม
ตั้งแต่ปี 2558
ขาย Arduino
วีดีโอสอน Arduino

สอน esp8266

สอน Arduino IoT
สอน Arduino แบบเร็ว

สอน NodeMCU

อุปกรณ์ Arduino

MEMBER ZONE

พูดคุย-สอบถาม