วันอาทิตย์ที่ 30 กันยายน พ.ศ. 2561

มินิโปรเจค ให้อาหารปลาด้วย arduino



มินิโปรเจค ให้อาหารปลาด้วย  arduino







อุปกรณ์

  1. อาดูโน่  R3
  2. โมดูล จอLCD 0x27
  3. คีย์แพด 3x4
  4. เซอร์โว มอเตอร์ SG180
  5. สายไฟ
  6. โฟโต้บอร์ด (ขนาดเล็ก)
  7. ไม้อัด
  8. น็อต ผู้+เมีย
  9. กาว
  10. เคเบิ้ลไทล์



ตัวอย่างการต่อ






ตัวอย่าง "ชิ้นงานจริงหลังจากประกอบเสร็จ"










บล็อกไดอะแกรม





ตัวอย่างโค้ด


#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); คือคำสั่งพิเศษ คีลแพด

instance of class NewKeypad ค่าตัวแปล Keypad 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

ช่ื่อผู้จัดทำ

  1. นายกฤษฎา แหยมนุช
  2. นายวิทษรุจน์ คงอ่วมท่างาม




ไม่มีความคิดเห็น:

แสดงความคิดเห็น