วันจันทร์ที่ 1 ตุลาคม พ.ศ. 2561

ใบงานที่ 18

#include <SoftwareSerial.h>
#include <DHT11.h>
//=============================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x3F, 16, 2);
SoftwareSerial ArduinoSerial(3, 2); // RX, TX
//=============================================
int SW_ON = 4,SW_OFF = 5,pin=6;//กำหนดขา INPUT
int Sun = 9,CSun = 0,Relay1 = 12, Relay2 = 11; //กำหนดขา OUTPUT 
int ATL = A0,ATH = A1;//กำหนดขา Analog
int VTL1 = 0,VTH1 = 0,TL = 0,TH =0,VRHL = 50,VRHH = 80;
DHT11 dht11(pin);
//=============================================
void setup()
{
  lcd.begin();
  Serial.begin(115200);
  ArduinoSerial.begin(4800);
  while (!Serial){
    ;
    }
  //=====================================================
  lcd.setCursor(0, 0);lcd.print("Elec Pattayatech");
  lcd.setCursor(0, 1);lcd.print("Smart Farm 2016 ");
  delay(5000);
  //====================================================
  pinMode(Relay1, OUTPUT);pinMode(Relay2, OUTPUT); 
  pinMode(SW_ON, INPUT); pinMode(SW_OFF, INPUT); pinMode(Sun, INPUT);
  digitalWrite(Relay1, HIGH);digitalWrite(Relay2, HIGH);
  lcd.setCursor(0, 0);lcd.print("                ");
  lcd.setCursor(0, 1);lcd.print("                ");
}
//=============================================================
void loop()
{
  while (ArduinoSerial.available() > 0) {
  float val = ArduinoSerial.parseFloat();
  if (ArduinoSerial.read() == '\n') {
  if (val == 10) {
  digitalWrite(13, 1);
  } else if (val == 11) {
  digitalWrite(13, 0);
  }
  Serial.println(val);
  }
  }
  delay(100);
  //========ปรับค่าอุณหภูมิอ้งอิง====================================
  CSun = digitalRead(Sun);
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
  VTL1 = analogRead(ATL);
  VTH1 = analogRead(ATH);
  TL = map(VTL1,0,1023,10,30);
  TH = map(VTH1,0,1023,25,45);
  Serial.print("TL :");Serial.print(TL);Serial.println("*C");
  Serial.print("TH :");Serial.print(TH);Serial.println("*C");
  //===========================================================
    int Stemp =(int)(temp);int Shumi=(int)(humi);//ตัดทศนิยม
    Serial.print("temp :");Serial.print(Stemp);Serial.println("*C");
    Serial.print("humidity :");Serial.print(Shumi);Serial.println("%");
    Serial.print("SUN :");Serial.println(CSun);//Serial.println();
    //===================================================
    lcd.setCursor(0, 0);lcd.print("TL:");lcd.print(TL);
    lcd.setCursor(6, 0);lcd.print("TH:");lcd.print(TH);
    lcd.setCursor(12, 0);lcd.print("S1:");lcd.print(!CSun);
    lcd.setCursor(0, 1);lcd.print("TN:");lcd.print(Stemp);
    lcd.setCursor(6, 1);lcd.print("RH:");lcd.print(Shumi);
    lcd.setCursor(12, 1);lcd.print("P1:0");lcd.print(Shumi);
    delay(1000);
    //===================================================
   //=======ควบคุมอุณหภูมิ===========================
   if(temp < TL && temp < TH ){
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        delay(100);
        digitalWrite(Relay2, LOW);//หลอดไฟทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(temp > TL && temp > TH){
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:0");
        delay(100);
        digitalWrite(Relay1, LOW);//ปั๊มน้ำทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(temp > TL && temp < TH){
       //=======ควบคุมความชื้น===========================
      if(humi < VRHL && humi < VRHH){
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:0");
        delay(100);
        digitalWrite(Relay1, LOW);//ปั๊มน้ำทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(humi > VRHL && humi > VRHH){
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        delay(100);
        digitalWrite(Relay2, LOW);//หลอดไฟทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:1");
        delay(60000);//หน่วงเวลา 1 นาที
      }else if(humi > VRHL && humi < VRHH){
        //delay(1000);
        digitalWrite(Relay1, HIGH);//ปั๊มน้ำหยุดทำงาน
        lcd.setCursor(12, 1);lcd.print("P1:0");
        digitalWrite(Relay2, HIGH);//หลอดไฟไม่ทำงาน
        lcd.setCursor(12, 0);lcd.print("L1:0");
        //หน่วงเวลา 1 นาที     
        }
     //=======ENDควบคุมความชื้น===========================     
        }
     //=======ENDควบคุมอุณหภูมิ===========================
  }
  else
  {
    Serial.println();Serial.print("Error No :");
    Serial.print(err);Serial.println(); 
  }
 delay(DHT11_RETRY_DELAY);
}


ใบงานที่ 17

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int aVal=0,tempaVal=0;
const int SW_ON = 2;
const int led_ON =  13; int CSW_ON = 0; int C_CSW_ON =0;
int Relay1=12,Relay2=11,Relay3=10,Relay4=9;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
  lcd.backlight();
  lcd.begin();
  Serial.begin(9600);
  pinMode(led_ON, OUTPUT);pinMode(SW_ON, INPUT);
  pinMode(Relay1,OUTPUT);pinMode(Relay2,OUTPUT);
  pinMode(Relay3,OUTPUT);pinMode(Relay4,OUTPUT);
//
  digitalWrite(Relay1,HIGH);digitalWrite(Relay2,HIGH);
  digitalWrite(Relay3,HIGH);digitalWrite(Relay4,HIGH);
  lcd.setCursor(0,0);
  lcd.print("Project2017");
  lcd.setCursor(0,1);
  lcd.print("standby");
}
//END Setup
void loop() {
  CSW_ON = digitalRead(SW_ON);
  sensorValue = analogRead(sensorPin);//Serial.println(sensorValue);
  //=======================================================================
  int c_sensorValue1 = map(sensorValue,0,1023,0,255);
  //Serial.print("c_sensorValue1 = ");Serial.println(c_sensorValue1);
  int c_sensorValue2 = map(sensorValue,0,1023,255,0);
  //Serial.print("c_sensorValue2 = ");Serial.println(c_sensorValue2);
  //=======================================================================
  //check SW_ON
  if (CSW_ON == LOW) { delay(1000);
    lcd.clear();
    C_CSW_ON++;
      Serial.print("C_CSW_ON = ");Serial.println(C_CSW_ON);
    //OPEN Project
    digitalWrite(led_ON, HIGH);
  //END check SW_ON
    if(C_CSW_ON == 1){
    lcd.setCursor(0,0);
    lcd.print("Power On ");
    delay(1000);
    lcd.clear();
    lcd.print("Power On ");
    delay(1000);
    lcd.clear();
    }
  }
  if(C_CSW_ON == 1){//OPEN PROJECT
    digitalWrite(led_ON, HIGH);
    //delay(1000);
    digitalWrite(Relay1, HIGH);
    //ตรวจสอบค่า VR================
      //lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(c_sensorValue1);
      lcd.print(" ");
      //==============================
      if(c_sensorValue1 >= 150){
      digitalWrite(Relay2, LOW);
      }else{
        digitalWrite(Relay2, HIGH);
        }
      //=============================
    //RelaySTART();
    }else{//OFF PROJECT
    lcd.setCursor(0,0);
    //lcd.print("Power Off");
    lcd.setCursor(0,1);
    lcd.print("standby");
    digitalWrite(led_ON, LOW); C_CSW_ON = 0;
    RelaySTOP();
    }
  }//END Loop
//======โปรแกรมย่อย==========
void RelaySTOP(){
digitalWrite(Relay1,HIGH);digitalWrite(Relay2,HIGH);
digitalWrite(Relay3,HIGH);digitalWrite(Relay4,HIGH);
  }
void RelaySTART(){
digitalWrite(Relay1,LOW);digitalWrite(Relay2,LOW);
digitalWrite(Relay3,LOW);digitalWrite(Relay4,LOW);
}

ใบงานที่ 16

#include <Stepper.h>
#include "Keypad.h"
#define STEP_ANGLE_4STEP 32 //360/11.25 degree
#define STEP_OUT_WITH_GEAR 2048 //32*64
Stepper stepper(STEP_ANGLE_4STEP,8,10,9,11);
char keys[4][4]={
  {'7','8','9','A'},
  {'4','5','6','B'},
  {'1','2','3','C'},
  {'*','0','#','D'}};
byte rowPins[] = {7,6,5,4};
byte colPins[] = {3,2,1,0};
int speedmotor = 400;
int dirmotor = 1;
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,4,4);
void setup()
{
}
void loop()
{
  char key = keypad.getKey();
  if (key != NO_KEY)
  {
        if (key == '1')
            speedmotor = 400;
        if (key == '2')
            speedmotor = 700;
        if (key == '3')
            speedmotor = 1000;
        if (key == 'A')
            dirmotor = 1;
        if (key == 'B')
            dirmotor = -1;   
        if (key == 'C')
            dirmotor = 0;
  }
  stepper.setSpeed(speedmotor);
  stepper.step(dirmotor);
}

ใบงานที่ 15

#include <LedControl.h>
#include <DHT11.h>
int pin=4;
DHT11 dht11(pin);
LedControl lc=LedControl(8,10,9,1);
// Pin 8->DIN, 10->CLK, 9->CS(LOAD), 1 = No.of devices
void show2digit(int h,int t)
{
  int seg1,seg2,seg3,seg4;
  seg1 = h%10;
  seg2 = h/10;
  lc.setDigit(0,4,seg1,false);
  lc.setDigit(0,5,seg2,false);
  seg3 = t%10;
  seg4 = t/10;
  lc.setDigit(0,0,seg3,false);
  lc.setDigit(0,1,seg4,false);
  delay(300);
}
void setup()
{
  Serial.begin(9600);
  while (!Serial) {
      ; // wait for serial port to connect. Needed for Leonardo only
    }
  lc.shutdown(0,false);
  lc.setIntensity(0,5);
  lc.clearDisplay(0);
}
void loop()
{
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    Serial.print("temperature:");
    Serial.print(temp);
    Serial.print(" humidity:");
    Serial.print(humi);
    Serial.println();
 
  }
  else
  {
    Serial.println();
    Serial.print("Error No :");
    Serial.print(err);
    Serial.println(); 
  }
  lc.clearDisplay(0);
  show2digit(humi,temp);
}

ใบงานที่ 14

#include <LedControl.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 11
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float Tfloat;
long Tint;
LedControl lc=LedControl(8,10,9,1);
// Pin 8->DIN, 10->CLK, 9->CS(LOAD), 1 = No.of devices
void show6digit(int num)
{
  int seg1,seg2;
  seg2 = (((((num%100000)%10000)%1000)%100)/10);
  seg1 = (((((num%100000)%10000)%1000)%100)%10);
  lc.setDigit(0,0,seg1,false);
  if (num>=10)
      lc.setDigit(0,1,seg2,false);
  delay(300);
}
void setup(void)
{
  sensors.begin();
  lc.shutdown(0,false);
  lc.setIntensity(0,5);
  lc.clearDisplay(0);
}
void loop(void)
{
  sensors.requestTemperatures();
  Tfloat = sensors.getTempCByIndex(0);
  Tint = int(Tfloat);
  lc.clearDisplay(0);
  show6digit(Tint);
}

ใบงานที่ 13

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int PIRpin = 8;
void setup()
{
  lcd.begin();
  pinMode(PIRpin,INPUT);
  lcd.home();
  lcd.print("Waiting for PIR");
  delay(10000);     
  lcd.clear();
}
void loop()
{
  int x = digitalRead(PIRpin);
  lcd.home();
  lcd.print("PIR = ");
  lcd.print(x);
  delay(100);
}

ใบงานที่ 12

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
long duration,distCM,temp_distCM=0;
void setup()
{
  lcd.begin();
  lcd.setCursor(0,0);
  lcd.print("Dist =      cm");
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  if (temp_distCM != distCM)
  {
    lcd.setCursor(7,0);
    lcd.print("    ");
  }
  lcd.setCursor(7,0);
  lcd.print(distCM);
  temp_distCM = distCM;
  delay(300);
}

ใบงานที่ 11

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int aval,temp_aval=0;
void setup()
{
  lcd.begin();
  lcd.setCursor(0,0);
  lcd.print("aval = ");
}
void loop()
{
   aval = analogRead(A0);
   if (temp_aval != aval)
   {
      lcd.setCursor(7,0);
      lcd.print("    ");
   }
   lcd.setCursor(7,0);
   lcd.print(aval);
   temp_aval = aval;
   delay(300);
}

ใบงานที่10

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int aVal=0,tempaVal=0;
void setup()
{
  lcd.begin();
}
void loop()
{
  aVal = analogRead(A0);

  if (tempaVal != aVal)
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("LDR");
    lcd.setCursor(0,1);
    lcd.print(aVal);
    delay(300);
  }
  tempaVal = aVal;
}


ใบงานที่ 9

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
  lcd.backlight();
  lcd.begin();//LiquidCrystal_I2C
}
void loop()
{
  lcd.setCursor(0,0);
  lcd.print("Hello LCD I2C");
  lcd.setCursor(0,1);
  lcd.print("Pattayatech");
}

วันศุกร์ที่ 28 กันยายน พ.ศ. 2561

อธิบายโปรแกรมHow To Make Arduino Based Home Automation Project via Bluetooth?




How To Make Arduino Based Home Automation Project via Bluetooth?


Circuit Diagram

Arduino Based Home Automation Circuit Diagram

ส่วนHardware (input,Output)
1.Bluetooth Module:
The Bluetooth Module used in this project is HC- 05. As seen in the image below, this Bluetooth module has 4 – pins for VCC (5V), ground, TX and RX.
Bluetooth Module
This Bluetooth can be used with Bluetooth enabled phone (or tablet or laptop) and the range of this module is approximately 10 meters.
2. 4-Channel Relay Board:
A 4 – channel relay board is used in this project to control four different loads. It has all the necessary components and connections like base current limiting resistor, flyback diode, LED indicators and header for connecting it to other devices.
Relay Board
Caution: We should be very careful when using a relay with AC mains.

Code

ส่วนหัวโปรแกรม #include <SoftwareSerial.h> //ฟังชั่นพิเศษ กำหนม library ที่เราเรียกใช้งาน
const int rxPin = 4; //กำหนดตัวแปร rxPin = ขา 4
const int txPin = 2; //กำหนดตัวแปร rxPin = ขา 2
SoftwareSerial mySerial(rxPin, txPin);
const int Loads[] = {9, 10, 11, 12};
int state = 0;
int flag = 0;
ส่วนตัวโปรแกรมมี 2 ส่วน
1.void setup() //เป็นฟังชั่นแรกเมื่อ Arduino ทำงาน
{
for (int i=0;i<4;i++) //สั่งให้ทำซ้ำไปเรื่อยๆ
{
pinMode(Loads[i], OUTPUT); //กำหนดให้ Loads เป้น OUTPUT
}
mySerial.begin(9600); //กำหนมความเร็วในการส่งข้อมูล
for (int i=0;i<4;i++) //ทำซ้ำไปเรื่อยจนครบตามเงื่อนไข
{
digitalWrite(Loads[i], LOW); สั่งให้ loads เป็น LOW
}
}
2.void loop() //การทำงานซ้ำไปเรื่อยๆ
{
if(mySerial.available() > 0) เช็คขอมูลในเงื่อนไขว่าเป็นจริงหรือไม่
{
state = mySerial.read(); อ่านค่าที่ได้รับ
flag=0;
}
switch(state)
{
case '0':digitalWrite(Loads[0], HIGH); เมื่อกดสวิต 1 ให้ loads เป็น 1
flag=1;
break;
case '1':digitalWrite(Loads[0], LOW); เมื่อกดสวิต 2 ให้ loads เป็น 0
flag=1;
break;
case '2':digitalWrite(Loads[1], HIGH);
flag=1;
break;
case '3':digitalWrite(Loads[1], LOW);
flag=1;
break;
case '4':digitalWrite(Loads[2], HIGH);
flag=1;
break;
case '5':digitalWrite(Loads[2], LOW);
flag=1;
break;
case '6':digitalWrite(Loads[3], HIGH);
flag=1;
break;
case '7':digitalWrite(Loads[3], LOW);
flag=1;
break;
case '8':digitalWrite(Loads[0], LOW);
digitalWrite(Loads[1], LOW); กำหนดให้สั่งเป็น LOW ทั้งหมด
digitalWrite(Loads[2], LOW);
digitalWrite(Loads[3], LOW);
flag=1;
break;
}
}
จบการทำงานของโปรแกรม..
Flowchart

วันอาทิตย์ที่ 16 กันยายน พ.ศ. 2561

Mini Project ควบคุมมอเตอร์และไฟ Led.










อุปกรณ์
1.Arduino r3
2.lcd
3.Switch


#include <LiquidCrystal.h>
const int rs = 12, en = 13, d4 = 6, d5 = 5, d6 = 4, d7 = 3;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);

int BS1 = 0;
int BS2 = 0;
int BS3 = 0;
void setup() {
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);

  pinMode(0, INPUT);
  pinMode(1, INPUT);
  pinMode(2, INPUT);

  lcd.begin(16, 2);
}
void loop() {
  BS1 = digitalRead(0);
  BS2 = digitalRead(1);
  BS3 = digitalRead(2);

 if(BS1 == LOW){
  digitalWrite(A0,HIGH);
  for (int i=0; i <= 355; i++){   
  digitalWrite(11,HIGH);
  delay(8);
  digitalWrite(11,LOW);
  delay(16);
  lcd.setCursor(5,1);
  lcd.print(" Speed 5% ");
  }
  digitalWrite(A1,HIGH);
  digitalWrite(A0,LOW);
    for (int i=0; i <= 355; i++){
   digitalWrite(11,HIGH);
  delay(10);
  digitalWrite(11,LOW);
  delay(10);
  lcd.setCursor(5,1);
  lcd.print(" Speed 50% ");
    }
    digitalWrite(A1,LOW);
     digitalWrite(A2,HIGH);
      for (int i=0; i <= 355; i++){
  digitalWrite(11,HIGH);
  delay(19);
  digitalWrite(11,LOW);
  delay(1);
  lcd.setCursor(5,1);
  lcd.print(" Speed 90% ");
  }
  }

   if(BS2 == LOW){
   for (int i=0; i <= 20; i++){
    lcd.setCursor(3,1);
  lcd.print(" StephLED.1 ");


  digitalWrite(7,HIGH);
  digitalWrite(A0,HIGH);
  delay(100);
  digitalWrite(7,LOW);
  digitalWrite(A1,LOW);
  delay(100);
  digitalWrite(8,HIGH);
  digitalWrite(A2,HIGH);
  delay(100);
  digitalWrite(8,LOW);
  digitalWrite(A1,LOW);
  delay(100);
  digitalWrite(9,HIGH);
  digitalWrite(A0,HIGH);
  delay(100);
  digitalWrite(9,LOW);
  digitalWrite(A2,LOW);
  delay(100);
  digitalWrite(10,HIGH);
  digitalWrite(A1,HIGH);
  delay(100);
  digitalWrite(10,LOW);
  digitalWrite(A0,LOW);
  delay(100);
   }
   }
 if(BS3 == LOW){
   for (int i=0; i <= 20; i++){
    lcd.setCursor(3,1);
  lcd.print(" StephLED.2 ");

  digitalWrite(10,HIGH);
  digitalWrite(A1,HIGH);
  delay(90);
  digitalWrite(10,LOW);
  digitalWrite(A1,LOW);
  delay(90);
  digitalWrite(9,HIGH);
  digitalWrite(A0,HIGH);
  delay(90);
  digitalWrite(9,LOW);
  digitalWrite(A0,LOW);
  delay(90);
  digitalWrite(8,HIGH);
  digitalWrite(A2,HIGH);
  delay(90);
  digitalWrite(8,LOW);
  digitalWrite(A2,LOW);
  delay(90);
  digitalWrite(7,HIGH);
  digitalWrite(A1,HIGH);
  delay(90);
  digitalWrite(7,LOW);
  digitalWrite(A1,LOW);
  delay(90);


   }
 }
   else  {
   digitalWrite(11,LOW);

  lcd.setCursor(4,1);
  lcd.print(" Welcome...");
   }
  }
               (https://youtu.be/QPJOPPAU6vM)

18.MINI project Arduino Wifi Car Controlled


Posts

MINI project Arduino Wifi Car Controlled

 Arduino Wifi Car Controlled




อุปกรณ์    1.ARDUINO UNO R3    2.L298N  MOTOR DRIVER    3.ESP-01S ESP8266-01S โมดูล Serial Wifi ESP 8266 รุ่น ESP-01S    4.DC MOTOR    5.Character LCD Display    6.ล้อ








CODE



#include<TEE_ESP_WIFI.h>
#include <SoftwareSerial.h>
#define pinEN 9
#define ESP_Rx 10
#define ESP_Tx 11
#define LED 7
String ssid="SUTHIWAS_EARTH";
String pwd ="12345678";
ESP wifi(ESP_Rx,ESP_Tx,pinEN); //บรรทัดที่1
void print_debug(String data) //บรรทัดที่2
{Serial.print(data);} //บรรทัดที่3

// Motor A

int dir1PinA = 2;

int dir2PinA = 3;

int speedPinA = 6; //   เพื่อให้ PWM สามารถควบคุมความเร็วมอเตอร์ 


// Motor B

int dir1PinB = 4;

int dir2PinB = 5;

int speedPinB = 7; // เพื่อให้ PWM สามารถควบคุมความเร็วมอเตอร์

//LCD
#include <LiquidCrystal.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
 pinMode(LED, OUTPUT); //บรรทัดที่4
 digitalWrite(LED,LOW); //บรรทัดที่5
 Serial.begin(9600); //บรรทัดที่6
 wifi.begin(9600); //บรรทั…
Recent posts

https://learn.adafruit.com/secret-knock-activated-drawer-lock?view=all

Overview by Steve Hoefer Nothing says "There's something valuable here!" than the sight of a lock. But what if the lock was invisible and the unlocking key could be transmitted through solid matter? No one would even know there was a lock, much less how to pick it.

That's what the Secret Knock Activated Drawer Lock does. It hides all of the lock mechanism away and can only be unlocked by something you know: a secret pattern of knocks.

A solenoid locks secures the drawer while a piezo buzzer listens for knocks. A Trinket compares the knock pattern to the stored secret knock and if they match the solenoid latch retracts and the drawer can be opened. Setting your own custom knock is as simple as holding down a button and tapping the new rhythm.

The project is relatively straight forward and you should be able to complete it in an afternoon. 

As always, read and understand this guide completely before starting the project. Parts & Tools by Steve Hoefer This project only r…