ภาษาที่ใช้ควบคุมการทำงานของ Arduino จะใช้ “ภาษา C++” โดยมีการจัดแบ่งรูปแบบโครงสร้างของการเขียนโปรแกรมออกเป็นส่วนย่อยๆ หลายๆ ส่วน โดยเรียกแต่ละส่วนว่า “ฟังก์ชัน” และเมื่อนําฟังก์ชันมารวมเข้าด้วยกันก็จะเรียกว่า “โปรแกรม” โดยโครงสร้างการเขียนโปรแกรมของ Arduino จะประกอบไปด้วยฟังก์ชันจำนวนเท่าใดก็ได้ แต่อย่างน้อยที่สุดต้องมี 2 ฟังก์ชัน คือ setup() และ loop() ดังตัวอย่าง
#include <Servo.h> // ส่งผนวกไฟล์ ชื่อ Servo.h เข้ามาใช้ในโปรแกรม
int Servo1 = 9; // กําหนดให้ Servol แทน Pin Digital-9
Servo myservo; // สร้าง object ชื่อ myservo เพื่อควบคุม Servo
void setup()
{
myservo.attach(Servo1); // กําหนดให้ใช้ขา Digital-9 สร้างสัญญาณควบคุม Servo
}
void loop()
{
myservo.write(180); // กําหนดค่าตำแหน่งให้กับ Servo = 180 องศา
}
จะเห็นได้ว่าโครงสร้างพื้นฐานของภาษาซีที่ใช้กับ Arduino นั้น จะประกอบไปด้วย 3 ส่วนใหญ่ๆ ด้วยกัน คือ
header ในส่วนนี้จะมีหรือไม่มีก็ได้ ถ้ามีต้องกําหนดไว้ในส่วนเริ่มต้นของโปรแกรม ซึ่งส่วนของ Header ได้แก่ ส่วนที่เป็น Compiler Directive ต่างๆ รวมไปถึงส่วนของการประกาศตัวแปร และค่าคงที่ต่างๆ ที่จะใช้ในโปรแกรม
setup() ในส่วนนี้เป็นฟังก์ชันบังคับที่ต้องกําหนดให้มีในทุกๆ โปรแกรม ถึงแม้ว่าในบางโปรแกรมจะไม่ต้องการใช้งานก็ยังจำเป็นต้องประกาศไว้ด้วยเสมอ เพียงแต่ไม่ต้องเขียนคําสั่งใดๆ ไว้ในระหว่าง วงเล็บปีกกา { } ที่ใช้เป็นตัวกำหนดขอบเขตของฟังก์ชัน โดยฟังก์ชันนี้จะใช้สำหรับบรรจุคําสั่งในส่วนที่ต้องการให้โปรแกรมทำงานเพียงรอบเดียวตอนเริ่มต้นทำงานของโปรแกรมครั้งแรกเท่านั้น ซึ่งได้แก่คําสั่งเกี่ยวกับการ Setup ค่าการทำงานต่างๆ เช่น การกําหนดหน้าที่การใช้งานของ PinMode และการกําหนดค่า Baudrate สำหรับใช้งานพอร์ตสื่อสารอนุกรม เป็นต้น
loop() เป็นส่วนฟังก์ชันบังคับที่ต้องกําหนดให้มีในทุกๆ โปรแกรมเช่นเดียวกันกับฟังก์ชัน setup( ) โดยฟังก์ชัน loop( ) นี้จะใช้บรรจุคําสั่งที่ต้องการให้โปรแกรมทำงานเป็นรอบซ้ำๆ กันไป ซึ่งถ้าเปรียบเทียบกับรูปแบบของ ANSI-C ส่วนนี้ก็คือ ฟังก์ชัน main( ) นั่นเอง
ตัวแปร
ตัวแปร หมายถึง กลุ่มของตัวอักษร ตัวเลข และเครื่องหมายใดๆ ที่รวมกันเป็น “ชื่อ” เพื่อใช้กําหนดเป็นตัวแทนของค่าข้อมูลที่เราต้องการจะอ้างถึงในโปรแกรม (ในการทำงานของโปรแกรมจริงๆ แล้วสามารถกําหนดเป็นค่าตัวเลขให้กับโปรแกรมตรงๆ เลยก็ได้ แต่จะทำให้โปรแกรมที่เราเขียนขึ้นเต็มไปด้วยค่าตัวเลขต่างๆ มากมาย ซึ่งยากต่อการอ่าน และทำความเข้าใจ และยากต่อการตรวจสอบความถูกต้อง และอาจทำให้เกิดความผิดพลาดได้ง่ายด้วย)
ซึ่งลักษณะของข้อมูล อาจมีทั้งแบบที่เป็นค่าซึ่งสามารถเปลี่ยนแปลงได้ (variable) หรือ อาจเป็นแบบที่มีค่าคงที่ไม่สามารถเปลี่ยนแปลงได้ (constant) ในการประกาศใช้งานตัวแปรจำเป็นต้องประกาศชนิดของตัวแปร หรือบางครั้งอาจมีการกําหนดค่าเริ่มต้นให้กับตัวแปรด้วย
ชนิดและประเภทของตัวแปร
ถ้าหากว่าเราจะเปรียบเทียบว่า ตัวแปร คือ ภาชนะสำหรับบรรจุสิ่งของ ข้อมูลคือสิ่งของที่เราต้องการจะเก็บ จะเห็นได้ว่าสิ่งของต่างๆ จะมีคุณสมบัติที่แตกต่างกันไป ดังนั้นในการเลือกภาชนะสำหรับบรรจุสิ่งของเราก็จำเป็นต้องเลือกชนิดของภาชนะให้มีความเหมาะสม ซึ่งสิ่งแรกที่ต้องพิจารณาคือ เราจะต้องรู้จักคุณสมบัติของสิ่งของที่ต้องการจะจัดเก็บ และจุดประสงค์ของการใช้งานก่อน จากนั้นจึงจัดหาภาชนะที่มีขนาดและรูปทรงของภาชนะให้เหมาะสมที่จะใช้เก็บสิ่งของ
ในภาษาซีนั้น มีการกําหนด และจำแนกชนิดของตัวแปรไว้เป็น 5 ชนิด โดยแต่ละชนิดจะมีคุณสมบัติการใช้งานที่ต่างกัน เพื่อใช้ในการเก็บข้อมูลที่มีรูปแบบแตกต่างกัน คือ
char ใช้เก็บข้อมูลที่เป็นตัวอักษร (character) ได้ 256 ค่า
int ใช้เก็บข้อมูลที่เป็นเลขจำนวนเต็ม (integer) ได้ 65536 ค่า
float ใช้เก็บข้อมูลที่เป็นเลขทศนิยมแบบ Single Precision
double ใช้เก็บข้อมูลที่เป็นเลขทศนิยมแบบ Double Precision ซึ่งสามารถเก็บค่าตัวเลขทศนิยมที่มีความละเอียดและถูกต้องของทศนิยมมากว่าแบบ float ถึง 2 เท่า
void ใช้เก็บตัวแปรที่ไม่มีค่า
คุณสมบัติเฉพาะของตัวแปร
ตัวแปรชนิดที่ใช้เก็บค่าเลขจำนวนเต็ม (char และ int) ในภาษาซีไม่ได้มีการจำแนกชนิดของตัวแปรเพื่อใช้เก็บค่าตัวเลขที่เป็น ค่าบวก หรือ ค่าลบ เป็นการเฉพาะ แต่ภาษาซีจะใช้วิธีการเพิ่มคําสั่งสำหรับกําหนดคุณสมบัติเฉาพะให้กับตัวแปรไว้อีก 4 คําสั่ง ใช้กําหนดคุณสมบัติของตัวแปรแบบนี้ให้มีคุณสมบัติที่เฉพาะเจาะจงลงไปอีก เช่น ใช้ตัวแปรในการเก็บค่าตัวเลขที่เป็นค่าบวกอย่างเดียว หรือต้องการเก็บค่าตัวเลขแบบคิดเครื่องหมายด้วย เพื่อให้ผู้ใช้สามารถปรับแก้คุณสมบัติในการใช้งานของตัวแปรให้มีคุณสมบัติใกล้เคียงกับความต้องการใช้งานมากขึ้นไปอีก และเพื่อจำกัดขอบเขตการใช้งานของตัวแปรให้ตรงกับจุดประสงค์มากยิ่งขึ้น และยังเป็นการช่วยให้ประหยัดจำนวนของหน่วยความจำที่ใช้สร้างตัวแปรด้วย และทำให้โปรแกรมทำงานได้เร็วขึ้นกว่าเดิมอีกด้วย โดยในภาษาซีจะมีคำสั่งที่ใช้สำหรับระบุคุณสมบัติเฉพาะของตัวแปรที่ใช้เก็บค่าเลขจำนวนเต็ม 4 คําสั่ง คือ
unsigned ใช้ระบุให้เก็บค่าเลขจำนวนเต็มในตัวแปรเฉพาะค่าที่เป็นบวกเท่านั้น
signed ใช้ระบุให้เก็บค่าเลขจำนวนเต็มในตัวแปรทั้งค่า บวก และ ลบ
short ใช้ระบุให้เก็บค่าเลขจำนวนเต็มในตัวแปรที่มีค่าน้อยกว่า int
long ใช้ระบุให้เก็บค่าเลขจำนวนเต็มในตัวแปรที่มีค่ามากกว่า int เป็น 2 เท่า
