วันพฤหัสบดีที่ 5 เมษายน พ.ศ. 2561

Mini Project

 Control Lamp 220v  With LDR
const int lamp = 12;
const int ldrPin=A0;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup() {
  Serial.begin(9600);
  pinMode(lamp , OUTPUT);
lcd.begin();
}

void loop() {
int ldrStatus=analogRead(ldrPin);
  delay(500);
  if(ldrStatus<=300){
  digitalWrite(12,HIGH);
lcd.setCursor(5,0);
    lcd.print("OPEN");
    delay(500);
    lcd.clear();
    delay(500);
}
else {
digitalWrite(12,LOW);
lcd.setCursor(5,1);
    lcd.print("CLOSE");
     delay(500);
      lcd.clear();
       delay(500);
}
}








วันอาทิตย์ที่ 25 มีนาคม พ.ศ. 2561

ส่งงานครั้งที่20

ARDUINO LCD PROJECT FOR MEASURING DISTANCE WITH ULTRASONIC SENSOR

#include <LiquidCrystal.h> //เปิดไฟล์ที่ชื่อ LiquidCrystal.h ใน library

LiquidCrystal LCD(10, 9, 5, 4, 3, 2);  //กำหนดขาให้ lcd

 

int trigPin=13; 

int echoPin=11; 

int myCounter=0;  

int servoControlPin=6; 

float pingTime;  //กำหนดเวลาสำหรับ ping เพื่อเดินทางจากเซนเซอร์ไปยังเป้าหมายและกลับ

float targetDistance; //ระยะทางไปยังเป้าหมายเป็นนิ้ว

float speedOfSound=776.5; //ความเร็วของเสียงเป็นไมล์ต่อชั่วโมงเมื่ออุณหภูมิอยู่ที่ 77 องศา

 

void setup() {

  

Serial.begin(9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

 

LCD.begin(16,2); //บอก Arduino ให้เริ่ม LCD 16 คอลัมน์ 2 แถว

LCD.setCursor(0,0);  //ตั้งค่าเคอร์เซอร์ LCD ไปที่มุมซ้ายบน, คอลัมน์ 0, แถว 0

LCD.print("Target Distance:");  //พิมพ์ข้อความในแถวแรกว่า Target Distance


}

 

void loop() {

  

  digitalWrite(trigPin, LOW); 

  delayMicroseconds(2000); //ปล่อยสัญญาณให้เรียบร้อย

  digitalWrite(trigPin, HIGH); 

  delayMicroseconds(15); //ความล่าช้าในสภาวะสูง

  digitalWrite(trigPin, LOW); 

  delayMicroseconds(10); //ความล่าช้าในสภาวะสูง

  

  pingTime = pulseIn(echoPin, HIGH);  

  pingTime=pingTime/1000000; //แปลง pingTime เป็นวินาทีโดยการหารด้วย 1000000 (microseconds ในหนึ่งวินาที)

  pingTime=pingTime/3600; //แปลง pingtime เพื่อ hourse โดยการหารด้วย 3600 (วินาทีในหนึ่งชั่วโมง)

  targetDistance= speedOfSound * pingTime;  //เป็นไมล์เพราะความเร็วของเสียงเป็นไมล์ต่อชั่วโมง

  targetDistance=targetDistance/2; //ping เดินทางไปยังเป้าหมายและกลับจากเป้าหมายดังนั้นคุณต้องหารด้วย 2 สำหรับระยะทางที่แท้จริง

  targetDistance= targetDistance*63360;    //แปลงไมล์เป็นนิ้วโดยการคูณด้วย 63360 (นิ้วต่อไมล์)

  

  LCD.setCursor(0,1);  //ตั้งเคอร์เซอร์ไปที่แถวแรกของแถวที่สอง

  LCD.print("                "); //สั่ง lcd แสดงผล "                "

  LCD.setCursor(0,1);   //ตั้งค่าเคอร์เซอร์อีกครั้งเป็นแถวแรกของแถวที่สอง

  LCD.print(targetDistance); //เเสดงผลคำว่า  targetDistance

  LCD.print(" inches");  //เเสดงผลคำว่า  inches

  delay(250);   

  

  }  


LCD Arduino

ส่งงานครั้งที่19

การใช้งาน Arduino รับค่า MQ-3 alcohol sensor

const int AOUTpin=0;
const int DOUTpin=8;
const int ledPin=13;
int limit; //กำหนดตัวแปลว่าง
int value; //กำหนดตัวแปลว่าง
void setup() {
Serial.begin(115200); //กำหนดอัตราการรับส่งข้อมูล 115200 บิต/วินาที
pinMode(DOUTpin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
value= analogRead(AOUTpin);
limit= digitalRead(DOUTpin);
Serial.print(“Alcohol value: “); //เเสดงผลคำว่า Alcohol value
Serial.println(value);
Serial.print(“Limit: “);
Serial.print(limit);
delay(100);  //หน่วงเวลา 0.1วินาที
if (limit == HIGH){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}

Image result for การใช้งาน Arduino รับค่า MQ-3 alcohol sensor

ส่งงานครั้งที่18

DC Motor Control using Arduino


volatile int i=0;//กำหนดตัวแปร i

void setup()

{

                pinMode(3, OUTPUT);   

                pinMode(0, INPUT);

                pinMode(1, INPUT);

}


void loop()

{

                analogWrite(3, i);  // ค่า analogWrite ตั้งแต่ 0 ถึง 255
                if (digitalRead(0)==LOW)

                {

                                if (i<255) ถ้า pin0 ถูกกดและค่า duty ratio น้อยกว่า 255

                                {

                                                i++;// เพิ่ม i ทีละ1
                                                delay(30);

                                }

                }

                if (digitalRead(1)==LOW)

                {

                                if (i>0) //ถ้า pin1 ถูกกดและอัตราส่วนของ duty ratio จะมากกว่า 0
                                {

                                                i--;// ลบ i ทีละ1
                                                delay(30);

                                }

                }

}


Arduino DC Motor Control Circuit Diagram

ส่งงานครั้งที่17

Servo Motor Control using Arduino

volatile int i=0;//กำหนดตัวแปร i

#include <Servo.h>//สั่งเปิดไฟล์ที่ชื่อ Servo.h

Servo servo;//กำหนดการใช้ชื่อ servo
void setup()

{

                pinMode(3, OUTPUT); 

                pinMode(0, INPUT);

                pinMode(1, INPUT);

}



void loop()

{

                servo.write(i);//กำหนดค่า servo องศา ‘i’

             

                if (digitalRead(0)==LOW)

                {

                                if (i<180)//ถ้า ตัวแปร i น้อยกว่า180

                                {

                                                i++;//ให้ตัวแปร i เพิ่มทีละ1

                                                delay(30);

                                }

                }

                if (digitalRead(1)==LOW)

                {

                                if (i>0) //ถ้าตัวแปร i มากกว่า 0

                                {

                                                i--;//ให้ตัวแปร i ลบทีละ1

                                                delay(30);

                                }

                }

}


Arduino Uno Servo Motor Interfacing Circuit Diagram

ส่งงานครั้งที่16

LED Binary Clock Circuit using Arduino

#include <Wire.h> //เปิดไฟล์ที่ชื่อ Wire.h
#include "RTClib.h" //เปิดไฟล์ที่ชื่อ RTClib.h (เป็นไฟล์ที่เกี่ยวข้องกับโปรเเกรมไม่ใช่ใน Library)
#include <TimerOne.h> //เปิดไฟล์ที่ชื่อ TimerOne.h

RTC_DS1307 RTC;
int temp,inc,hours1,minut,add=11; //กำหนดตัวแปร temp,hours,minut ที่ตำแหน่ง11

#define d1 12 //กำหนดตัวแปร d1 ที่ขา 12
#define d2 11
#define d3 10
#define d4 9
#define d5 8
#define d6 7

#define r1 6
#define r2 5
#define r3 4
#define r4 3

int HOUR,MINUT,SECOND; //กำหนดตัวแปร HOUR,MINUT,SECOND

volatile int count=0; //กำหนดตัวแปร count

void Clear(int d) //เปิดฟังค์ชั่น Clear จากตัวแปร d
{
    digitalWrite(d1, HIGH);
    digitalWrite(d2, HIGH);
    digitalWrite(d3, HIGH);
    digitalWrite(d4, HIGH);
    digitalWrite(d5, HIGH);
    digitalWrite(d6, HIGH);
}

void callback() //เปิดฟังค์ชั่น callback
{
  digitalWrite(13, digitalRead(13) ^ 1);
  count++;
  if(count>=7)
  count=1;
  switch(count%7)
  {
    case 1:
    Clear(d1);
    temp=SECOND%10;
    show(temp);
    digitalWrite(d1, LOW);
    break;

    case 2:
    Clear(d2);
    temp=SECOND/10;
    show(temp);
    digitalWrite(d2, LOW);
    for(int i=0;i<10000;i++)
    {
    }
    break;
    
    case 3:
    Clear(d3);
    temp=MINUT%10;
    show(temp);
    digitalWrite(d3, LOW);
    for(int i=0;i<10000;i++)
    {
    }
    break;  

    case 4:
    Clear(d4);
    temp=MINUT/10;
    show(temp);
    digitalWrite(d4, LOW);
    for(int i=0;i<10000;i++)
    {
    }
    break;

    case 5:
    Clear(d5);
    temp=HOUR%10;
    show(temp);
    digitalWrite(d5, LOW);
    for(int i=0;i<10000;i++)
    {
    }
    break;  

    case 6:
    Clear(d6);
    temp=HOUR/10;
    show(temp);
    digitalWrite(d6, LOW);
    for(int i=0;i<10000;i++)
    {
    }
    break;    
  }
}

void show(int d)
{
    for(int i=0;i<1;i++)
    {
      digitalWrite(r4, !((temp>>0)&1));
      digitalWrite(r3, !((temp>>1)&1));
      digitalWrite(r2, !((temp>>2)&1));
      digitalWrite(r1, !((temp>>3)&1));
     // delay(1);
     for(int i=0;i<1000;i++);
    }
}

void setup()
{
 Wire.begin();
 Serial.begin(9600);
 RTC.begin();
 digitalWrite(next, HIGH);
 digitalWrite(set_mad, HIGH);
 digitalWrite(INC, HIGH);
 pinMode(14, OUTPUT);
 for(int i=2;i<=12;i++)
 {
  pinMode(i, OUTPUT);
  digitalWrite(i, HIGH);
 }
    
 if(!RTC.isrunning())
 {
 RTC.adjust(DateTime(__DATE__,__TIME__));
 }

 Timer1.initialize(1000);
 Timer1.attachInterrupt(callback); 
}
void loop()
{
 int temp=0,val=1,temp4;
 DateTime now = RTC.now();
 HOUR=now.hour();
 MINUT=now.minute();
 SECOND=now.second();

 Serial.print(HOUR);
 Serial.print(":");
 Serial.print(MINUT);
 Serial.print(":");
 Serial.println(SECOND);
 delay(200);
}

Binary Clock Circuit Diagram

ส่งงานครั้งที่15

Arduino Light Sensor Circuit using LDR


#define relay 10 //กำหนดตัวแปร relay ที่ขา 10
int LED = 9; // กำหนดตัวแปร LED ที่ขา 9
int LDR = A0; //กำหนดตัวแปร LDR ที่ขาอนาล็อก A0

void setup() 
{
Serial.begin(9600); //กำหนดอัตราการรับส่งข้อมูล 9600 บิต/วินาที
pinMode(LED, OUTPUT); //กำหนด LED เป็น OUTPUT
pinMode(relay, OUTPUT); //กำหนด relay เป็น OUTPUT
pinMode(LDR, INPUT);  //กำหนด LDR เป็น INPUT
}

void loop() {
int LDRValue = analogRead(LDR); //กำหนดตัวแปร LDRValue ให้อ่านค่าอนาล็อกจากตัวแปร LDR
Serial.print("sensor = "); //เเสดงผลคำว่า  sensor =
Serial.print(LDRValue); //เเสดงผลคำว่า LDRValue

if (LDRValue <=700)  //ถ้า LDRValue น้อยกว่าหรือเท่ากับ 700
{
digitalWrite(LED, HIGH); //ให้ส่งค่าไปที่ LED เป็น HIGH
digitalWrite(relay, HIGH); // ให้ส่งค่าไปที่ relay เป็น HIGH
Serial.println("It's Dark Outside; Lights status: ON"); //เเสดงผลคำว่า It's Dark Outside; Lights status: ON
}
else  // ถ้าไม่
{
digitalWrite(LED, LOW); //ให้ส่งค่าไปที่ LED เป็น LOW
digitalWrite(relay, LOW); //ให้ส่งค่าไปที่ relay เป็น LOW 
Serial.println("It's Bright Outside; Lights status: OFF"); //เเสดงผลคำว่า It's Bright Outside; Lights status: OFF
}
}
Arduino Light Sensor Circuit diagram using LDR and Relay

ส่งงารครั้งที่14

Clap Switch using Arduino


const int analogInPin = A0;  // กำหรดตัวแปร analogInPin ที่ขา A0
int sensorValue = 0;   

void setup() 
{
 DDRD = 0xFF;  //ชี้ตำเเหน่งของ DDRD ที่ตำเเหน่ง 0xFF
}

void loop() 
{
 sensorValue = analogRead(analogInPin);    
 if(sensorValue>60)
 {
  PORTD ^=(1<<7); //หากมีการสลับระหว่าง LED บนและปิดบน pin7
  delay(250);
  }
}


Clap Switch using Arduino Circuit Diagram

ส่งงารครั้งที่13

Interfacing Joystick with Arduino


#define joyX A0 //กำหนดตัวแปร joyX ที่ขา อนาล็อก  A0
#define joyY A1

int button=2; //กำหนดตัวแปร button ที่ขา 2
int buttonState = 0; //กำหนดตวแปรว่าง
int buttonState1 = 0; //กำหนดตวแปรว่าง

void setup() {
  pinMode(7,OUTPUT); //กำหนดขา 7 เป็น OUTPUT 
  pinMode(button,INPUT);  // กำหนดตัวแปร  button เป็น INPUT
  digitalWrite(button, HIGH); //ให้ส่งค่าที่ตัวแปร button เป็ร HIGH
  Serial.begin(9600); //กำหนดอัตราการรับส่งข้อมูล 9600 บิต/วินาที
}
void loop() {
 int xValue = analogRead(joyX); //กำหนดตัวแปร xValue ให้อ่านค่าอนาล็อกจาก joyX
 int yValue = analogRead(joyY);
  Serial.print(xValue); //เเสดงผลคำว่า xValue
  Serial.print("\t"); 
  Serial.println(yValue); //เเสดงผลคำว่า yValue
  
  buttonState = digitalRead(button);
  Serial.println(buttonState);
  if (xValue>=0 && yValue<=10)  // ถ้าxValue มากกว่าหรือเท่ากับ 0 เเละ yValue น้อยกว่าหรือเท่ากับ 10
  {
    digitalWrite(10, HIGH);
  }
  else{digitalWrite(10, LOW);}

  if (xValue<=10 && yValue>=500)
  {
    digitalWrite(11, HIGH);
  }
  else{digitalWrite(11, LOW);}

  if (xValue>=1020 && yValue>=500)
  {
    digitalWrite(9, HIGH);
  }
  else{digitalWrite(9, LOW);}

  if (xValue>=500 && yValue>=1020)
  {
    digitalWrite(8, HIGH);
  }
  else{digitalWrite(8, LOW);}

  if (xValue>=1020 && yValue>=1020)
  {
    digitalWrite(9, LOW);
    digitalWrite(8, LOW);
  }

  if (buttonState == LOW)
  {
    Serial.println("Switch = High");
    digitalWrite(7, HIGH);
  }
  else{digitalWrite(7, LOW);}
  buttonState1 = digitalRead(7);
  Serial.println(buttonState1);
  delay(50);
}

Interfacing Circuit diagram of Joystick with Arduino

ส่งงานครั้งที่12

Door Alarm using Arduino and Ultrasonic Sensor


#include <NewPing.h> // สั่งเปิด library NewPing.h
#define TRIGGER_PIN  12  
#define ECHO_PIN     11  .
#define MAX_DISTANCE 500 // กำหนดค่าสูงสุด 500

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // กำหนดค่า TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE โดยตัวแปร NewPing

unsigned int pingSpeed = 50; // ให้ pingSpeed เเสดงค่าเท่ากับ 50
unsigned long pingTimer;
int flag = 0; // กำหนดใชช้ ping ต่อไป

void setup() {
  Serial.begin(115200); // กำหนดอัตราการรับส่งข้อมูล 115200 บิต/วินาที
  pingTimer = millis();
  pinMode(10, OUTPUT); 

}

void loop() {
  if (millis() >= pingTimer) {   // ถ้ามิลลิวินาทีมากกว่าหรือเท่ากับ pingTimer
    pingTimer += pingSpeed;      //ให้ไปที่ pingต่อไป
    sonar.ping_timer(echoCheck); // ส่ง Ping ให้เรียกฟังก์ชัน "echoCheck" ทุกๆ 24uS ซึ่งคุณสามารถตรวจสอบสถานะ ping ได้
  }
  if (flag == 1)
  {
    digitalWrite(10, HIGH);

    delay(500);
    digitalWrite(10, LOW);

    delay(500);
    digitalWrite(10, HIGH);

    delay(500);
    digitalWrite(10, LOW);

    delay(500);
  }
  else
  {
    digitalWrite(10, LOW);
  }
}

void echoCheck() { 
  if (sonar.check_timer()) { // เชคว่าได้รับ ping หรือไม่
    Serial.print("Ping: "); 
    Serial.print(sonar.ping_result / US_ROUNDTRIP_CM); // Ping ส่งคืนผลลัพธ์ uS ใน ping_result แปลงเป็น cm โดยใช้ US_ROUNDTRIP_CM
    Serial.println("cm");
    if ((sonar.ping_result / US_ROUNDTRIP_CM) < 50) //ถ้า sonar.ping_result / US_ROUNDTRIP_CM มีค่าน้อยกว่า 50
      flag = 1;
    else if ((sonar.ping_result / US_ROUNDTRIP_CM) > 50) //ถ้าsonar.ping_result / US_ROUNDTRIP_CM มีค่ามากกว่า 50
      flag = 0;
  }
}



Arduino Burglar Alarm Circuit Diagram using Ultrasonic Sensor

ส่งงานครั้งที่11

DIY Smart Vacuum Cleaning Robot using Arduino

void setup()
{
Serial.begin(9600); //กำหนดการรับส่งข้อมูล 9600 บิต/วินที
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}

void loop()
{
delay(1000);
Serial.print("forward"); //ให้เเสดงผลคำว่า  forward
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
delay(500);
Serial.print("backward"); //ให้เเสดงผลคำว่า backward
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
}

Arduino-vacuum-cleaner-robot-using-IR-and-ultrasonic-sensor

Mini Project

 Control Lamp 220v  With LDR const int lamp = 12; const int ldrPin=A0; #include <Wire.h> #include <LiquidCrystal_I2C.h&g...