Created
April 2, 2019 06:01
-
-
Save IdrisCytron/bb5c69de3a08e4f51cffd806b458e158 to your computer and use it in GitHub Desktop.
Controlling mini fan in manual and auto mode using Arduino.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Projek: Controlling mini fan in manual and auto mode | |
* using Arduino | |
* Board: Maker UNO (Arduino Uno) | |
*/ | |
#define NOTE_C4 262 | |
#define NOTE_D4 294 | |
#define NOTE_E4 330 | |
#define NOTE_F4 349 | |
#define BUTTON 2 | |
#define M1A 3 | |
#define PIEZO 8 | |
#define LM35 A0 | |
#define LED5 5 | |
#define LED6 6 | |
#define LED7 7 | |
int fanMode = 0; | |
int ledState = LOW; | |
long previousMillis = 0; | |
int interval = 500; | |
int celsius = 0; | |
enum { | |
STOP, | |
SPEED1, | |
SPEED2, | |
SPEED3, | |
AUTO | |
}; | |
void setup() | |
{ | |
pinMode(BUTTON, INPUT_PULLUP); | |
pinMode(M1A, OUTPUT); | |
pinMode(PIEZO, OUTPUT); | |
pinMode(LM35, INPUT); | |
pinMode(LED5, OUTPUT); | |
pinMode(LED6, OUTPUT); | |
pinMode(LED7, OUTPUT); | |
for (int pin = 9; pin < 14; pin++) { | |
pinMode(pin, OUTPUT); | |
} | |
Serial.begin(9600); | |
Serial.println("Reka Bentuk dan Teknologi Tingkatan 3"); | |
Serial.println("Projek: Naik Taraf Kipas Mini"); | |
} | |
void loop() | |
{ | |
if (digitalRead(BUTTON) == LOW) { | |
fanMode++; | |
if (fanMode > 4) { | |
fanMode = 0; | |
} | |
if (fanMode == STOP) { | |
Serial.println("Kipas berhenti."); | |
for (int pin = 8; pin < 14; pin++) { | |
digitalWrite(pin, LOW); | |
} | |
digitalWrite(LED5, LOW); | |
digitalWrite(LED6, LOW); | |
digitalWrite(LED7, LOW); | |
analogWrite(M1A, 0); | |
} | |
else if (fanMode == SPEED1) { | |
tone(PIEZO, NOTE_C4, 100); | |
delay(100); | |
noTone(PIEZO); | |
digitalWrite(LED5, HIGH); | |
analogWrite(M1A, 150); | |
Serial.println("Kipas berpusing: Kelajuan 1."); | |
} | |
else if (fanMode == SPEED2) { | |
tone(PIEZO, NOTE_D4, 100); | |
delay(100); | |
noTone(PIEZO); | |
digitalWrite(LED6, HIGH); | |
analogWrite(M1A, 200); | |
Serial.println("Kipas berpusing: Kelajuan 2."); | |
} | |
else if (fanMode == SPEED3) { | |
tone(PIEZO, NOTE_E4, 100); | |
delay(100); | |
noTone(PIEZO); | |
digitalWrite(LED7, HIGH); | |
analogWrite(M1A, 255); | |
Serial.println("Kipas berpusing: Kelajuan 3."); | |
} | |
else if (fanMode == 4) { | |
tone(PIEZO, NOTE_F4, 100); | |
delay(100); | |
noTone(PIEZO); | |
Serial.println("Kipas automatik."); | |
previousMillis = millis(); | |
} | |
while (digitalRead(BUTTON) == LOW); | |
delay(500); | |
} | |
if (millis() - previousMillis > interval && | |
fanMode == AUTO) { | |
ledState = !ledState; | |
digitalWrite(LED5, ledState); | |
digitalWrite(LED6, ledState); | |
digitalWrite(LED7, ledState); | |
int adc = analogRead(LM35); | |
celsius = 0.488 * adc; | |
Serial.print("Suhu (celsius): "); | |
Serial.println(celsius); | |
fanAutomatic(celsius); | |
previousMillis = millis(); | |
} | |
} | |
void fanAutomatic(int c) | |
{ | |
for (int pin = 9; pin < 14; pin++) { | |
digitalWrite(pin, LOW); | |
} | |
if (c < 28) { | |
analogWrite(M1A, 0); | |
} | |
else if (c < 29) { | |
digitalWrite(9, HIGH); | |
analogWrite(M1A, 150); | |
} | |
else if (c < 30) { | |
for (int pin = 9; pin < 11; pin++) { | |
digitalWrite(pin, HIGH); | |
} | |
analogWrite(M1A, 175); | |
} | |
else if (c < 31) { | |
for (int pin = 9; pin < 12; pin++) { | |
digitalWrite(pin, HIGH); | |
} | |
analogWrite(M1A, 200); | |
} | |
else if (c < 32) { | |
for (int pin = 9; pin < 13; pin++) { | |
digitalWrite(pin, HIGH); | |
} | |
analogWrite(M1A, 225); | |
} | |
else { | |
for (int pin = 9; pin < 14; pin++) { | |
digitalWrite(pin, HIGH); | |
} | |
analogWrite(M1A, 255); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment