lnwshop logo
  • ตอบกระทู้
  • ตั้งกระทู้ใหม่
QUOTE 

การทดสอบการควบคุมหลอด LED ด้วยรีโมทย์อินฟาเรด For NOD MCU ESP8266 (ลง library ก่อนนะครับ)

เจ้าของร้าน
เจ้าของร้าน
9 เดือนที่ผ่านมา

#include <Adafruit_NeoPixel.h>  //  เรียกใช้ library  Adafruit_NeoPixel.h สำหรับการใช้งาน หลอด LED_RGB

 

#include <IRremoteESP8266.h>  // เรียกใช้งาน library IRremoteESP8266.h สำหรับการใช้งาน รีโมตอินฟาเรท

 

#define PIN            10  // กำหนด หมายเลข ขาสำหรับ ส่งข้อมูล RGB

 

#define NUMPIXELS      5 // กำหนด จำนวนหลอด LED_RGB ในที่นี่ มี 5 หลอด

 

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // เรียกใช้ฟังค์ชั่นเริ่มต้น สำหรับการใช้งาน library

 

int RECV_PIN = 13;  // กำหนด หมายเลขา สำหรับ ส่งข้อมูล อินฟาเรต

 

IRrecv irrecv(RECV_PIN); // เรียกใช้งานฟังค์ชั่น เพื่อเรียกใช้งานขาอินฟาเรท ในที่นี่ = ขา 13 ที่กำหนดไวในตัวแปร RECV_PIN

decode_results results;  // เรียกใช้งานฟั้งค์ชั่น อ่านค่ารีโมทอินฟาเรท โดยกำหนดให้ results เป็นตัวเก็บค่า

/******************** ตัวแปรที่ใช้ในการเก็บค่า เพื่อเทียบกับค่าที่อ่านได้ *************************/

const long up = 0xFF629D;       // : button ^

const long dw = 0xFFA857;    // : button v

/***********************************************************************************/

signed char state = -1;

long last = 0; // กำหนดค่าเริ่มต้นของตัวแปร last  = 0

void setup()

{

  irrecv.enableIRIn(); // ฟังค์ชั่น เริ่มต้นการใช้งานรีโมทอินฟาเรท

  

  pixels.begin(); // เริ่มต้นใช้งาน library ของ Adafruit_NeoPixel.h หลังจากที่ กำหนดค่าเรียบร้อยแล้ว

}

 

void loop() // หลักการทำงานของฟั่งค์ชั่นนี้คือ หลอด RGB จะเลื่อน ไปตามจำนวนครั้งที่กด ถ้า กด up จะเลื่อนขึ้นไป ถ้ากด dw จะเลื่อนลง จากตำแหน่งเดิม และจะวนไปเรื่อยๆ

{

  if (irrecv.decode(&results)) // โครงสร้าของประโยคเงื่อนไขแบบ if หรือ ประโยคเงื่อนไขแบบทางเลือก คือถ้ามีการรับข้อมูลจากอินฟาเรทเข้ามา ก็จะทำงานเงื่อนไขในบรรทัดต่อไป ถ้าไม่มีก็จะไปที่บรรทัดสุดท้ายทันที

  {

    if (results.value == up) // ตรวจสอบว่า ถ้าข้อมูล ที่อ่านได้ เท่ากับตัวแปร up หรือไม่ถ้าใช่ จะทำงานในบรรทัดต่อไป

    {

      if (millis() - last > 250) // ฟังค์ชั่นนี้เป็นตัวเช็คว่า มีการรับข้อมูล up หรือไม่

      {

        pixels.setPixelColor(state, pixels.Color(0, 0, 0)); // เคลียร์หลอด RGB ให้ดับทั้งหมด

        pixels.show();  // ให้แสดงผล

        

        state++; // ถ้ามีการรับข้อมูลมา ตัวแปร state จะเพิ่มค่าขึ้นทีละ 1 ตามจำนวนครั้งที่รับข้อมูล

        if (state > 5) // ถ้ามีการรับข้อมูลมากกว่า 5 ครั้ง

        {

          state = 0; // ตัวแปร state = 0  ** เริ่มนับใหม่นั้นเอง

        }

        pixels.setPixelColor(state , pixels.Color(255, 20, 147)); // ในการนับแต่ละครั้งให้แสดงการติดของหลอด RGB ตามจำนวนครั้งที่รับข้อมูล

        pixels.show(); // ให้แสดงผล

        last = millis(); // อัพเดต ค่าตัวแปร last ให้เท่ากับ millis();

      }

    }

 

    if (results.value == dw)  // ตรวจสอบว่า ถ้าข้อมูล ที่อ่านได้ เท่ากับตัวแปร dw หรือไม่ถ้าใช่ จะทำงานในบรรทัดต่อไป

    {

      if (millis() - last > 250) // ฟังค์ชั่นนี้เป็นตัวเช็คว่า มีการรับข้อมูล dw หรือไม่

      {

        pixels.setPixelColor(state, pixels.Color(0, 0, 0)); // เคลียร์หลอด RGB ให้ดับทั้งหมด

        pixels.show();  // ให้แสดงผล

        

        state--;  // ถ้ามีการรับข้อมูลมา ตัวแปร state จะลดค่าลงทีละ 1 ตามจำนวนครั้งที่รับข้อมูล

        if (state < 0) // ถ้ามีการรับข้อมูลน้อยกว่า 0 ครั้ง

        {

          state = 5; // ตัวแปร state = 7  ** เริ่มนับใหม่นั้นเอง

        }

        pixels.setPixelColor(state , pixels.Color(255, 20, 147)); // ในการนับแต่ละครั้งให้แสดงการติดของหลอด RGB ตามจำนวนครั้งที่รับข้อมูล

        pixels.show();  // ให้แสดงผล

        last = millis(); // อัพเดต ค่าตัวแปร last ให้เท่ากับ millis();

      }

    }

    irrecv.resume(); // รอรับข้อมูลชุดต่อไป

  }

  delay(100); // หน่วงเวลา 100 มิลลิวินาที

}

1
แสดงความคิดเห็นที่ 0-0 จากทั้งหมด 0 ความคิดเห็น
ข้อความ
ชื่อผู้โพส
ข้อมูลสำหรับการติดต่อกลับ (ไม่เปิดเผย เห็นเฉพาะเจ้าของร้าน)
อีเมล
เบอร์มือถือ
  • ตอบกระทู้

<



    ติดต่อเรา สะดวก    รวดเร็ว ไว้ใจได้

 091-109-7711


  ติดต่อเราผ่านช่องทาง LINE

  ID : king5k

MEMBER

เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)

STATISTICS

หน้าที่เข้าชม6,133 ครั้ง
ผู้ชมทั้งหมด3,000 ครั้ง
เปิดร้าน21 ก.ย. 2559
ร้านค้าอัพเดท16 พ.ค. 2561
ตะกร้าของฉัน (0)
มีสินค้าทั้งหมด 0 ชนิด 0 ชิ้น
0 บาทราคาสินค้าทั้งหมด
(ยังไม่รวมค่าจัดส่ง)
สั่งซื้อสินค้า
ตะกร้า
( 0 )
รายการสั่งซื้อของฉัน
เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)
รายการสั่งซื้อของฉัน
ข้อมูลร้านค้านี้
ร้านPiapples
Piapples
วิสัยทัศน์ของเราคือ สร้างชุดฝึกสำหรับการโปรแกรมคอมพิวเตอร์ มอบให้ระบบการศึกษาทั่วประเทศ ยินดีให้คำปรึกษา R&D งานระบบไมโครคอนโทรลเลอร์ งานโปรเจค งานออกแบบดีไซด์
เบอร์โทร : 0911097711
อีเมล : kittisak.krua@gmail.com
ส่งข้อความติดต่อร้าน
เกี่ยวกับร้านค้านี้
สินค้าที่ดูล่าสุด
ดูสินค้าทั้งหมดในร้าน
สินค้าที่ดูล่าสุด
บันทึกเป็นร้านโปรด
Join (สมัครสมาชิกร้าน)
แชร์หน้านี้
แชร์หน้านี้

TOP เลื่อนขึ้นบนสุด
Go to Top
พูดคุย-สอบถาม คลิก