Album
米Teen唔鐘意玩現成品,喜歡由零件開始砌。99次失敗唔係問題,最緊要係有1次成功!
米Teen總部設在聖公會白約翰會督中學506室,在午膳後和放學後集會。有興趣參與的同學,請與會長或導師聯絡。
2025-10-29 05:09:40
溫度24℃ 濕度87% 氣壓1016.85hPa
2025-10-27 17:51:30
閃電31km (0)
2025-10-25 14:35:14
閃電27km (0)
2025-10-25 14:35:12
閃電31km (0)
2025-10-25 13:35:24
閃電27km (0)
2025-10-23 18:02:19
閃電31km (0)
2025-10-23 15:24:38
閃電27km (0)
2025-10-22 15:02:29
閃電24km (0)
2025-10-20 13:12:33
閃電31km (0)
2025-10-18 12:10:46
閃電27km (0)
2025-10-18 07:46:23
閃電27km (0)
溫度24℃ 濕度87% 氣壓1016.85hPa
2025-10-27 17:51:30
閃電31km (0)
2025-10-25 14:35:14
閃電27km (0)
2025-10-25 14:35:12
閃電31km (0)
2025-10-25 13:35:24
閃電27km (0)
2025-10-23 18:02:19
閃電31km (0)
2025-10-23 15:24:38
閃電27km (0)
2025-10-22 15:02:29
閃電24km (0)
2025-10-20 13:12:33
閃電31km (0)
2025-10-18 12:10:46
閃電27km (0)
2025-10-18 07:46:23
閃電27km (0)
水耕種植機控制器
>>水耕種植機控制器...
設計
市面上有許多水耕種植機,價錢由幾百到過萬都有。因為QEF計劃要發展環控種植,所以先DIY一座水耕機來吸收經驗。這部機的設計可以獨立調控各色LED的開關,營養液的循環輸送時間,漏走殘留在水喉的"死水"。還要考慮安全泵出營養液的方法,避色植物根部阻塞膠喉而導致滿溢或水缸缺而開動水泵。
主要組件
- 在淘寶買的水耕膠喉
- Arduino UNO
- Relay module x 2
- 紅,白,藍LED光帶
- 浮球開關Ball float type level detector (float ball)
- 光敏電阻
- 電動水閥Valve
- 警告燈
- 水底泵
- 舊的PC電源供應器(改裝)
Arduino原始碼
/* Hydroponics Controller
Version 2
2018.4.19
Matthew Li
*/
// Digital Output Pins
const int resetPin=12;
const int whiteLEDPin = 7;
const int redLEDPin = 6;
const int blueLEDPin = 5;
const int valvePin = 4;
const int warningLEDPin = 3;
const int pumpPin = 2;
// Digital Input Pins
const int overflowBallPin = 9; // float switch, overflow
const int bottomBallPin = 10; // float switch, detect bottom water level
const int topBallPin = 11; // float switch, detect top water level
// Analog Input Pins
const int CDSPin = A0; // map input voltages between 0 and 5 volts into integer values between 0 and 1023
// Constant parameters
const int CDSThreshold=400; // In darkness, CDS value gets higher
const long LEDOnOffInterval=10000L; // this sets the minimum interval for LED=ON state, 10 seconds
const long pumpOnInterval=30000L; // pump on interval, 30 seconds
const long pumpOffInterval=240000L; // pump off interval, 240 seconds
const long pumpPauseInterval=10000L; // pump off interval if overflow occurs, 10 seconds
const long resetInterval=10*24*60*60*1000L; // reset Arduino regularly, reset the timer, for every 10 days
// Variables
long lastLEDOnTime=0;
long lastPumpOnTime=0;
long lastPumpOffTime=0;
long lastPumpPauseTime=0;
long currentTime=0;
int CDSValue = 0;
int pumpState=LOW;
bool pumpPauseState=false;
void setup() {
digitalWrite(resetPin,HIGH);pinMode(resetPin,OUTPUT);digitalWrite(resetPin,HIGH); // these statements must be put at the first line & execute immediately
// initialize serial communication at 9600 bits per second, for debug
Serial.begin(9600);
pinMode(whiteLEDPin, OUTPUT);
pinMode(redLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);
pinMode(valvePin, OUTPUT);
pinMode(warningLEDPin, OUTPUT);
pinMode(pumpPin, OUTPUT);
pinMode(overflowBallPin, INPUT_PULLUP); // use built-in 20K pullup resistors
pinMode(bottomBallPin, INPUT_PULLUP); // use built-in 20K pullup resistors
pinMode(topBallPin, INPUT_PULLUP); // use built-in 20K pullup resistors
digitalWrite(whiteLEDPin,LOW);
digitalWrite(redLEDPin,LOW);
digitalWrite(blueLEDPin,LOW);
digitalWrite(valvePin,LOW);
digitalWrite(warningLEDPin,LOW);
digitalWrite(pumpPin,LOW);
currentTime=millis(); // returns the number of milliseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 49.7 days.
// currentTime is long, millis() is unsigned long, therefore, must handle the case after 20 days
lastPumpOffTime=-pumpOffInterval-1000; // To start immediately
// lastPumpOffTime=currentTime; // To start after pumpOffInterval
}
void loop() {
currentTime=millis();
CDSValue=analogRead(CDSPin);
if (CDSValue>=CDSThreshold) {
lastLEDOnTime=currentTime;
}
if (CDSValue>=CDSThreshold || (currentTime-lastLEDOnTime)pumpOffInterval && digitalRead(topBallPin)==HIGH && digitalRead(bottomBallPin)==HIGH && digitalRead(overflowBallPin)==LOW) {
pumpState=HIGH;
digitalWrite(pumpPin,pumpState);
digitalWrite(valvePin,HIGH);
lastPumpOnTime=currentTime;
pumpPauseState=false;
}
if (pumpState==HIGH && (currentTime-lastPumpOnTime)>pumpOnInterval || digitalRead(bottomBallPin)==LOW) {
pumpState=LOW;
digitalWrite(pumpPin,pumpState);
digitalWrite(valvePin,LOW);
lastPumpOffTime=currentTime;
pumpPauseState=false;
}
if (pumpState==HIGH && (currentTime-lastPumpOnTime)pumpPauseInterval && digitalRead(bottomBallPin)==HIGH && pumpPauseState==true && digitalRead(overflowBallPin)==LOW) {
pumpPauseState=false;
digitalWrite(pumpPin,HIGH);
}
/*
// for debug only
Serial.print("current ");
Serial.print(currentTime/1000,1);
Serial.print(" CDS ");
Serial.print(CDSValue);
Serial.print(" Last pump on ");
Serial.print(lastPumpOnTime/1000,1);
Serial.print(" diff. ");
Serial.print((currentTime-lastPumpOnTime)/1000,1);
Serial.print(" Overflow sensor. ");
Serial.print(digitalRead(overflowBallPin));
Serial.print(" Last pump pause ");
Serial.print(lastPumpPauseTime/1000,1);
Serial.print(" diff. ");
Serial.print((currentTime-lastPumpPauseTime)/1000,1);
Serial.println();
*/
delay(100);
// Reset Arduino regularly
if (currentTime>resetInterval)
digitalWrite(resetPin,LOW);
}
Album
米Teen唔鐘意玩現成品,喜歡由零件開始砌。99次失敗唔係問題,最緊要係有1次成功!
米Teen總部設在聖公會白約翰會督中學506室,在午膳後和放學後集會。有興趣參與的同學,請與會長或導師聯絡。
2025-10-29 05:09:40
溫度24℃ 濕度87% 氣壓1016.85hPa
2025-10-27 17:51:30
閃電31km (0)
2025-10-25 14:35:14
閃電27km (0)
2025-10-25 14:35:12
閃電31km (0)
2025-10-25 13:35:24
閃電27km (0)
2025-10-23 18:02:19
閃電31km (0)
2025-10-23 15:24:38
閃電27km (0)
2025-10-22 15:02:29
閃電24km (0)
2025-10-20 13:12:33
閃電31km (0)
2025-10-18 12:10:46
閃電27km (0)
2025-10-18 07:46:23
閃電27km (0)
溫度24℃ 濕度87% 氣壓1016.85hPa
2025-10-27 17:51:30
閃電31km (0)
2025-10-25 14:35:14
閃電27km (0)
2025-10-25 14:35:12
閃電31km (0)
2025-10-25 13:35:24
閃電27km (0)
2025-10-23 18:02:19
閃電31km (0)
2025-10-23 15:24:38
閃電27km (0)
2025-10-22 15:02:29
閃電24km (0)
2025-10-20 13:12:33
閃電31km (0)
2025-10-18 12:10:46
閃電27km (0)
2025-10-18 07:46:23
閃電27km (0)

絕不能在一粒細小的電阻上印上數字來表表它的阻值,只能用色條來表示。記熟了這些色碼(Resistor Color Code),就能隨時讀出一粒電阻的阻值了。
晶體管(Transistor)有很多用途,只要了解幾款晶體管的特性,已能解決大部份驅動電路(Driver circuit)的問題了。
Arduino,電子線路,網站設計等等。