basic

[BASIC] 013 ESP NOW

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการสื่อสารไร้สายผ่าน ESP NOW

สำหรับ ESP-NOW นั้นเป็นโพรโตคอลที่พัฒนาโดย Espressif System เพื่อใช้ในการติดต่อสื่อสารโดยไม่จำเป็นต้องมีตัวกลาง ยกตัวอย่างเช่น Access Point หรือ Router เลย โดยสามารถเชื่อมต่อกันตรงๆ และใช้งานได้ทั้งส่งไปยังปลายทางที่กำหนด หรือใช้การ Broadcast ก็ได้เช่นกัน เหมาะสำหรับการนำมาทำงานร่วมกันเป็นกลุ่มของการสื่อสารโดยใช้ความถี่ 2.4GHz

ส่งข้อมูลได้ครั้งละ  250 byte ต่อครั้ง (payload)

ใช้งานพร้อมกันได้สูงสุด 20 ตัว

สำหรับการใช้งานนั้นทางผู้พัฒนาบอร์ด HONEYLemon ได้มีการสร้างฟังก์ชั่นให้สามารถใช้งานสำหรับการสื่อสารได้ง่ายขึ้น โดยมีคำสั่งเบื้องต้นดังนี้

lemon.setupESPNOW();  // สำหรับ setup ให้สามารถใช้งาน esp-now ได้
lemon.espnow_send();  // สำหรับการส่งไปหาอุปกรณ์ปลายทาง
lemon.espnow_broadcast();  // สำหรับการส่งไปหาอุปกรณ์ปลายทางแบบ broadcast(ส่งทุกตัว)

วิธีการใช้งาน

1.สร้างฟังก์ชั่นสำหรับรับข้อมูลก่อน

void espnowRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) {
    char macStr[22];
    snprintf(macStr, sizeof(macStr), "[%02X:%02X:%02X:%02X:%02X:%02X]: ", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);

    Serial.print(macStr);
    Serial.write(data, data_len);
    Serial.println();
}

2.ทำการ setup เพื่อใช้งาน ESP NOW

void setup(){
...
    lemon.setupESPNOW(); // เพื่อเตรียมความพร้อมใช้งาน ESP NOW
    esp_now_register_recv_cb(espnowRecv); // ฟังก์ชั่น callback เรียกเมื่อมีข้อความเข้ามา
...
}

3.ทำการส่งข้อมูลแบบ broadcast ไปหาอุปกรณ์ทุกตัว

...
    lemon.espnow_broadcast("Hello World!");
...

หรือหากต้องการส่งไปหาตัวใดตัวหนึ่งในระบบก็สามารถทำได้แต่ต้องทราบ Mac Address ของอุปกรณ์ปลายทางที่ต้องการส่งก่อน โดยบอร์ด HONEYLemon สามารถพิมพ์คำสั่งได้เลย

...
Serial.println("My MAC Address : "+lemon.getMAC());
...

แนะนำว่าควรนำไปไว้ใน void setup() เพื่อใช้ในการดูว่า Mac Address ของบอร์ดนั้นๆ

และสำหรับการส่งไปหาอุปกรณ์ปลายทางเฉพาะบอร์ดสามารถใช้คำสั่งได้ดังนี้

...
    lemon.espnow_send("FF:FF:FF:FF:FF:FF","Hello World!");
    // แก้ FF:FF:FF:FF:FF:FF เป็น MAC Address ปลายทาง
...

ตัวอย่าง source code

basic

[BASIC] 012 SERVO SWEEP ( เซอร์โว )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการใช้งาน servo ( เซอร์โว มอเตอร์ )

สำหรับการใช้งาน servo motor กับการใช้งานบอร์ด HONEYLemon นั้นง่ายมาก เพราะไม่ต้อง include อะไรเพิ่มเลย การเตรียมการขั้นแรกให้ประกาศว่าจะใช้งาน servo กันก่อน

Servo myservo; // สร้าง object สำหรับการควบคุม servo

จากนั้นก็ทำงานตั้งค่าความถี่ที่ต้องการใช้ และตั้งค่าขาที่ต้องการใช้งาน

void setup(){
...
    myservo.setPeriodHertz(50);     // ตั้งค่าความถี่มาตรฐาน 50 Hz
    myservo.attach(servoPin);       // กำหนดคาบเวลา min/max ที่จะใช้ควบคุม Servo
...
}

สำหรับขั้นตอนของการ setup servo เสร็จเรียบร้อยแล้ว ต่อไปเราก็ทำการควบคุม servo ได้เลยด้วยคำสั่ง

myservo.write( pos ); // โดยที่ pos คือองศาของ servo

สำหรับการต้องการเปลี่ยนจากตำแหน่ง a ไปตำแหน่ง b อย่างช้าๆ เราสามารถใช้ loop ในการช่วงชลอการเคลื่อนที่ได้ ตัวอย่างเช่น

int a = 0;
int b = 180;
for(int pos=a;pos<=b;pos++){  // หมุนทีละ 1 องศาจากตำแหน่ง a ไป b ทุกๆ 5 มิลลิวินาที
    myservo.write(pos);  // สั่งให้ servo หมุนไปที่ตำแหน่ง pos
    delay(5);            // รอ 5 มิลลิวินาที แล้วค่อยหมุนไปตำแหน่งต่อไป
}

อยากให้ช้าหรือเร็วก็ปรับตรง delay เอาก็ได้นะ สำหรับวิธีนี้เป็นการเขียนอย่างง่าย หากต้องใช้งานร่วมกับการทำงานอื่นๆ การเขียนคำสั่งโดยใช้ delay จะทำให้ไม่สามารถทำงาน multi function ได้

ตัวอย่าง source code

basic

[BASIC] 011 LINE NOTIFY ( แจ้งเตือนผ่านไลน์ )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการแจ้งเตือนผ่าน line notify หรือแจ้งเตือนผ่านไลน์นั้นเอง

เนื่องจากต้องมีการเชื่อมต่อ WiFi ด้วยจึงแนะนำให้อ่านข้อมูลเพิ่มเติมสำหรับการเชื่อมต่อ WiFi https://lemon.honey.co.th/basic-007-wifi-setup-wifi-ต่อเน็ต/

เมื่อเชื่อมต่อ WiFi ได้แล้วจากบทความข้างต้น ก็ถึงเวลาที่จะต้องเตรียมความพร้อมสำหรับการใช้งาน line notify ละครับ ก่อนอื่นมาเรียนรู้คำสั่งที่เกี่ยวข้องกันก่อน

lineNotify(LINE_TOKEN,"ข้อความ");    // แจ้งเตือนผ่าน Line Notify ด้วยข้อความ

จากคำสั่งข้างต้นเราต้องการ LINE_TOKEN เพื่อใช้ในการแจ้งเตือน ซึ่งสามารถสร้างได้จากขั้นตอนต่างๆ ต่อไปนี้ครับ

1.เข้าสู่เว็บไซต์ https://notify-bot.line.me/th/

2.กดปุ่มเข้าสู่ระบบ

3.ทำการ login เข้าสู่ระบบด้วย email และ password ของ line กันครับ

4.เลือกที่ชื่อ login ของเรา และเลือก “หน้าของฉัน”

5.เลื่อนลงไปด้านล่างส่วนของ ออก Access Token (สำหรับผู้พัฒนา)

6.ตั้งชื่อบอท ( Bot Name ) แล้วเลือกรับการแจ้งเตือนแบบตัวต่อตัว (หรือจะเลือกกลุ่มก็ได้นะถ้าต้องการแจ้งเตือนแบบกลุ่ม) หลังจากนั้นกด “ออก Token”

7.ทำการ copy Token ที่ออก

8.นำ Token ที่ออกไปใส่ใน code

lemon.lineNotify("cU1lRSyVjNCPfzBLbwY8YOb6qajF3T8uiJXuLYqVrAX","ใส่ข้อความที่ต้องการส่ง");

หรือ

#define LINE_TOKEN "cU1lRSyVjNCPfzBLbwY8YOb6qajF3T8uiJXuLYqVrAX"
...
lemon.lineNotify(LINE_TOKEN,"ข้อความที่ต้องการส่ง");

เพียงเท่านี้ก็เสร็จแล้ว สำหรับการสร้าง token จาก line เพื่อมาแจ้งเตือน line notify

เรามาทำสอบกันดีกว่าครับ

ตัวอย่าง source code

ทำการแก้ไข

#define LINE_TOKEN "LINE_Token"     // ตั้งค่า Token ของ Line Notify

เป็น token ที่เราสร้างขึ้นมา กรณีนี้ของผมใช้

#define LINE_TOKEN "cU1lRSyVjNCPfzBLbwY8YOb6qajF3T8uiJXuLYqVrAX"

อย่าลืมแก้การเชื่อมต่อ WiFi ด้วยนะครับ

เริ่มทำการทดสอบกันเถอะ แก้โปรแกรมเสร็จแล้วกด Upload ได้เลย

ผลที่ได้

คราวนี้อยากให้แจ้งเตือนตรงไหน ตอนไหนก็จัดไปเลยนะครับท่าน HONEYLemon สร้างสรรค์ความง่ายมาให้ท่านหมดแล้วชีวิตดีๆ ที่ลงตัว : )

basic

[BASIC] 010 TIME GET TIME ( เวลา )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการอ่านข้อมูล Time ซึ่งจะทำการดึงข้อมูลจากอินเตอร์เน็ตผ่าน WiFi

อ่านข้อมูลเพิ่มเติมสำหรับการเชื่อมต่อ WiFi https://lemon.honey.co.th/basic-007-wifi-setup-wifi-ต่อเน็ต/

เมื่อเชื่อมต่อ WiFi ได้แล้วจากบทความข้างต้น ระบบก็จะทำการ sync เวลาให้อัตโนมัติ คราวนี้ก็ทำการดึงข้อมูลมาได้เลย

คำสั่งที่เกี่ยวข้อง

        getTime()           // อ่านค่าเวลา ชั่วโมง:นาที:วินาที Hour:Minute:Second (String)
        getTime_Hour()      // อ่านค่าชั่วโมง Hour   0-23  (int)
        getTime_Minute()    // อ่านค่านาที Minute 0-60  (int)
        getTime_Second()    // อ่านค่าวินาที Second 0-60  (int)

ตัวอย่างการใช้งาน

String time = lemon.getTime();           // อ่านค่าเวลา ชั่วโมง:นาที:วินาที Hour:Minute:Second (String)
int h = lemon.getTime_Hour();      // อ่านค่าชั่วโมง Hour   0-23  (int)
int m = lemon.getTime_Minute();    // อ่านค่านาที Minute 0-60  (int)
int s = lemon.getTime_Second()    // อ่านค่าวินาที Second 0-60  (int)

ตัวอย่าง source code

basic

[BASIC] 009 TIME GET DATE ( วัน )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการอ่านข้อมูล Date ซึ่งจะทำการดึงข้อมูลจากอินเตอร์เน็ตผ่าน WiFi

อ่านข้อมูลเพิ่มเติมสำหรับการเชื่อมต่อ WiFi https://lemon.honey.co.th/basic-007-wifi-setup-wifi-ต่อเน็ต/

เมื่อเชื่อมต่อ WiFi ได้แล้วจากบทความข้างต้น ระบบก็จะทำการ sync เวลาให้อัตโนมัติ คราวนี้ก็ทำการดึงข้อมูลมาได้เลย

คำสั่งที่เกี่ยวข้อง

        getDate()       // อ่านค่าวันที่ ปี-เดือน-วัน (Year-Month-Day) (String)
        getDate_Day()   // อ่านค่าวันที่ Day 1-31    (int)
        getDate_Mouth() // อ่านค่าเดือน Mouth 1-12 (int)
        getDate_Year()  // อ่านค่าปี (ค.ศ.)        (int)

ตัวอย่างการใช้งาน

    String date = lemon.getDate();       // อ่านค่าวันที่ ปี-เดือน-วัน (Year-Month-Day) (String)
    int d = lemon.getDate_Day();   // อ่านค่าวันที่ Day 1-31    (int)
    int m = lemon.getDate_Mouth(); // อ่านค่าเดือน Mouth 1-12 (int)
    int y = lemon.getDate_Year();  // อ่านค่าปี (ค.ศ.)        (int)

ตัวอย่าง source code

basic

[BASIC] 008 TIME GET DATETIME ( วันเวลา )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการอ่านข้อมูล Date Time ซึ่งจะทำการดึงข้อมูลจากอินเตอร์เน็ตผ่าน WiFi

อ่านข้อมูลเพิ่มเติมสำหรับการเชื่อมต่อ WiFi https://lemon.honey.co.th/basic-007-wifi-setup-wifi-ต่อเน็ต/

เมื่อเชื่อมต่อ WiFi ได้แล้วจากบทความข้างต้น ระบบก็จะทำการ sync เวลาให้อัตโนมัติ คราวนี้ก็ทำการดึงข้อมูลมาได้เลย

คำสั่งที่เกี่ยวข้อง

lemon.getDateTime();

ซึ่งจะได้ข้อมูลแสดงค่าวันเวลาตามรูปแบบ Year-Month-Day T Hour:Minute:Second

เช่น 2020-01-16T19:29:39
วันที่ 16 เดือน 01 ปี 2020
เวลา 19 นาฬิกา 29 นาที 39 วินาที

ตัวอย่าง source code

basic

[BASIC] 007 WiFi SETUP WiFi ( ต่อเน็ต )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการเชื่อมต่อ WiFi บนบอร์ดเพื่อให้สามารถใช้งานอินเตอร์เน็ตได้

สำหรับการต่อ WiFi บนบอร์ด HONEYLemon นั้นสามารถใช้เพียงคำสั่งเดียวก็สามารถเชื่อมต่ออินเตอร์เน็ตผ่าน WiFi ได้แล้ว โดยใช้คำสั่ง

lemon.setupWiFi(WIFI_SSID, WIFI_PASS);

โดยที่ WIFI_SSID เป็นชื่อ WiFi และ WIFI_PASS เป็นรหัสผ่าน WIFI

ตัวอย่างการใช้งาน *แนะนำว่าควรอยู่ใน void setup() เพื่อให้เชื่อมต่อ WiFi ในกระบวนการเริ่มต้นของระบบ

void setup(){
...
    lemon.setupWiFi("myHOME", "12345678"); // เชื่อมต่ออินเตอร์เน็ตชื่อ myHOME ด้วยรหัสผ่าน 12345678
...
}

แล้วถ้าหากมี WiFi หลายๆ ตัวละ จะทำยังไง สำหรับบอร์ด HONEYLemon บน library ของ HONEYLemon เองได้คิดเรื่องนี้ไว้ให้ท่านเรียบร้อยแล้วสามารถใช้คำสั่งเดิมในการเพิ่มช่องทางในการเชื่อมต่อ WiFi ของท่านได้เลย เช่น มี WiFi ที่ต้องการเชื่อมต่อ 3 ชื่อที่เป็นไปได้ว่าจะใช้งาน
1. ชื่อ WiFi : myHOME รหัส 12345678
2. ชื่อ WiFi : HONEYLab รหัส @HONEYLab
3. ชื่อ WiFi : HONEYLemon รหัส HONEYLemon

void setup(){
...
    lemon.setupWiFi("myHOME", "12345678");
    lemon.setupWiFi("HONEYLab", "@HONEYLab");
    lemon.setupWiFi("HONEYLemon", "HONEYLemon");
...
}

สะดวกง่ายและรวดเร็วดีไหมครับ : )

ตัวอย่าง source code

basic

[BASIC] 006 MICRO SD CARD ( ไฟล์บนไมโครเอสดีการ์ด )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการจัดการไฟล์บน Micro-SD Card ซึ่งผู้พัฒนาได้พัฒนา library ให้สามารถใช้งานได้ง่ายมาก และรองรับบนบอร์ดเลยไม่ต้องซื้ออุปกรณ์ต่อเพิ่ม

คำสั่งที่เกี่ยวข้องการการอ่านเขียนไฟล์บน Micro-SD Card
lemon.createFile() // เป็นฟังก์ชั่นสำหรับการสร้างไฟล์
lemon.writeFile() // เป็นฟังก์ชั่นสำหรับการเขียนไฟล์
lemon.writeFileln() // เป็นฟังก์ชั้นสำหรับการเขียนไฟล์และเว้นบรรทัด
lemon.readFile() // เป็นฟังก์ชั่นสำหรับการอ่านไฟล์
lemon.renameFile() // เป็นฟังก์ชั่นสำหรับการเปลี่ยนชื่อไฟล์
lemon.removeFile() // เป็นฟังก์ชั่นสำหรับการลบไฟล์

//Micro SD Card Function
        
createFile(__Filename__)                // สำหรับสร้างไฟล์บนไมโครเอสดีการ์ด
        
writeFile(__Filename__, __Text__)       // สำหรับเขียนตัวอักษรลงบนไฟล์ในไมโครเอสดีการ์ด
writeFileln(__Filename__, __Text__)     // สำหรับเขียนตัวอักษรลงบนไฟล์ในไมโครเอสดีการ์ด พร้อมเว้นบรรทัด

readFile(__Filename__)                  // สำหรับอ่านไฟล์ โดยจะคืนค่าเป็นสตริง (String)
removeFile(__Filename__)                // สำหรับลบไฟล์
        
renameFile(old___Filename__,new___Filename__)   // สำหรับเปลี่ยนชื่อไฟล์

ตัวอย่างการใช้งาน

...
   lemon.createFile("text.txt");                        // สร้างไฟล์ชื่อว่า text.txt
   lemon.writeFile("text.txt","Hello HONEYLemon\n");    // เขียนข้อความว่า "Hello HONEYLemon" ลงในไฟล์ text.txt
   
   Serial.println( lemon.readFile("text.txt") );        // อ่านไฟล์ text.txt (String) แล้วแสดงผล

   lemon.renameFile("text.txt","text.txt.backup");      // เปลี่ยนชื่อไฟล์ text.txt เป็น text.txt.backup
   lemon.removeFile("text.txt.backup");                 // ลบไฟล์ text.txt.backup
...

ตัวอย่าง source code

basic

[BASIC] 005 SOUND PLAY JINGLE BELLS ( เล่นเพลง จิงเกิลเบลส์ )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับเสียง โดยการเล่นเป็นเพลงตามตัวโน๊ต ต่างๆ

อ่านข้อมูลเพิ่มเติมในการประยุกต์ใช้คำสั่งเกี่ยวกับเสียงได้ที่นี่ https://lemon.honey.co.th/basic-004-sound-tone-buzzer-เสียงดนตรี/

บทความนี้เป็นการประยุกต์ใช้คำสั่ง lemon.tone() และ lemon.noTone()
ในกระบวนการแรกของการสั่งให้เล่นดนตรีเป็นเพลงนั้นจะต้องมีข้อมูลตัวโน๊ตก่อนว่า ตัวโน๊ตแต่ละตัวมีความถี่อะไรและเราจะเอามาต่อกันเป็น Melody

ผลการค้นหารูปภาพสำหรับ buzzer frequency to notes

จากตารางข้างต้นเราจะได้ตัวโน๊ตและความถี่ของเสียงแล้ว หลังจากนั้นเราก็แปลงโน๊ตเป็นความถี่กันครับ เช่น C จะได้ความถี่ 523 เป็นต้น

เมื่อครบทุกตัวอักษรแล้วเราก็มาสร้างอาเรย์เก็บตัวโน๊ตต่างๆ กันครับ

...
    // สร้างอาเรย์สำหรับเก็บข้อมูลตัวโน๊ต
    int notes[]={
        659, 659, 659, -1,  659, 659, 659, -1,  659, 784, 523,
        587, 659, -1,  698, 698, -1,  698, 698, -1,  698, 659,
        659, 659, 659, -1,  659, 587, 587, 659, 587, 784
    };
...

เมื่อได้เป็นเพลงแล้วเราก็เริ่มสั่งให้โปรแกรมทำงานเล่นเพลงนี้กันเลย โดยให้เล่นทีละตัวโน๊ตไปเรื่อยๆ จนกว่าจะครบทุกตัว

...
    // วนอ่านข้อมูลตัวโน๊ตแต่ละตัวในอาเรย์ notes[]
    for(int i=0;i<(sizeof(notes)/sizeof(int *));i++){
        lemon.tone(notes[i],400);   // สั่งให้เล่นตัวโน๊ต
    }
...

อธิบายคำสั่งเพิ่มเติม

for(
    int i=0;  // สร้าง i เป็นตัวแปร int เพื่อเป็น index ให้ array ของตัวโน๊ต
    i<(sizeof(notes)/sizeof(int *)); // ตรวจสอบว่าตอนนี้ที่เล่นอยู่เป็นตัวสุดท้ายหรือยัง
    i++)  // ถ้าไม่ใช่ตัวสุดท้ายให้เล่นโน๊ตตัวถัดไป

ภายในคำสั่งวนลูป หรือทำซ้ำ ( for ) นั้นใช้คำสั่ง lemon.tone() เพื่อให้เล่นตัวโน๊ตนั้นๆ

lemon.tone(notes[i],400);
// อธิบายเพิ่มเติม
lemon.tone(    // คำสั่งสำหรับเล่นตัวโน๊ตตามความถี่ต่างๆ
    notes[i],  // เลือกตัวโน๊ตจาก array โดยอ้างอิงจากตัวที่ i เช่น i=0 หมายถึงตัวแรก
    400        // เล่นนานเป็นระยะเวลา 400 มิลลิวินาที (0.4 วินาที) แล้วหยุดเล่น
);

ดังนั้นเมื่อทำงานร่วมกันแล้วสิ่งที่เกิดขึ้นคือ…

    int notes[]={
        659, 659, 659, -1,  659, 659, 659, -1,  659, 784, 523,
        587, 659, -1,  698, 698, -1,  698, 698, -1,  698, 659,
        659, 659, 659, -1,  659, 587, 587, 659, 587, 784
    };

    for(int i=0;i<(sizeof(notes)/sizeof(int *));i++){
        lemon.tone(notes[i],400);   // สั่งให้เล่นตัวโน๊ต
    }

// 1.สร้างตัวแปร array ชื่อ notes เพื่อจัดเก็บความถี่ของโน๊ตดนตรี ประกอบกันเป็น melody
// 2.ใช้คำสั่งทำซ้ำ loop โดยให้เล่นตั้งแต่โน๊ตตัวแรก (0) ไปจนถึงตัวสุดท้าย
// 3.โน๊ตแต่ละตัวเล่นนานระยะเวลา 0.4 วินาที แล้วจึงเล่นตัวถัดไป

ตัวอย่าง source code

basic

[BASIC] 004 SOUND TONE BUZZER ( เสียงดนตรี )

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับเสียง ซึ่งจะแบ่งฟังก์ชั่นที่เกี่ยวข้องออก 2 เป็นแบบคือ เล่นเสียงตามความถี่และหยุดการเล่นเสียงดนตรี

คำสั่งที่เกี่ยวข้อง
lemon.tone() // เป็นการสั่งให้เล่นเสียงดนตรี
lemon.noTone() // เป็นการสั่งให้หยุดเล่นเสียงดนตรี

lemon.tone(1000); // เป็นการสั่งให้เล่นความถี่ 1000 Hz โดยไม่มีการหยุด
lemon.tone(1000,500);  // เป็นการสั่งให้เล่นความถี่ 1000 Hz เป็นเวลา 500 มิลลิวินาที ( 0.5 วินาที ) แล้วหยุดเล่นเสียงนั้น

lemon.noTone();  // เป็นการสั่งให้หยุดเล่นเสียงดนตรี

ตัวอย่างการใช้คำสั่ง

lemon.tone(1000);  // สั่งให้เล่นความถี่ 1000 Hz
delay(1000);       // รอ 1000 มิลลิวินาที ( 1 วินาที ) (ขณะนี้เสียงยังดังอยู่)
lemon.noTone(500); // สั่งให้หยุดเล่นเสียง

เพื่อให้กระชับในการเขียนโปรแกรมบนบอร์ด HONEYLemon ก็สามารถเขียนได้ดังนี้

lemon.tone(1000,500);  //เป็นการสั่งให้เล่นความถี่ 1000 Hz เป็นระยะเวลา 500 มิลลิวินาที ( 0.5 วินาที ) แล้วจึงหยุดเล่นเสียงนั้น

ตัวอย่าง source code