หัวข้อ

ram transistor zener diode กราวนด์ดิจิตอล (Digital Ground) คืออะไร? การคำนวณเลขฐาน การต่อสัญญาณแบบบาลานซ์(Balanced System) การทำงานเครื่องขยายเสียงคลาสดี การนำไมโครคอนโทรลเลอร์ไปใช้งาน การประยุกต์ใช้ ESP32 และ ESP8266: ก้าวสู่โลก IoT การเข้าโหมดเซอร์วิส การเปลี่ยนฐานของระบบเลข การเลือกลำโพง การเลือกแอมป์ให้กับลำโพง การใช้งาน Arduino Uno ร่วมกับ เซอร์โวมอเตอร์ การ์ดแสดงผล กำลังวัตต์กับความดัง คลาสต่างๆ ความเปลี่ยนแปลงของเครื่องเสียงยุคดิจิตอล ค่าความเพี้ยนกับค่าS/N จอมอนิเตอร์ ซีดีทรานสปอร์ต(CD TRANSPORT) ตัวต้านทานปรับค่าได้(Variable Resistor) ตัวต้านทานและการใช้งาน ตัวเก็บประจุ(Capacitor ทรานซิสเตอร์ ทำไม?แรมบางรุ่นถึงแพงกว่าเมนบอร์ด ทิศทางการเติบโตตลาด AMD ในปัจจุบัน ทีวีสี ภาคต่างๆของเครื่องขยายเสียง รหัสไบนารี่(Binary Codes) ระบบควบคุมการชาร์จแบตเตอรี่จากโซลาร์เซลล์ ระบบเลขฐาน ระบบโซลาร์เซลล์ ระบบโซลาร์เซลล์แบบ Off-Grid และ On-Grid อินเวอร์เตอร์ที่ใช้ในระบบโซลาร์เซลล์ อิเล็กทรอนิกส์ อุปกรณ์ระบายความร้อนในคอมพิวเตอร์ อุปกรณ์อิเล็กทรอนิกส์ ฮาร์ดดิสก์ หรือ SSD เขียนโปรแกรม Arduino ด้วยภาษาซี เขียนโปรแกรม Arduino ด้วยภาษาซี 2 เขียนโปรแกรม Arduino ด้วยภาษาซี 3 เขียนโปรแกรม Arduino ด้วยภาษาซี คำสั่งพื้นฐานที่ควรเรียนรู้ เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 5 เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 6 เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 7 เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 8 เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่1 เครื่องขยายเสียงคลาสดี(Class D) เบอร์แทน เพาเวอร์ซัพพลาย เพาเวอร์แบงค์บอกค่าความจุจริงหรือเฟค เมนบอร์ด (Motherboard) แนะนำ CPU และ GPU ราคาประหยัด ใช้งานได้ถึงปี 2030 แนะนำ ซีพียู งาน AI ฝั่ง RED Team แนะนำ ซีพียูสาย AI รุ่นท็อปขายดี แอลอีดี(LED) โครงสร้างไมโครคอนโทรลเลอร์ ตระกูล PIC โปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 4 โวลลุ่มคอนโทรลแบบ AAVA ไดโอด ไมโครคอนโทรลเลอร์ ไมโครคอนโทรลเลอร์ในปี 2025 ไอซี ไอซีตั้งเวลา LM555
แสดงเพิ่มเติม

การใช้งาน Arduino Uno ร่วมกับ เซอร์โวมอเตอร์

 ในการใช้งาน arduino uno ร่วมกับ เซอร์โวมอเตอร์ ตัวอย่างนี้จะใช้เอาท์พุตดิจิตอลธรรมดา แต่สัญญาณ PWM จะสร้างขึ้นจากฟังก์ชั่นที่อ้างอิงจากไฟล์ Servo.h และรูปแบบใช้งานคำสั่งก็คือ Servo myservo;   คือ การประกาศฟังก์ชั่น myservo.attach(9); คือ การกำหนดขาเอาท์พุต myservo.write(pos); คือ เขียนข้อมูลออก ในที่นี้ใช้ตัวแปร pos ในการเก็บค่า ต่อวงจรตามภาพ เขียนโปรแกรมดังนี้ #include <Servo.h> Servo myservo;  // ประกาศใช้งานฟังก์ชั่นเซอร์โว จากไฟล์ servo.h int pos = 0;    // กำหนดตัวแปรเก็บค่าตำแหน่งเซอร์โว void setup() {   myservo.attach(9);  // กำหนดขาใช้งานในบอร์ด คือ ขา9 void loop() {   for (pos = 0; pos <= 180; pos += 1) { // ใส่ค่าตำแหน่งเริ่มจาก 0 ถึง 180 องศา โดยเพิ่มค่าทีละ 1 องศา       myservo.write(pos);              // เขียนคำสั่งจากค่าตัวแปรเก็บตำแหน่ง เพื่อส่งค่าออกเอาท์พุต     delay(15);            ...

เขียนโปรแกรม Arduino ด้วยภาษาซี คำสั่งพื้นฐานที่ควรเรียนรู้

โครงสร้างพื้นฐานของโปรแกรม Arduino

คลิกภาพเพื่อขยาย

โค้ด Arduino ทุกโค้ด (หรือที่เรียกว่า Sketch) จะมีโครงสร้างหลัก 2 ส่วนเสมอ:

  1. void setup():

    • เป็นฟังก์ชันที่ ทำงานเพียงครั้งเดียว เมื่อบอร์ด Arduino เริ่มทำงาน (เปิดไฟ หรือกดปุ่ม Reset)

    • ใช้สำหรับตั้งค่าเริ่มต้นต่างๆ เช่น กำหนดโหมดของขาพอร์ต (Input/Output), เริ่มต้นการสื่อสารแบบอนุกรม (Serial Communication) หรือตั้งค่าโมดูลต่างๆ

  2. void loop():

    • เป็นฟังก์ชันที่ ทำงานซ้ำไปเรื่อยๆ อย่างไม่มีที่สิ้นสุด หลังจากฟังก์ชัน setup() ทำงานเสร็จ

    • เป็นส่วนที่เราจะเขียนโค้ดหลักสำหรับให้ Arduino ทำงานตามที่เราต้องการ เช่น อ่านค่าจากเซ็นเซอร์, ควบคุมหลอดไฟ, มอเตอร์



void setup() {
  // เขียนโค้ดสำหรับตั้งค่าเริ่มต้นที่นี่
  // โค้ดในส่วนนี้จะทำงานเพียงครั้งเดียว
}

void loop() {
  // เขียนโค้ดหลักที่ต้องการให้ทำงานซ้ำๆ ที่นี่
  // โค้ดในส่วนนี้จะทำงานวนลูปไปเรื่อยๆ
}

คำสั่งพื้นฐานที่ควรรู้

1. คำสั่งสำหรับควบคุมขาพอร์ต (Digital I/O)

  • pinMode(pin, mode);

    • ใช้: กำหนดโหมดการทำงานของขาพอร์ต (Pin) ว่าจะเป็นขา Input (รับค่าเข้ามา) หรือ Output (ส่งค่าออกไป)

    • pin: หมายเลขขาพอร์ตของ Arduino (เช่น 2, 3, 13)

    • mode: INPUT, OUTPUT, หรือ INPUT_PULLUP (สำหรับใช้ตัวต้านทาน Pull-up ภายใน)

    • ตัวอย่าง: pinMode(13, OUTPUT); (กำหนดขา 13 ให้เป็นขาเอาต์พุต)

  • digitalWrite(pin, value);

    • ใช้: ส่งค่าสถานะแบบดิจิทัล (เปิด/ปิด, สูง/ต่ำ) ออกไปที่ขาพอร์ตที่กำหนดไว้เป็น OUTPUT

    • pin: หมายเลขขาพอร์ต

    • value: HIGH (เปิด, แรงดันสูง 5V) หรือ LOW (ปิด, แรงดันต่ำ 0V)

    • ตัวอย่าง:  digitalWrite(13, HIGH); (ทำให้ขา 13 มีไฟออก)
  • digitalRead(pin);

    • ใช้: อ่านค่าสถานะแบบดิจิทัลจากขาพอร์ตที่กำหนดไว้เป็น INPUT

    • pin: หมายเลขขาพอร์ต

    • ค่าที่ส่งกลับ: HIGH (ถ้ามีแรงดันสูง) หรือ LOW (ถ้ามีแรงดันต่ำ)

    • ตัวอย่าง: int buttonState = digitalRead(2); (อ่านค่าจากขา 2 แล้วเก็บไว้ในตัวแปร buttonState)

2. คำสั่งสำหรับควบคุมขาพอร์ตแบบ Analog (Analog I/O)

  • analogRead(pin);

    • ใช้: อ่านค่าแรงดันไฟฟ้าแบบอะนาล็อกจากขาพอร์ตอะนาล็อก (ขา A0-A5 บน Arduino Uno) โดยจะแปลงค่าแรงดัน (0-5V) เป็นตัวเลข (0-1023)

    • pin: หมายเลขขาพอร์ตอะนาล็อก (เช่น A0, A1)

    • ค่าที่ส่งกลับ: ตัวเลขจำนวนเต็มระหว่าง 0 ถึง 1023

    • ตัวอย่าง: int sensorValue = analogRead(A0); (อ่านค่าจากขา A0)

  • analogWrite(pin, value);

    • ใช้: ส่งค่าสัญญาณ PWM (Pulse Width Modulation) ออกไปที่ขาพอร์ตดิจิทัลที่รองรับ PWM (มักจะมีสัญลักษณ์ ~ หน้าหมายเลขขา เช่น 3, 5, 6, 9, 10, 11) เพื่อควบคุมความสว่างของ LED หรือความเร็วของมอเตอร์

    • pin: หมายเลขขาพอร์ตดิจิทัลที่รองรับ PWM

    • value: ตัวเลขจำนวนเต็มระหว่าง 0 (ปิดสนิท) ถึง 255 (เปิดเต็มที่)

    • ตัวอย่าง: analogWrite(9, 128); (ทำให้ LED ที่ขา 9 สว่างครึ่งหนึ่ง)

3. คำสั่งสำหรับหน่วงเวลา

  • delay(ms);

    • ใช้: หน่วงเวลาการทำงานของโปรแกรมเป็นมิลลิวินาที (milliseconds)

    • ms: จำนวนมิลลิวินาทีที่ต้องการหน่วง (1000 ms = 1 วินาที)

    • ตัวอย่าง: delay(1000); (หยุดการทำงาน 1 วินาที)

4. คำสั่งสำหรับการสื่อสารแบบอนุกรม (Serial Communication)

  • Serial.begin(baud_rate);

    • ใช้: เริ่มต้นการสื่อสารแบบอนุกรมผ่านพอร์ต USB เพื่อให้ Arduino สามารถส่งข้อมูลไปยังคอมพิวเตอร์ (Serial Monitor) หรือรับข้อมูลจากคอมพิวเตอร์ได้

    • baud_rate: ความเร็วในการสื่อสาร (มักใช้ 9600 หรือ 115200)

    • ตัวอย่าง: Serial.begin(9600); (เริ่มต้นการสื่อสารที่ความเร็ว 9600 บิตต่อวินาที)

  • Serial.print(data); และ Serial.println(data);

    • ใช้: ส่งข้อมูลออกทาง Serial Monitor

    • Serial.print(): ส่งข้อมูลแล้วเคอร์เซอร์จะอยู่บรรทัดเดิม

    • Serial.println(): ส่งข้อมูลแล้วขึ้นบรรทัดใหม่

    • data: ข้อมูลที่ต้องการส่ง (ตัวเลข, ข้อความ, ตัวแปร)

    • ตัวอย่าง: 

      Serial.print("Hello, Arduino!");
      Serial.println(sensorValue);
  • Serial.read();

    • ใช้: อ่านข้อมูลที่ส่งเข้ามาทางพอร์ต Serial

    • ค่าที่ส่งกลับ: ตัวอักษรที่อ่านได้ (เป็นค่า ASCII) หรือ -1 ถ้าไม่มีข้อมูล

    • ตัวอย่าง: char receivedChar = Serial.read();

5. คำสั่งและสัญลักษณ์อื่นๆ ที่สำคัญ

  • //: ใช้สำหรับเขียน Comment หรือข้อความอธิบายในโค้ด ส่วนนี้คอมไพเลอร์จะข้ามไป ไม่ถูกประมวลผล ใช้เพื่อช่วยให้เราและคนอื่นเข้าใจโค้ดได้ง่ายขึ้น

  • /* ... */: ใช้สำหรับเขียน Comment หลายบรรทัด

  • ; (Semicolon): ต้อง ปิดท้ายทุกๆ คำสั่งเสมอ (ยกเว้นพวกวงเล็บปีกกา {} หรือคำสั่งควบคุม if, for, while)

  • {} (Curly Braces): ใช้กำหนดขอบเขตของบล็อกคำสั่ง เช่น ฟังก์ชัน setup() ฟังก์ชัน loop() หรือบล็อก if-else

  • int, float, char, String: เป็นชนิดของ ตัวแปร (Variable) ที่ใช้สำหรับเก็บข้อมูลประเภทต่างๆ

    • int: จำนวนเต็ม (integer)

    • float: จำนวนทศนิยม (floating-point number)

    • char: ตัวอักขระ (character)

    • String: ข้อความ (ชุดของตัวอักขระ)

  • = (Assignment Operator): ใช้ในการกำหนดค่าให้กับตัวแปร เช่น int x = 10;

  • == (Comparison Operator): ใช้ในการเปรียบเทียบว่าสองค่าเท่ากันหรือไม่ เช่น if (x == 10)

  • if / else if / else: คำสั่งเงื่อนไข สำหรับการตัดสินใจ

    if (condition) {
      // ทำงานถ้า condition เป็นจริง
    } else if (anotherCondition) {
      // ทำงานถ้า anotherCondition เป็นจริง
    } else {
      // ทำงานถ้า condition และ anotherCondition เป็นเท็จ
    }
    
  • for / while: คำสั่งวนซ้ำ (Loop)






โพสต์ยอดนิยมจากบล็อกนี้

คลาสต่างๆของวงจรขยายเสียง

เฟต(FET)

การเปลี่ยนฐานของระบบเลข