วันอังคารที่ 15 มกราคม พ.ศ. 2562

งานปฏิบัติที่5ื

                                                                               

 
Code
#include<LedControl.h> #include<Keypad.h> char keys[4][4]={ {'7','8','9','A'}, {'4','5','6','B'}, {'1','2','3','C'}, {'E','0','F','D'}}; byte rowPins[]={7,6,5,4}; byte colPins[]={3,2,1,0}; Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,4,4); LedControl lc=LedControl(8,10,9,1);
void setup() { lc.shutdown(0,false); lc.setIntensity(0,5); lc.clearDisplay(0); } void loop() { char key = keypad.getKey(); if(key != NO_KEY) { lc.setChar(0,0,key,false); } }


อธิบาย
เมื่อกดเลขที่ คีเเพต เลขที่กดจะขึ้นบนจอLCD

วันอังคารที่ 8 มกราคม พ.ศ. 2562

งานปฏิบัติ4

Code

int led = 10;
void setup() {
 
  pinMode (led,OUTPUT);
  }

void loop() {
 int x,y;
 x =  analogRead(A0);
 y = map (x,0,1023,0,255);

 analogWrite(led,y);
 delay(1000);

}

คำอธิบาย
เมื่อปรับเปลี่ยนRแบบปรับค่าได้ledจะกระพิบช้าหรือเร็วตามค่าRที่เราปรับ

วันศุกร์ที่ 4 มกราคม พ.ศ. 2562

งานปฏิบัติ3

Code
โปรแกรม
#include <LedControl.h>
LedControl lc=LedControl(5,7,6,1);
int num = 0,seg1,seg2;
void setup()
{
lc.shutdown(0,false);
lc.setIntensity(0,5);
lc.clearDisplay(0);
}

void loop()
{
seg1=num%10;
seg2=num/10;
lc.setDigit(0,0,seg1,false);
lc.setDigit(0,1,seg2,false);
  delay(1000);
  num=num+1;
  if (num > 99)
  {
    num=0;
  }


}

อธิบายการทำงาน
เมื่อกดเริ่มเเล้วเลขจะเริ่มนับขึ้นบนจอLCDตั้งเเต่ 1-99 เเล้วเมื่อถึง 99เเล้วจะนับลงมา99-1 วนไปเลื่อยๆ

วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2561

Arduino วัดอุณหภูมิในน้ำด้วย DS18B20

Code
#include <OneWire.h
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 //กำหนดขา
OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensors(&oneWire);
void setup(void) { 
 Serial.begin(9600); 
 Serial.println("Dallas Temperature IC Control Library");  Serial.println("by 9arduino.com"); 
 sensors.begin(); 
void loop(void) {
 Serial.print(" Requesting temperatures..."); 
 sensors.requestTemperatures(); //อ่านข้อมูลจาก library
 Serial.print("Temperature is: "); 
 Serial.print(sensors.getTempCByIndex(0)); // แสดงค่า อูณหภูมิ sensor 0
delay(1000); 

อธิบาย 
การวัดอุณหภูมิ ในน้ำ ทางร้านแนะนำ Sensor Ds18b20 สามารถวัดอุณหภูมิได้ -55ºC ถึง 125ºC ความผิดพลาด  +/-0.5 ºC (ในช่วงระหว่าง -10ºC ถึง 85ºC)

อ้าอิงจากhttps://www.9arduino.com/-ds18b20

การใช้ EEPROM บันทึกค่าเมื่อหยุดจ่ายไฟให้กับบอร์ด Arduino

Code
#include<EEPROM.h>
void setup() {
Serial.begin(9600);
int num = random(0xFFFF);
EEPROM.write(0, num>>8);
EEPROM.write(1, num&0xFF);
Serial.println("EEPROM Write: " + String(num));
delay(1000);
}
void loop() {
int num = 0;
num |= EEPROM.read(0)<<8;
num |= EEPROM.read(1)&0xFF;
Serial.println("EEPROM Read: " + String(num));
delay(1000);
} อธิบาย EEPROM เป็นหน่วยความจำถาวร ที่สามารถอ่าน และเขียน ซ้ำได้ประมาณ 1 แสนครั้ง ซึ่งในบอร์ด Arduino แต่ละบอร์ดก็จะ มีขนาดพื้นที่ EEPROM แตกต่างกันไป อย่างในบอร์ด Arduino Uno R3 , Pro Mini , Nano จะมีพื้นที่ให้ใช้งานทั้งหมด 1KB (1,024 ตัวอักษร) ส่วน Arduino Mega 2560 R3 มีพื้นที่ 4KB (4,096 ตัวอักษร) พื้นที่ EEPROM ส่วนใหญ่แล้ว จะนำไปใช้ใน การเก็บค่าคอนฟิกต่างๆที่ได้ทำการตั้งค่าไว้ เมื่อหยุดจ่ายไฟจะไม่ทำให้ข้อมูลหายไป อ้างอิงจากhttps://www.ioxhop.com/

ใช้งาน DS3231 โมดูลนาฬิกา ตั้งเวลา

Code ตัวอย่าง
#include <Wire.h>
#include <SPI.h>  
#include <RTClib.h>
RTC_DS3231 RTC;
void setup () {
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();    
  RTC.adjust(DateTime(__DATE__, __TIME__));   //จุดนี้เป็นการตั้งเวลา ตั้งครั้งแรกเสร็จแล้วให้ // ไว้ด้วย
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  DateTime now = RTC.now();
  RTC.setAlarm1Simple(2158);  //เป็นการตั้งเวลาปลุก เวลา 22.58 น.
  RTC.turnOnAlarm(1);  //ปลุกช่วงเวลาที่ 1
  if (RTC.checkAlarmEnabled(1)) {
    Serial.println("Alarm Enabled");
  }
}
void loop () {
    DateTime now = RTC.now();
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    if (RTC.checkIfAlarm(1)) {   // เมื่อถึงเวลาให้ทำการปลุกโดยการทำตามเงือนไขใน if
      Serial.println("Alarm Triggered");
    }
    Serial.println();
    delay(3000);
}
อธิบาย Module นาฬิกา หรือมีอีกชื่อหนึ่งว่า Real time clock (RTC) ถ้าน้องๆนึกถึง Arduino เมื่อไม่มีการจ่ายไฟโปรแกรมของ Arduino ก็จะหยุดทำงาน เราจึงมี RTC เพื่อทำการเก็บเวลาไว้เมื่อจ่ายไฟให้กับวงจร Arduino ก็จะดึงเวลามาใช้งานได้ทันที หรือการ ตั้งค่าคำนวนเวลาของ Arduino อาจจะมีปัญหา ความแม่นยำไม่ตรงบ้าง Library มีการ delay ทำให้เวลาไม่ตรงบ้าง เราก็สามารถใช้ Module อ้างอิ่งเวลาได้อย่างชัดเจนแน่นอน หรือจะนำไปใช้ในการบอกเวลา เพื่อลดน้ำต้นไม้ เปิดปิดไฟตามเวลาก็ได้เช่นกัน

อ้างอิงจากhttps://www.9arduino.com/

การใช้ Arduino วัดอุณหภูมิและความชื้นด้วย DHT11

Code
#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
   Serial.begin(9600); 
   Serial.println("DHTxx test!");

   dht.begin();
}

void loop() {
   float h = dht.readHumidity();
   float t = dht.readTemperature();
   float f = dht.readTemperature(true);

   if (isnan(h) || isnan(t) || isnan(f)) {
     Serial.println("Failed to read from DHT sensor!");
      return;
   }

   float hi = dht.computeHeatIndex(f, h);

   Serial.print("Humidity: "); 
   Serial.print(h);
   Serial.print(" %\t");
   Serial.print("Temperature: "); 
   Serial.print(t);
   Serial.print(" *C ");
   Serial.print(f);
   Serial.print(" *F\t");
   Serial.print("Heat index: ");
   Serial.print(hi);
   Serial.println(" *F");
  
   delay(2000);
}
อธิบาย

DHT11

เป็นเซ็นเซอร์ที่ใช้วัดอุณหภูมิเป็นองศาเซลเซียล และองศาฟาเรนไฮ ยังสามารถวัดความชื้นได้อีกด้วย มีไลบารี่พร้อมใช่งานกับ Arduino สามารถใช้วัดค่าได้เที่ยงตรงกว่า NTC หรือ PTC มาก เพราะให้เอาต์พุตออกมาในรูปของดิจิตอล ใช้วัดอุณหภูมิอากาศโดยรอ

อ้าอิงจากhttps://www.ioxhop.com/-dht11