Penerangan Projek:
1 Mesin ini dapat mengasingkan buah tomato berdasarkan warna buah tersebut.
2 Mesin ini juga dapat mengasingkan buah tomato mengikut skala berat yang telah
ditetapkan.
3 Mesin ini dapat beroperasi secara automatik dan dikendalikan oleh seorang pekerja
sahaja.
<Objektif Projek>
Terdapat beberapa objektif yang ingin dicapai dalam pelaksanaan mesin pengasingan
tomato ini antaranya:
1. Mengasingkan tomato yang masak dan kurang masak mengikut warna yang telah
ditetapkan.
2. Mengasingkan tomato yang dipetik berdasarkan julat berat yang telah ditetapkan.
3. Membangunkan mesin pengasingan tomato secara automatik
(10 Marks)
INPUT DEVICE
1
Pin 3 Start Button To start the machine
OUTPUT DEVICE
Pin 9 Servo motor 360° Use as part feeder to make sure tomato
is checked one by one
Pin 10 Servo motor 180° Use as stopper to stop the tomato at the
checking position
(10 Marks)
(10 Marks)
[PROGRAM CODING]
#include <Arduino.h>
#include <Wire.h>
2
#include <SoftwareSerial.h>
#include <HX711.h>
#include <Servo.h>
Servo myservo;
Servo servo_10;
Servo servo_11;
Servo servo_12;
Servo servo_13;
#define DOUT 16
#define CLK 17
int Reading = 0;
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int greenColor = 0;
/* ******************************************************************** */
void setup() {
3
// put your setup code here, to run once:
Serial.begin(9600);
scale.set_scale();
Serial.print("Reading: ");
Serial.print(scale.get_units(), 3);
Serial.print(" kg");
Serial.println(" ");
Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale.
Useful in permanent scale projects.
Serial.println(zero_factor);
myservo.attach(9);
4
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
digitalWrite(S0,HIGH);
digitalWrite(S1,HIGH);
/* ******************************************************************** */
void loop() {
PartFeeder();
Color();
LoadCell();
delay(500);
Sensor();
Calibrate();
void Sensor(){
if(( greenColor < 64) && (0.010 <= (scale.get_units() <= 0.080)))
5
{//HIJAU RINGAN
Pintu();
Gate2();}
else if(( greenColor >= 64) && (0.010 <= (scale.get_units() >= 0.081)))
{//MERAH BERAT
Pintu();
Gate1();}
else if(( greenColor < 64) && (0.010 <= (scale.get_units() >= 0.081)))
{//HIJAU BERAT
Pintu();
Gate4();}
else if(( greenColor >= 64) && (0.010 <= (scale.get_units() <= 0.080)))
{//MERAH RINGAN
Pintu();
Gate3();}}
else{
Serial.print("****EMPTY****");
Serial.println(" ");
Serial.println(" ");
delay(1000);
PartFeeder();
6
}
void PartFeeder()
{ servo_10.write(0);
myservo.write(99);
delay(2550);
myservo.write(90);
delay(100);
servo_10.write(0);
void Pintu()
delay(1000);
//delay(1000);}
void Gate1()
Serial.print("MASUK 1");
Serial.println(" ");
Serial.println(" ");
delay(1000);
7
servo_10.write(75);
delay(3000);
Pintu();
PartFeeder();}
void Gate2()
Serial.print("MASUK 2");
Serial.println(" ");
Serial.println(" ");
delay(1000);
servo_10.write(75);
delay(5000);
Pintu();
PartFeeder();}
void Gate3()
Serial.print("MASUK 3");
Serial.println(" ");
Serial.println(" ");
8
servo_13.write(75); // write to servo
delay(1000);
servo_10.write(75);
delay(7000);
Pintu();
PartFeeder();
void Gate4()
Serial.print("MASUK 4");
Serial.println(" ");
Serial.println(" ");
9
delay(1000);
servo_10.write(75);
delay(9000);
Pintu();
PartFeeder();
void Color()
digitalWrite(S2,HIGH);
digitalWrite(S3,HIGH);
Serial.println(" ");
delay(500);}
void LoadCell()
{scale.set_scale(calibration_factor);
10
Serial.print("Calibration Factor");
Serial.print(calibration_factor);
Serial.println(" ");
Serial.print("Reading: ");
Serial.print(scale.get_units(), 3);
Serial.print(" kg");
Serial.println(" ");
delay(500);}
(20 Marks)
[PENERANGAN PROGRAM]
Apabila start button ditekan, mesin akan mula beroperasi. Part feeder akan berpusing dan
membenarkan hanya sebiji buah tomato untuk turun ke bahagian pemeriksaan warna dan
berat. Seterusnya colour sensor dan load cell akan menilai warna dan berat buat. Stopper
akan terbuka setelah mendapati kriteria buah tomato yang telah diperiksa. Konveyor akan
membawa buah tersebut dan buah tomato masuk ke bahagian pengasingan yang telah
ditetapkan.
11