ข้อตัวเลือก 10 ข้อ เติมคำตอบ 5 ข้อ เขียนโค๊ด/ปรับแก้โค๊ด 2 ข้อ
ความรุ้เรื่องบอร์ด arduino uno R3 เช่น ขาดิจิตอล ขาอนาล็อก ขา GND ขา 5V
โครงสร้างภาษา C หลักๆของอาดุยโน่
คำสั่งและหน้าที่พื้นฐานของโค๊ด ต่างๆ เช่น
analogRead และ analogWrite
Serial.print และ Serial.println
digitalRead และ digitalWrite
การกำหนดตัวแปร const , int
อุปกรณ์ เช่น ตัวต้านทาน LED LDR 7-segment
สามารถแก้ไขโค๊ดเบื้องต้นได้
const int Pinin = A0;,
const int PinLED1 = 3;
การตั้งชื่อตัวแปรก็เหมือนกับ "การแปะป้ายชื่อบนกล่อง" เพื่อให้เราเรียกใช้ได้ง่ายๆ โดยไม่ต้องจำตัวเลขยากๆ
int (Integer) คือกล่องที่เก็บเฉพาะ "ตัวเลขจำนวนเต็ม"
const (Constant) คือการล็อคกล่องนี้ไว้ บอกว่าค่าในกล่องนี้เป็น "ค่าคงที่" ห้ามเปลี่ยนระหว่างที่โปรแกรมทำงาน (เช่น ขาหลอดไฟจะอยู่ที่ขา 3 เสมอ ไม่ย้ายไปไหน)
int PotenValue = 0;, // เลข 0 แปลว่าให้ว่างๆ ไว้
int LEDValue = 0;// เลข 0 แปลว่าให้ว่างๆ ไว้
การสร้าง "กล่องเปล่า" เพื่อรอรับข้อมูลที่จะเข้ามาในอนาคต โดยตอนเริ่มต้นเราใส่ค่า 0 ไว้ในกล่องก่อนเพื่อความชัวร์
ตอนที่บอร์ด Arduino อ่านค่าตัวต้านทานปรับค่าได้ (Potentiometer) มันก็จะเอาตัวเลขที่อ่านได้มาหย่อนใส่ในกล่อง PotenValue นี้ ทำให้ค่าในกล่องเปลี่ยนแปลงได้ตลอดเวลา (สังเกตว่าเราไม่ใส่ const ไว้ข้างหน้า)
pinMode(PinLED1, OUTPUT);
คำอธิบาย : เป็นการบอกให้บอร์ด Arduino รู้ว่า ขาแต่ละขาจะรับบทบาทเป็นอะไร เปรียบเหมือน "การมอบหมายหน้าที่"
OUTPUT: เป็นฝ่ายส่งออก (ส่งไฟออกไปทำให้ LED สว่าง)
INPUT: เป็นฝ่ายรับเข้า (รับกระแสไฟเข้ามาเพื่ออ่านค่า เช่น สวิตช์ปุ่มกด หรือเซ็นเซอร์)
โค้ดตัวอย่าง: Serial.begin(9600);
คือการ "ตกลงความเร็วในการส่งข้อมูล (บิตต่อวินาที) " ระหว่างบอร์ด Arduino กับคอมพิวเตอร์
ตัวเลข 9600 คือความเร็วในการส่งข้อมูล (บิตต่อวินาที) ถ้าบอร์ดพูดเร็ว 9600 แต่คอมพิวเตอร์ตั้งใจฟังที่ความเร็วอื่น คุยกันก็จะไม่รู้เรื่องและอ่านค่าออกมาเป็นภาษาต่างดาว
โค้ดตัวอย่าง: LEDValue = map(PotenValue, 0, 1023, 0, 3);
ฟังก์ชันนี้คือ "นักแปลงสเกลเวทมนตร์" ที่ช่วยย่อหรือขยายตัวเลขให้เราอัตโนมัติ
ค่าที่อ่านได้จาก analogRead จะมีค่าตั้งแต่ 0 ถึง 1023 (สเกลใหญ่มาก) แต่เรามีหลอดไฟแค่ 3 ดวง เราเลยสั่งให้ map ช่วยแปลงสเกลใหม่เป็น 0 ถึง 3 (สเกลเล็ก)
ถ้าหมุนตัวต้านทานสุดทาง (1023) ค่า LEDValue จะถูกแปลงเป็น 3 ทันที
โค้ดตัวอย่าง: if(LEDValue==3) { ... } else if(LEDValue==2) { ... }
คือ "ทางแยกของการตัดสินใจ" เหมือนเวลาเราบอกว่า "ถ้า... ให้ทำแบบนี้ แต่ถ้าไม่ใช่... ให้ไปเช็คเงื่อนไขถัดไป"
if (ถ้า): เช็คเงื่อนไขแรกก่อน ถ้า LEDValue เท่ากับ 3 จริง ให้เปิดไฟครบ 3 ดวง
else if (แต่ถ้า): ถ้าเงื่อนไขแรกไม่จริง ค่อยมาเช็คอันนี้ ถ้า LEDValue เท่ากับ 2 จริง ให้เปิดไฟแค่ 2 ดวง
ย้ำว่าเครื่องหมายเท่ากับสองตัว == หมายถึง "การเปรียบเทียบว่าเท่ากันหรือไม่" ไม่ใช่การกำหนดค่า (ซึ่งใช้ =)
โค้ดตัวอย่าง: Serial.print(" to ");, Serial.println(LEDValue);
คือคำสั่ง "เขียนข้อความส่งกลับมาที่หน้าจอคอม (Serial Monitor)" เพื่อให้เราเห็นว่าบอร์ดกำลังคิดอะไรอยู่
Serial.print(): พิมพ์ข้อความแล้ว "อยู่บรรทัดเดิม" รอพิมพ์ข้อความต่อไปต่อท้ายได้เลย
Serial.println(): พิมพ์ข้อความเสร็จแล้ว "กดปุ่ม Enter ขึ้นบรรทัดใหม่" ให้ทันที (ตัว ln ย่อมาจาก line)