Kendali Suhu Ruangan dengan Sensor DS18b20 dan Arduino Uno
Alat&Bahan
1.Sensor DS18b20 (waterproof)
2.Arduino Uno
3.Resistor 510 Ω
4.Resistor 4K7 Ω
5.LED sebagai indikator aktuator
Kemudian buatlah rangkaian seperti pada gambar di bawah ini dengan konfigurasi pin :
•Kabel kuning/DATA ke pin A0)
•Kabel merah/VCC ke 5v dan kedua kabel ini (kuning dan merah) dihubungkan oleh resistor 4K7 Ω.
•Kabel hitam ke GND
•LED terhubung dengan pin A1.
// C++ code
//
#include
//Memanggil library OneWire yang diperlukan sebagai dependensi library Dallas Temperature
#include // Memanggil library Dallas Temperature
#define ONE_WIRE_BUS A2 // Menempatkan PIN hasil pembacaan sensor DS18B20 pada PIN A0.
#define led A1 // deklarasi pin led pada PIN A1
OneWire oneWire(ONE_WIRE_BUS); //Membuat variabel oneWire berdasarkan PIN yang telah didefinisikan
DallasTemperature sensor(&oneWire); //Membuat variabel untuk menyimpan hasil pengukuran
float suhuDS18B20; //deklarasi variable suhu DS18B20 dengan jenis data float
void setup(void)
{
Serial.begin(9600); //Menginisiasikan setup kecepatan komunikasi
sensor.begin(); //Menginisiasikan sensor One-Wire DS18B20
pinMode(led, OUTPUT); //Menginisialisasi LED sebagai Output
}
void loop(void)
{
sensor.setResolution(9); // Sebelum melakukan pengukuran, atur resolusinya
//sensor.setResolution(10);
//sensor.setResolution(11);
//sensor.setResolution(12);
sensor.requestTemperatures(); // Perintah konversi suhu
suhuDS18B20 = sensor.getTempCByIndex(0); //Membaca data suhu dari sensor #0 dan mengkonversikannya ke nilai Celsius
// suhuDS18B20 = (suhuDS18B20*9/5) + 32;
// suhuDS18B20 = suhuDS18B20 = 273.15;
Serial.println(suhuDS18B20, 1); //Presisi 1 digit (satu angka dibelakang koma)
//Serial.println(suhuDS18B20, 2); //Presisi 2 digit (dua angka dibelakang koma)
//Serial.println(suhuDS18B20, 3); //Presisi 3 digit (tiga angka dibelakang koma)
//Serial.println(suhuDS18B20, 4); //Presisi 4 digit (empat angka dibelakang koma)
Serial.print("Suhu: ");
//lcd.setCursor(6, 0);
//lcd.print((char)223);
Serial.println("C");
delay(1000); //delay 1 detik (1000 miliseconds)
if (suhuDS18B20 > 32.0) { //instruksi untuk menyaakan LED saat suhu lebih dari 32 derajat
digitalWrite(led, HIGH);
}
else if (suhuDS18B20 < 30.0){ //instruksi untuk mematikan LED saat suhu kurang dari 32 derajat
digitalWrite(led, LOW);
}
}
7 Segment Display
#cfff80// C++ code
//
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop()
{
digitalWrite(2, HIGH); // Angka 0
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
delay(1000);
digitalWrite(2, LOW); // Angka 1
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
delay(1000);
digitalWrite(2, HIGH); // Angka 2
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(2, HIGH); // Angka 3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(2, LOW); // Angka 4
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(2, HIGH); // Angka 5
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(2, HIGH); // Angka 6
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(2, HIGH); // Angka 7
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
delay(1000);
digitalWrite(2, HIGH); // Angka 8
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(2, HIGH); // Angka 9
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
}
traffic light
// C++ code
//
int merah = 2; //mengubah id(pin) menjadi kata
int kuning = 3;
int hijau = 4;
void setup() {
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
}
void loop() {
digitalWrite(merah, LOW);
digitalWrite(kuning, LOW);
digitalWrite(hijau, HIGH);
delay(2000);
digitalWrite(merah, LOW);
digitalWrite(kuning, HIGH);
digitalWrite(hijau, LOW);
delay(1000);
digitalWrite(merah, HIGH);
digitalWrite(kuning, LOW);
digitalWrite(hijau, LOW);
delay(3000);
}
Moisture
// C++ code
//
int moisture = 0;
void setup()
{
pinMode(A0, OUTPUT);
pinMode(A1, INPUT);
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void loop()
{
digitalWrite(A0, HIGH);
delay(10);
moisture = analogRead(A1);
digitalWrite(A0, LOW);
Serial.println(moisture);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
if (moisture < 200) {
digitalWrite(12, HIGH);
}
else {
if (moisture < 400) {
digitalWrite(11, HIGH);
} else {
if (moisture < 600) {
digitalWrite(10, HIGH);
} else {
if (moisture < 800) {
digitalWrite(9, HIGH);
} else {
digitalWrite(8, HIGH);
}
}
}
}
delay(100);
}
NEON PIXEL
// C++ code
//
#include
#define PIN 2
#define NUMPIXELS
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 100;
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
void setup() {
pixels.begin();
}
void loop() {
setColor();
for (int i=0; i < NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
pixels.show();
delay(delayval);
}
}
void setColor(){
redColor = random(0, 255);
greenColor = random(0,255);
blueColor = random(0, 255);
}
Program deteksi gerak menggunakan Buzzer dan LED
/*
* masalah yang selalu HIGH, atur potensiometer ke posisi minimum
* potensiometer pertama adalah sensitivity, artinya terkait rentang jarak yang dapat dideteksi (approximate 7m),atur pada nilai minimum
* potensiometer kedua adalah terkait dengan delay, pada nilai minimum delaynya 5 detik pada maks delaynya 200 detik
*/
int sensor=7; //output sensor PIR ke pin7 Arduino
int sensor_value; //variable untuk menyimpan nilai pembacaan sensor
const int Buzzer = 2; //pin 2 untuk buzzer
const int LED = 3; //pin 3 koneksi ke LED
void setup()
{
pinMode(sensor,INPUT); // pin 7 sebagai input
Serial.begin(9600); // menginisiasi komunikasi serial dengan laptop
pinMode(Buzzer, OUTPUT); //Buzzer dijadikan output
pinMode(LED, OUTPUT);
}
void loop()
{
sensor_value=digitalRead(sensor); // membaca nilai dari pin 7
if(sensor_value == HIGH){ //jika ada gerakan
digitalWrite(Buzzer, HIGH);
digitalWrite (LED, HIGH);
Serial.println(sensor_value);
delay(2000);
}else{ //jika tidak ada gerakan
digitalWrite(Buzzer, LOW);
digitalWrite(LED, LOW);
Serial.println(sensor_value); // print output sensor ke serial monitor
delay(2000);
}
}
Rangkaian Traffic Light MODE PENYEBRANGAN
int merah=4;
int kuning=3;
int hijau=2;
int tombol=5;
boolean statusku=false;
boolean nyebrang=false;
int buzer=6;
void setup() {
pinMode(merah,OUTPUT);
pinMode(kuning,OUTPUT);
pinMode(hijau,OUTPUT);
pinMode(tombol,INPUT_PULLUP);
pinMode(buzer,OUTPUT);
}
void loop() {
for(int a=0;a<5;a++){
baca();
digitalWrite(merah,HIGH);
digitalWrite(kuning,LOW);
if(nyebrang){
for(int i=0;i<30;i++){
digitalWrite(buzer,HIGH);
delay(500);
digitalWrite(buzer,LOW);
delay(500);
}
nyebrang=false;
}
delay(1000);
}
for(int a=0;a<5;a++){
baca();
digitalWrite(hijau,HIGH);
digitalWrite(merah,LOW);
delay(1000);
}
for(int a=0;a<2;a++){
baca();
digitalWrite(kuning,HIGH);
digitalWrite(hijau,LOW);
delay(1000);
}
}
void baca(){
statusku=digitalRead(tombol);
if(!statusku){
nyebrang=true;
}
}
Menyalakan perangkat menggunakan hp
//C++ code
//
#include
SoftwareSerial module_bluetooth(0, 1);
char data = 0;
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
void loop()
{
if(Serial.available() > 0)
{
data = Serial.read();
if (data == '1') { digitalWrite(2, LOW); }
else if(data == '2') { digitalWrite(2, HIGH); }
else if(data == '3') { digitalWrite(3, LOW); }
else if(data == '4') { digitalWrite(3, HIGH); }
else if(data == '5') { digitalWrite(4, LOW); }
else if(data == '6') { digitalWrite(4, HIGH); }
else if(data == '7') { digitalWrite(5, LOW); }
else if(data == '8') { digitalWrite(5, HIGH);}
else if(data == '9') { digitalWrite(6, LOW); }
else if(data == '10') { digitalWrite(6, HIGH);}
else if(data == '11') { digitalWrite(7, LOW); }
else if(data == '12') { digitalWrite(7, HIGH);}
else if(data == '13') { digitalWrite(8, LOW); }
else if(data == '14') { digitalWrite(8, HIGH);}
}
}
ROBOT MOBIL bluetooth
#include
SoftwareSerial module_bluetooth(0, 1);
char data = 0;
#define enA 9
#define in1 4
#define in2 5
#define enB 10
#define in3 6
#define in4 7
int motorSpeedA = 0;
int motorSpeedB = 0;
void setup()
{
Serial.begin(9600);
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop()
{
if(Serial.available() > 0)
{
data = Serial.read();Serial.print(data);
Serial.print("\n");
if(data == '1'){
motorSpeedA = 150;
motorSpeedB = 150;
analogWrite(enA, motorSpeedA);
analogWrite(enB, motorSpeedB);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
else if(data == '0'){
motorSpeedA = 150;
motorSpeedB = 150;
analogWrite(enA, motorSpeedA);
analogWrite(enB, motorSpeedB);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
else if(data == '2'){
motorSpeedA = 80;
motorSpeedB = 80;
analogWrite(enA, motorSpeedA);
analogWrite(enB, motorSpeedB);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
else if(data == '3'){
motorSpeedA = 80;
motorSpeedB = 80;
analogWrite(enA, motorSpeedA);
analogWrite(enB, motorSpeedB);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
else if(data == '4'){
motorSpeedA = 255;
motorSpeedB = 255;
analogWrite(enA, motorSpeedA);
analogWrite(enB, motorSpeedB);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
}
}
Push Button
// C++ code
//
const int buttonPin = 2;
const int ledPin = 3;
int ledState = HIGH;
int buttonState;
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup()
{
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
}
void loop()
{
int reading = digitalRead(buttonPin);
if (reading != lastButtonState)
{lastDebounceTime = millis();}
if ((millis() - lastDebounceTime) > debounceDelay)
{ if (reading != buttonState)
{buttonState = reading;
if (buttonState == HIGH)
{ ledState = !ledState; }
}
}
digitalWrite(ledPin, ledState);
lastButtonState = reading;
}
// C++ code
//
void setup()
{
Serial.begin(9600);
pinMode(A0, INPUT_PULLUP);
pinMode(3, OUTPUT);
}
void loop()
{
int sensorVal = digitalRead(A0);
Serial.println(sensorVal);
if (sensorVal == HIGH)
{digitalWrite(3, LOW);}
else
{digitalWrite(3, HIGH);}
}
Relay
// C++ code
//
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(LED_BUILTIN, LOW);
delay(1000); // Wait for 1000 millisecond(s)
}
LED RGB
// C++ code
//
//
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
void loop()
{
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(1000);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(1000);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(1000);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
delay(1000);
}
POTENSIOMETER LED
// C++ code
//
const int analogPin = A0;
const int ledCount = 10;
int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
int sensorReading = analogRead(analogPin);
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
ULTRASONIC
#define ECHO_PIN 2
#define TRIG_PIN 3
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
float distance = readDistanceCM();
bool isNearby = distance < 100;
digitalWrite(LED_BUILTIN, isNearby);
Serial.print("Measured distance: ");
Serial.println(readDistanceCM());
delay(100);
}
// YWROBOT
// Compatible with the Arduino IDE 1.0
// Library version:1.1
#include
LiquidCrystal_I2C lcd(0x27,20,4);
// set the LCD address to 0x27 for a 16 chars and 2 line display
float cm;
float inches;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Clear the trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns
// the sound wave travel time in microseconds
return pulseIn(echoPin, HIGH);
}
void setup()
{
Serial.begin(9600);
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.print("--> Distance <--");
delay(3000);
lcd.clear();
}
void loop()
{
cm = 0.0344/2 * readUltrasonicDistance(3, 2);
inches = (cm / 2.54);
/*
Serial.print("Inches ");
Serial.print(inches, 1);
Serial.print("\t");
Serial.print("cm ");
Serial.println(cm, 1);
*/
lcd.setCursor(0,0);
lcd.print("Inches");
lcd.setCursor(4,0);
lcd.setCursor(12,0);
lcd.print("cm");
lcd.setCursor(1,1);
lcd.print(inches, 1);
lcd.setCursor(11,1);
lcd.print(cm, 1);
lcd.setCursor(14,1);
delay(2000);
lcd.clear();
}
// HC-SR04 Ultrasonic Distance Sensor with 7 Segment Display
#include
#define TRIG_PIN A3
#define ECHO_PIN A4
SevSeg sevseg;
uint16_t duration = 0;
uint32_t interval = 0;
float distance = 0;
void setup()
{
uint8_t numDigits = 4;
uint8_t digitPins[] = {2, 3, 4, 5};
uint8_t segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
uint8_t displayType = COMMON_ANODE; // (Common Anode or Common Cathode)
bool resistorsOnSegments = false;
bool updateWithDelays = false;
bool leadingZeros = false;
bool disableDecPoint = false;
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
sevseg.begin(displayType, numDigits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
}
void loop()
{
if ((millis() - interval) >= 100) {
interval = millis();
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(5);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Read time of the trig and echo pins
duration = pulseIn(ECHO_PIN, HIGH);
// Calculates the distance
distance = (duration / 2) / 29;
sevseg.setNumber(distance);
}
sevseg.refreshDisplay();
}
#define tridPin 2
#define echoPin 3
#define trigPin 2
#define echoPin 3
int LED1 = 8;
int LED2 = 9;
int LED3 = 10;
int LED4 = 11;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Changed to 10 microseconds for a proper pulse width
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1; // Distance in cm
Serial.println(distance); // Corrected print function
// Control LEDs based on distance
if (distance <= 20) {
digitalWrite(LED1, HIGH);
} else {
digitalWrite(LED1, LOW);
}
if (distance <= 15) {
digitalWrite(LED2, HIGH);
} else {
digitalWrite(LED2, LOW);
}
if (distance <= 8) {
digitalWrite(LED3, HIGH);
} else {
digitalWrite(LED3, LOW);
}
if (distance <= 3) {
digitalWrite(LED4, HIGH);
} else {
digitalWrite(LED4, LOW);
}
delay(500); // Adding a delay for better readability of the serial output
}
LDR
#include
#define LDR_PIN 2
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
pinMode(LDR_PIN, INPUT);
lcd.init();
lcd.backlight();
}
void loop() {
lcd.setCursor(2, 0);
lcd.print("Room: ");
if (digitalRead(LDR_PIN) == LOW) {
lcd.print("Light!");
} else {
lcd.print("Dark ");
}
delay(100);
}
NTC
/**
Basic NTC Thermistor demo
https://wokwi.com/arduino/projects/299330254810382858
Assumes a 10K@25℃ NTC thermistor connected in series with a 10K resistor.
Copyright (C) 2021, Uri Shaked
*/
const float BETA = 3950; // should match the Beta Coefficient of the thermistor
void setup() {
Serial.begin(9600);
}
void loop() {
int analogValue = analogRead(A0);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println(" ℃");
delay(1000);
}
IF
// C++ code
//
char data=0;
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop()
{
data = Serial.read();
if(data == '1')
{digitalWrite(2, LOW);}
else if(data == '2')
{digitalWrite(2, HIGH);}
else if(data == '3')
{digitalWrite(3, LOW);}
else if(data == '4')
{digitalWrite(3, HIGH);}
else if(data == '5')
{digitalWrite(2, LOW);
digitalWrite(3, LOW);}
else if(data == '6')
{digitalWrite(2, HIGH);
digitalWrite(3, HIGH);}
}
For
// C++ code
//
void setup()
{
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
}
void loop()
{
for (int x = 0; x<5; x++)
{
digitalWrite(13, HIGH);
delay(300);
digitalWrite(13, LOW);
delay(300);
}
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
delay(1000);
}
Remote
#include
#define IR_RECEIVE_PIN 2
void initializeReceiver() {
IrReceiver.begin(IR_RECEIVE_PIN);
}
void setup() {
initializeReceiver();
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
}
void loop() {
if (IrReceiver.decode()) {
translateIR();
IrReceiver.resume();
}
}
void translateIR() {
switch (IrReceiver.decodedIRData.command) {
case 104:
digitalWrite(13, LOW);
delay(200);
digitalWrite(13, HIGH);
break;
case 48:
digitalWrite(12, LOW);
delay(200);
digitalWrite(12, HIGH);
break;
case 24:
digitalWrite(11, LOW);
delay(200);
digitalWrite(11, HIGH);
break;
case 122:
digitalWrite(10, LOW);
delay(200);
digitalWrite(10, HIGH);
break;
case 16:
digitalWrite(9, LOW);
delay(200);
digitalWrite(9, HIGH);
break;
case 56:
digitalWrite(8, LOW);
delay(200);
digitalWrite(8, HIGH);
break;
case 90:
digitalWrite(7, LOW);
delay(200);
digitalWrite(7, HIGH);
break;
case 66:
digitalWrite(6, LOW);
delay(200);
digitalWrite(6, HIGH);
break;
case 74:
digitalWrite(5, LOW);
delay(200);
digitalWrite(5, HIGH);
break;
case 82:
digitalWrite(4, LOW);
delay(200);
digitalWrite(4, HIGH);
break;
case 162:
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
break;
default:
;
}
}
SwitCh Case break
int x = 0;
int y = 0;
int z = 0;
int w = 1;
void setup() {
Serial.begin(9600);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
x = Serial.read();
switch (x) {
case '1':
for (y=0; y<5; y++)
{
digitalWrite(11, HIGH);
delay (1000);
digitalWrite(11, LOW);
delay (1000);
}
break;
case '2':
while (z < 5)
{
digitalWrite(12, HIGH);
delay (1000);
digitalWrite(12, LOW);
delay (1000);
z++;
}
break;
case '3':
if (w==1)
{
digitalWrite(13, HIGH);
delay (1000);
digitalWrite(13, LOW);
delay (1000);
}
break;
default:
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
delay (1000);
}
}
For and while
// C++ code
//
int x = 0;
int y = 0;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop ()
{
for (y=0; y<4; y++)
{
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
}
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
delay(500);
while(x < 5)
{
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
x++;
}
}
Penyiram tanaman otomatis
***************************************
* Penyiram Tanaman Otomatis
* Board : Arduino UNO
* Input : Sensor Soil Moisture, DS1307, KEYPAD
* Output : LCD 16x2, Relay 2 Channel
* Starter Kit Arduino Penyiram Tanaman Otomatis
* www.ardutech.com
****************************************/
#include
#include
#include
#include
#define soil1Pin A0
#define soil2Pin A1
#define pump1 A2
#define pump2 A3
static DS1307 RTC;
LiquidCrystal lcd(8,9,10,11,12,13);//(RS,E,D4,D5,D6,D7)
const byte ROWS=4;
const byte COLS=4;
char keys[ROWS][COLS]={
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS]={7,6,5,4};
byte colPins[COLS]={3,2,1,0};
Keypad keypad = Keypad(makeKeymap(keys),rowPins, colPins, ROWS, COLS);
const int AirValue1 = 470;
const int WaterValue1 = 210;
int soilMoistureValue1 = 0;
int soilmoist1 = 0;
const int AirValue2 = 470;
const int WaterValue2 = 210;
int soilMoistureValue2 = 0;
int soilmoist2 = 0;
byte mode = 1;
//-- sensor set point ON/OFF pump
byte spS1_LOW = 40;
byte spS1_HIGH = 70;
byte spS2_LOW = 40;
byte spS2_HIGH = 70;
//---timer set point ON/OFF pump
byte spT1HON = 7; //timer 1 jam on
byte spT1MON = 0; //timer 1 menit on
byte spT1HOFF = 7; //timer 1 jam off
byte spT1MOFF = 5; //timer 1 menit off
byte spT2HON = 7; //timer 2 jam on
byte spT2MON = 0; //timer 2 menit on
byte spT2HOFF = 7; //timer 2 jam off
byte spT2MOFF = 5; //timer 2 menit off
bool stPm1 = HIGH;
bool stPm2 = HIGH;
byte value;
bool f_key = 1;
bool batal;
byte sat, pul, tekan;
char key;
//==================================seting nilai keypad
void setNilai(){
do{
value=0;
key=keypad.getKey();
if(key != NO_KEY) {
tekan++;
if (tekan==1){
value = atoi(&key);
lcd.print(value);
pul = value*10;
}
else if (tekan==2){
value = atoi(&key);
lcd.print(value);
value = pul+value;
f_key=0;
tekan=0;
}
delay(400);
}
if(key=='C'){
f_key=0;
tekan=0;
batal=1;
lcd.clear();
lcd.noBlink();
}
}
while(f_key);
f_key = 1;
}
//=======================================Baca keypad
void scanKeypad(){
key=keypad.getKey();
if(key != NO_KEY){
batal=0;
//------------------------------pilih mode timer
if(key=='A'){
stPm1 = HIGH;
stPm2 = HIGH;
digitalWrite(pump1, stPm1);
digitalWrite(pump2, stPm2);
mode=2;
lcd.clear();
lcd.print("MODE TIMER,");
lcd.print(RTC.getHours());
lcd.print(":");
lcd.print(RTC.getMinutes());
lcd.setCursor(0,1);
lcd.print("seting timer...");
delay(4000);
lcd.clear();
lcd.print("P1ON =00:00");
lcd.setCursor(0,1);
lcd.print("P1OFF=00:00");
lcd.blink();
//------set jam on timer1
lcd.setCursor(6,0);
setNilai();
if(batal==1)return;
spT1HON=value;
//------set menit on timer1
lcd.setCursor(9,0);
setNilai();
if(batal==1)return;
spT1MON=value;
//------set jam off timer1
lcd.setCursor(6,1);
setNilai();
if(batal==1)return;
spT1HOFF=value;
//------set menit off timer1
lcd.setCursor(9,1);
setNilai();
if(batal==1)return;
spT1MOFF=value;
lcd.noBlink();
delay(1000);
lcd.clear();
lcd.print("seting timer 1");
lcd.setCursor(0,1);
lcd.print("tersimpan...");
delay(2000);
lcd.clear();
lcd.print("P2ON =00:00");
lcd.setCursor(0,1);
lcd.print("P2OFF=00:00");
delay(1000);
lcd.blink();
//------set jam on timer2
lcd.setCursor(6,0);
setNilai();
if(batal==1)return;
spT2HON=value;
//------set menit on timer2
lcd.setCursor(9,0);
setNilai();
if(batal==1)return;
spT2MON=value;
//------set jam off timer2
lcd.setCursor(6,1);
setNilai();
spT2HOFF=value;
//------set menit off timer2
lcd.setCursor(9,1);
setNilai();
if(batal==1)return;
spT2MOFF=value;
lcd.noBlink();
lcd.clear();
lcd.print("seting timer 2");
lcd.setCursor(0,1);
lcd.print("tersimpan...");
delay(1000);
lcd.clear();
}
//--------------------------------pilih mode sensor soil moisture
else if(key=='B'){
mode=1;
stPm1 = HIGH;
stPm2 = HIGH;
digitalWrite(pump1, stPm1);
digitalWrite(pump2, stPm2);
lcd.clear();
lcd.print("mode sensor...");
lcd.setCursor(0,1);
lcd.print("seting Set Point");
delay(3000);
lcd.clear();
lcd.print("P1ON =00%");
lcd.setCursor(0,1);
lcd.print("P1OFF=00%");
lcd.blink();
//------set sensor 1 ON
lcd.setCursor(6,0);
setNilai();
if(batal==1)return;
spS1_LOW=value;
//------set sensor 1 OFF
lcd.setCursor(6,1);
setNilai();
if(batal==1)return;
spS1_HIGH=value;
lcd.noBlink();
delay(2000);
lcd.clear();
lcd.print("SP Sensor 1");
lcd.setCursor(0,1);
lcd.print("tersimpan...");
delay(1000);
lcd.clear();
lcd.print("P2ON =00%");
lcd.setCursor(0,1);
lcd.print("P2OFF=00%");
lcd.blink();
//------set sensor 1 ON
lcd.setCursor(6,0);
setNilai();
if(batal==1)return;
spS2_LOW=value;
//------set sensor 1 OFF
lcd.setCursor(6,1);
setNilai();
if(batal==1)return;
spS2_HIGH=value;
lcd.noBlink();
delay(2000);
lcd.clear();
lcd.print("SP Sensor 2");
lcd.setCursor(0,1);
lcd.print("tersimpan...");
delay(1000);
lcd.clear();
}
//------------------------------------cek setpoint
else if(key=='C'){
lcd.clear();
lcd.print("SP T1");
lcd.setCursor(7,0);
lcd.print("ON =");lcd.print(spT1HON); lcd.print(":");lcd.print(spT1MON);
lcd.setCursor(7,1);
lcd.print("OFF=");lcd.print(spT1HOFF); lcd.print(":");lcd.print(spT1MOFF);
delay(5000);
lcd.clear();
lcd.print("SP T2");
lcd.setCursor(7,0);
lcd.print("ON =");lcd.print(spT2HON); lcd.print(":");lcd.print(spT2MON);
lcd.setCursor(7,1);
lcd.print("OFF=");lcd.print(spT2HOFF); lcd.print(":");lcd.print(spT2MOFF);
delay(5000);
lcd.clear();
lcd.print("SP S1");
lcd.setCursor(7,0);
lcd.print("ON =");lcd.print(spS1_LOW);lcd.print("%");
lcd.setCursor(7,1);
lcd.print("OFF=");lcd.print(spS1_HIGH);lcd.print("% ");
delay(3000);
lcd.clear();
lcd.print("SP S2");
lcd.setCursor(7,0);
lcd.print("ON =");lcd.print(spS2_LOW);
lcd.print("%");
lcd.setCursor(7,1);
lcd.print("OFF=");lcd.print(spS2_HIGH);lcd.print("% ");
delay(3000);
lcd.clear();
}
//----------------------------Seting jam:menit
else if(key=='D'){
lcd.clear();
lcd.print("seting jam...");
delay(2000);
lcd.clear();
lcd.print("Jam=00:00");
lcd.blink();
lcd.setCursor(4,0);
setNilai();
if(batal==1)return;
RTC.setHours(value);
lcd.setCursor(7,0);
setNilai();
if(batal==1)return;
RTC.setMinutes(value);
lcd.noBlink();
delay(3000);
lcd.clear();
}
}
}
//==========================================baca sensor
void bacaSensor(){
soilMoistureValue1 = analogRead(soil1Pin); //put Sensor insert into soil
soilmoist1= map(soilMoistureValue1, AirValue1, WaterValue1, 0, 100);
if(soilmoist1 >= 100)
{
soilmoist1 = 100;
}
else if(soilmoist1 <= 0)
{
soilmoist1 = 0;
}
soilMoistureValue2 = analogRead(soil2Pin); //put Sensor insert into soil
soilmoist2= map(soilMoistureValue2, AirValue2, WaterValue2, 0, 100);
if(soilmoist2 >= 100)
{
soilmoist2 = 100;
}
else if(soilmoist2 <= 0)
{
soilmoist2 = 0;
}
}
//Program inisialisasi
void setup()
{
pinMode(pump1, OUTPUT);
pinMode(pump2, OUTPUT);
digitalWrite(pump1, stPm1);
digitalWrite(pump2, stPm2);
lcd.begin(16,2);
lcd.print(" SKA Penyiram ");
lcd.setCursor(0,1);
lcd.print("Tanaman Otomatis");
delay(3000);
lcd.clear();
RTC.begin();
RTC.setHourMode(CLOCK_H24);
/*/------------------seting RTC
RTC.setHours(10);
RTC.setMinutes(27);
RTC.setSeconds(56);
//---------------------*/
}
//===============================program utama
void loop(){
scanKeypad();
if (mode==1){
bacaSensor();
lcd.setCursor(0, 0);
lcd.print("Md Sensor Soil ");
if(soilmoist1 < spS1_LOW) stPm1 = LOW;
else if(soilmoist1 > spS1_HIGH) stPm1 = HIGH;
if(soilmoist2 < spS2_LOW) stPm2 = LOW;
else if(soilmoist2 > spS2_HIGH) stPm2 = HIGH;
}
else if (mode==2){
byte H = RTC.getHours();
byte M = RTC.getMinutes();
lcd.setCursor(0, 0);
lcd.print("Md Timer,");
lcd.print(H);
lcd.print(":");
lcd.print(M);
lcd.print(" ");
if ((spT1HON==H) && (spT1MON==M))stPm1 = LOW;
else if ((spT1HOFF==H) && (spT1MOFF==M))stPm1 = HIGH;
if ((spT2HON==H) && (spT2MON==M))stPm2 = LOW;
else if ((spT2HOFF==H) && (spT2MOFF==M))stPm2 = HIGH;
}
digitalWrite(pump1, stPm1);
digitalWrite(pump2, stPm2);
lcd.setCursor(0, 1);
lcd.print("P1:");
if (stPm1==HIGH) lcd.print("OFF ");
else lcd.print("ON ");
lcd.setCursor(8, 1);
lcd.print("P2:");
if (stPm2==HIGH) lcd.print("OFF ");
else lcd.print("ON ");
delay(500);
}
//==========end=======
https://www.arduino.cc/en/software
https://drive.google.com/drive/folders/134EcVWvsyK9iCROBiO1LCM6YuxZUfpTn?usp=sharing
5on 1off
// C++ code
//
void setup()
{
Serial.begin(9600);
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
pinMode(A4, INPUT_PULLUP);
pinMode(A5, INPUT_PULLUP);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop()
{
digitalWrite(7, HIGH);
int tombol1=digitalRead(A0);
int tombol2=digitalRead(A1);
int tombol3=digitalRead(A2);
int tombol4=digitalRead(A3);
int tombol5=digitalRead(A4);
int tombol6=digitalRead(A5);
if (tombol1 == LOW)
{digitalWrite(2, HIGH);}
else if (tombol2 == LOW)
{digitalWrite(3, HIGH);}
else if (tombol3 == LOW)
{digitalWrite(4, HIGH);}
else if (tombol4 == LOW)
{digitalWrite(5, HIGH);}
else if (tombol5 == LOW)
{digitalWrite(6, HIGH);}
else if (tombol6 == LOW)
{digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
}
array
// C++ code
//
const int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(led[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < 8; i++) {
digitalWrite(led[i], HIGH);
delay(200);
digitalWrite(led[i], LOW);
}
}
automatic car parking
#include
Servo myservo;
int pos = 0;
int cm = 0;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT);
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
return pulseIn(echoPin, HIGH);
}
void setup() {
digitalWrite(12,LOW);
myservo.attach(9);
Serial.begin(9600);
}
void loop() {
cm = 0.01723 * readUltrasonicDistance(6, 7);
if(cm<30){
Serial.print(cm);
Serial.println("cm");
for (pos = 0; pos <= 120; pos += 1) {
myservo.write(pos);
delay(15);
}
delay(500);
for (pos = 120; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
}
delay(5000); //add delay how much you want
}
}
ultrasonic radar
// Includes the Servo library
#include .
// Defines Tirg and Echo pins of the Ultrasonic Sensor
const int trigPin = 10;
const int echoPin = 11;
// Variables for the duration and the distance
long duration;
int distance;
Servo myServo; // Creates a servo object for controlling the servo motor
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600);
myServo.attach(12); // Defines on which pin is the servo motor attached
}
void loop() {
// rotates the servo motor from 15 to 165 degrees
for(int i=0;i<=180;i++){
myServo.write(i);
delay(10);
distance = calculateDistance();// Calls a function for calculating the distance measured by the Ultrasonic sensor for each degree
Serial.print(i); // Sends the current degree into the Serial Port
Serial.print(","); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
Serial.print(distance); // Sends the distance value into the Serial Port
Serial.print("."); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
}
// Repeats the previous lines from 165 to 15 degrees
for(int i=180;i>0;i--){
myServo.write(i);
delay(10);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
}
// Function for calculating the distance measured by the Ultrasonic sensor
int calculateDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds
distance= duration*0.034/2;
return distance;
}