Lab 4 การสร้างถังขยะอัตโนมัติจากบอร์ด Lotus Nano Bot

การทำงานของถังขยะเบื้องต้นเมื่อเจอคนในระยะห่างจากถังขยะประมาณ 50 เซนติเมตร ถังขยะจะทำการเปิดอัตโนมัติและเล่นเพลงซุปเปอร์มาริโอประมาณ 1 ท่อนหลังจากนั้นถังขยะจะปิดถังลงเองอัตโนมัติ

อุปกรณ์ที่ใช้งาน

1. โมดูล Ultrasonic 1 ตัว

2. บอร์ดLotus Nano Bot หรือบอร์ดNano+Shield

3. สายสัญญาณ

4. Adapter 9 Vdc 1 A

5. สาย Mini USB สำหรับโหลดCode

6. ถังขยะขนาดเล็ก

7. เซอร์โวมอเตอร์

8. อะคลีลิค + และชิ้นงานจาก 3D Printer

กรณีการต่อวงจรผ่านบอร์ด Lotus Nano Bot

กรณีการต่อวงจรผ่านบอร์ด Arduino Nano + Shield จีน

ตัวอย่าง Code การใช้งานเบื้องต้น

Arduino IDE Code

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#include <Servo.h> // ผนวกไลบรารี่

Adafruit_SSD1306 OLED(-1);

///////////////////////////////////////

int s1 = 10; // เปิดใช้งาน s1 ที่พอร์ต 10

Servo sv1; // ประกาศการใช้งาน sv1

////////////////////////////////////////

int trig = A0; // ให้ขา Trig ต่อเข้ากับพอร์ต A0

int echo = A1; // ให้ขา Echo ต่อเข้ากับพอร์ต A1

int snd = 3 ; // ตั้งค่า snd เป็นพอร์ตที่ 3

////////////////////////////////////////

void setup() {

OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C); // กำหนดแอดเดรสของพอร์ตจอเป็น 0x3C (for the 128x64)

sv1.attach(s1); // เรียกใช้งานเตรียมตอบสนอง sv1

}

void loop()

{

long duration, cm;

pinMode(trig, OUTPUT);

digitalWrite(trig, LOW);

delayMicroseconds(2);

digitalWrite(trig, HIGH);

delayMicroseconds(5);

digitalWrite(trig, LOW);

pinMode(echo, INPUT);

duration = pulseIn(echo, HIGH);

cm = microsecondsToCentimeters(duration);

OLED.clearDisplay();

OLED.setTextColor(WHITE, BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ

OLED.setCursor(0, 0); // เซตตำแหน่ง 0,0

OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 1

OLED.println(" KAMALASAI"); // พิมพ์ตัวอักษรที่จอ OLED คำว่า Distance

OLED.println(".........."); // พิมพ์ตัวอักษรที่จอ OLED คำว่า .............

OLED.print(" "); // เว้นวรรคที่จอ OLED

OLED.print(cm); // พิมพ์ตัวอักษรที่จอ OLED อ่านค่าตัวแปร cm

OLED.println("cm");// พิมพ์ตัวอักษรที่จอ OLED คำว่า cm

OLED.println(".........."); // พิมพ์ตัวอักษรที่จอ OLED คำว่า .............

OLED.display(); // แสดงผลการทำงานจอ OLED

delay(50); // หน่วงเวลาการทำงานทุกๆ 50 มิลลิวินาที

if (cm < 50){ sv1.write(29);mario(); }//ถ้าเจอในระยะ เปิด

else {sv1.write(119);} //ถ้าไม่เจอ ปิด

}

long microsecondsToCentimeters(long microseconds)

{

return microseconds / 29 / 2;

}

void mario()

{

tone(snd, 660, 100);

delay(150);

tone(snd, 660, 100);

delay(300);

tone(snd, 660, 100);

delay(300);

tone(snd, 510, 100);

delay(100);

tone(snd, 660, 100);

delay(300);

tone(snd, 770, 100);

delay(550);

tone(snd, 380, 100);

delay(575);

tone(snd, 510, 100);

delay(450);

tone(snd, 380, 100);

delay(400);

tone(snd, 320, 100);

delay(500);

tone(snd, 440, 100);

delay(300);

tone(snd, 480, 80);

delay(330);

tone(snd, 450, 100);

delay(150);

tone(snd, 430, 100);

delay(300);

tone(snd, 380, 100);

delay(200);

tone(snd, 660, 80);

delay(200);

tone(snd, 760, 50);

delay(150);

tone(snd, 860, 100);

delay(300);

tone(snd, 700, 80);

delay(150);

tone(snd, 760, 50);

delay(350);

tone(snd, 660, 80);

delay(300);

tone(snd, 520, 80);

delay(150);

tone(snd, 580, 80);

delay(150);

tone(snd, 480, 80);

delay(500);

}