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;

}