มินิโปรเจค ให้อาหารปลาด้วย arduino
มินิโปรเจค ให้อาหารปลาด้วย
arduino
อุปกรณ์
- อาดูโน่ R3
- โมดูล จอLCD 0x27
- คีย์แพด 3x4
- เซอร์โว มอเตอร์ SG180
- สายไฟ
- โฟโต้บอร์ด (ขนาดเล็ก)
- ไม้อัด
- น็อต ผู้+เมีย
- กาว
- เคเบิ้ลไทล์
ตัวอย่างการต่อ
ตัวอย่าง "ชิ้นงานจริงหลังจากประกอบเสร็จ"
บล็อกไดอะแกรม
ตัวอย่างโค้ด
#include <Keypad.h> เรียกใช้ไลบารี่ #include <Servo.h> เรียกใช้ไลบารี่
#include <Wire.h> เรียกใช้ไลบารี่ #include <LiquidCrystal_I2C.h> เรียกใช้ไลบารี่ LiquidCrystal_I2C lcd(0x27,16,2); กำหนดขนาดจอLCD Servo myservo; ประกาศเรียกใช้ Servo myservo จากไลบารี่ int pos = 0; ตัวแปร เท่ากับ 0 char customKey; ประกาศตัวแปรcustomkey const byte ROWS = 4; การประกาศตัวแปร ROWS ไว้ที่ขา4
const byte COLS = 4; การประกาศตัวแปร COLS ไว้ที่ขา4 char keys[ROWS][COLS] = { ประกาศตัวแปร อาเร {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte rowPins[ROWS] = {2, 3, 4, 5}; กำหนดขา 2 3 4 5 byte colPins[COLS] = {6, 7, 8}; กำหนดขา 6 7 8 Keypad customKeypad ( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initialize an คือคำสั่งพิเศษ คีลแพด
instance of class NewKeypad int Kill = 0; ประกาศตัวแปร เท่ากับ 0
void setup() {
myservo.attach(9); กำหนดขาที่ 9 Serial.begin(9600); กำหนดค่าเริ่มต้น9600 lcd.begin(); กำหนดค่าเริ่มต้นLCD lcd.setBacklight(255); คือกำหนดแสงที่จอ LCD lcd.print("Kitsada 01"); คือ การแสดงผล lcd.setCursor(0, 1); เซต ตำแหน่ง 0,1 lcd.print("witsarut 16"); คือ การแสดงผล delay(3000); สั่งรีเลย์ เท่ากับ 3วิ lcd.clear(); คือ ลบผลจอ lcd
pos = 8000; ค่าตัวแปร เท่ากับ 8000 lcd.setCursor(5, 0); เซต ตำแหน่งคำ 5,0 lcd.print("Mode 1"); คือ การแสดงผลจอ lcd.setCursor(5, 1); เซตตำแหน่งคำ 5,1 lcd.print("5 ms"); แสดงผลจอ5 ms } void loop() { static unsigned long Time = millis(); คือ กำหนดTime เท่ากับ ค่าเวลา
customKey = customKeypad.getKey(); customkey รับค่าจากคีย์แพด
if (customKey){ ถ้ามี การกดที่คีย์แพดจะแสดงออกมาที่จอมอนิเตอร์ Serial.println(customKey); }
if (customKey == '1'){ ถ้า coustomkey เท่ากับ 1 pos = 8000; pos เท่ากับ 8000 Kill = 1; kill เท่ากับ 1 คือตัวตั้งค่าโหมด 1 lcd.setCursor(5,0); เซตค่าตำแหน่งแถวที่ 5บรรทัด0 lcd.print("Mode 1"); แสดงคำนี้ออกไป 1 lcd.setCursor(5, 1); เซตค่าตำแหน่งแถวที่ 5บรรทัด1 lcd.print("5 ms"); แสดง5 ms }
if (customKey == '2'){ ถ้าcustomkey เท่ากับ 2 pos = 13000; pos เท่ากับ 13000 Kill = 2; kill เท่ากับ 2 คือการตั้งค่าโหมด 2 lcd.setCursor(5, 0);; เซตค่าตำแหน่งแถวที่ 5 บรนทัดที่0 lcd.print("Mode 2"); แสดงคำนี้ออกไป 2 lcd.setCursor(5, 1);; เซตค่าตำแหน่งแถวที่5 บรรทัดที่1 lcd.print("10 ms"); แสดง 10ms }
if (customKey == '3'){ ถ้าcustomkey เท่ากับ 3 pos = 23000; posเท่ากับ 23000 Kill = 3; kill เท่ากับ 3 คือการตั้งค่าโหมด 3 lcd.setCursor(5, 0); เซตค่าตำแหน่งแถวที่ 5 บรรทัดที่0 lcd.print("Mode 3"); แสดงคำนี้ออกไป 3 lcd.setCursor(5, 1);; เซตค่าตำแหน่งแถวที่5 บรรทัดที่1 lcd.print("20 ms"); แสดง 20ms }
if((millis()-Time)>pos){ ถ้า millis ลบกับ time แล้วมากกว่า pos คำสั่งที่ตั้งไว้ก้จะทำงาน หรือ ถ้าเวลาถึงค่าของ pos ก็จะทำงาน
Time = millis(); Time เท่ากับ mills หรือค่าเวลา myservo.write(0); คือคำสั่งให้มอเตอร์ หมุน0 องศา delay(3000); รีเลย์ เท่ากับ 3วิ }
else{ ถ้าคำสั่ง if ไม่เป็นจริง myservo.write(90); คือคำสั่งให้มอเตอร์ หมุน90 องศา } }
วีดีโอตัวอย่าง "การทำงาน"
ลิงก์วีดีโอ: https://youtu.be/QJgBY-XWTZ0
ช่ื่อผู้จัดทำ
- นายกฤษฎา แหยมนุช
- นายวิทษรุจน์ คงอ่วมท่างาม
ความคิดเห็น
แสดงความคิดเห็น