Giới thiệu
Mạch thời gian thực MKE-M09 RTC DS1307 real time clock module được sử dụng để lấy dữ liệu về thời gian thực: giờ, phút, giây, thứ, ngày, tháng, năm trong các ứng dụng cần điều khiển và đồng bộ với thời gian thực tế, mạch sử dụng giao tiếp I2C nên dễ dàng kết nối và sử dụng với chỉ 2 chân giao tiếp I2C là SDA (data) và SCL (clock).
Mạch thời gian thực MKE-M09 RTC DS1307 real time clock module thuộc hệ sinh thái phần cứng Robotics MakerEdu nên có thể sử dụng trực tiếp an toàn với các mạch điều khiển trung tâm ở cả hai mức điện áp 3.3VDC và 5VDC như: Arduino, Raspberry Pi, Jetson Nano, Micro:bit,….với chuẩn kết nối Connector XH2.54 thông dụng.
Hướng dẫn sử dụng với phần mềm MakeCode và Micro:bit
Phần cứng cần chuẩn bị:
- Mạch thời gian thực MKE-M09 RTC DS1307 real time clock module
- Mạch hiển thị MKE-M07 LCD1602 I2C module
- Mạch MakerEdu Shield for Micro:bit
- Mạch Micro:Bit
- Cáp USB để nạp chương trình và cấp nguồn
Phần mềm cần chuẩn bị:
- Khởi động phần mềm MakeCode theo hướng dẫn.
- Cài đặt Extension MakerEdu Hardware trên MadeCode và tham khảo các khối chức năng theo hướng dẫn.
- Tham khảo cách kết nối và nạp chương trình cho Micro:bit trên máy tính hoặc điện thoại, máy tính bảng.
Chương trình mẫu:
- Micro:Bit đọc liên tục giá trị thời gian từ mạch RTC DS1307, với chu kỳ mỗi 1s.
- Sau đó cho hiển thị các giá trị thời gian lên màn hình LCD, gồm: “Thứ, Ngày/Tháng/Năm” và “Giờ:Phút:Giây”.
Blocks
Javascript
// Xóa toàn bộ nội dung trên LCD (nếu có) lcd.clearScreen() basic.forever(function () { // Cho hiển thị thông tin LỊCH hiện tại trong RTC trên LCD // Là Thứ, Ngày, Tháng, Năm lcd.displayText(ds3231.getCalendar(), 1, 1) // Cho hiển thị tiếp thông tin THỜI GIAN hiện tại trong RTC trên LCD // Là Giờ, Phút, Giây lcd.displayText(ds3231.getTime(), 1, 2) // Dừng 1s basic.pause(1000) })
Sơ đồ kết nối:
MakerEDU Shield for Micro:bit | Devices |
Port I2C | Mạch Thời Gian Thực MKE-M09 RTC DS1307 Real Time Clock Module |
Port I2C | Mạch Hiển Thị MKE-M07 LCD1602 I2C Module |
Các bước tiến hành:
- Kết nối Mạch Thời Gian Thực MKE-M09 với mạch MakerEDU Shield For Micro:Bit qua Port I2C.
- Kết nối Mạch Hiển Thị MKE-M07 với mạch MakerEDU Shield For Micro:Bit qua Port I2C.
- Kết nối Micro:bit với mạch MakerEdu Shield for Micro:bit
- Nạp chương trình mẫu vào mạch Micro:Bit.
- Nhấn nút Reset trên mạch Micro:Bit để bắt đầu chạy chương trình.
Kết quả:
…pic
Tư vấn: 0979.466.469 / 0938.128.290 Email: [email protected]
Giới thiệu Arduino Mega 2560
Trước hết, tại sao tại sao chúng ta nên lựa chọn Arduino Mega 2560?
Vì đây là một bo mạch được tích hợp nhiều tính năng nổi bật. Tính năng đầu tiên là thiết kế hệ thống I / O lớn với 16 bộ chuyển đổi tương tự và 54 bộ chuyển đổi digital hỗ trợ UART và các chế độ giao tiếp khác. Thứ hai, Arduino Mega 2560 có sẵn RTC và các tính năng khác như bộ so sánh, timer, ngắt để điều khiển hoạt động, tiết kiệm điện năng và tốc độ nhanh hơn với xung thạch anh16 Mhz.
Các tính năng khác bao gồm hỗ trợ JTAG để lập trình, gỡ lỗi và xử lý sự cố. Với bộ nhớ FLASH lớn và SRAM, bo này có thể xử lý chương trình hệ thống lớn một cách dễ dàng. Nó cũng tương thích với các loại bo mạch khác nhau như tín hiệu mức cao (5V) hoặc tín hiệu mức thấp (3.3V) với chân nạp I / O.
Brownout và watchdog giúp hệ thống đáng tin cậy và mạnh mẽ hơn. Nó hỗ trợ ICSP cũng như lập trình vi điều khiển USB với PC.
Arduino Mega 2560 là một sự thay thế của Arduino Mega cũ. Nó thường được sử dụng cho các dự án rất phức tạp.
Các Đặc Điểm Kỹ Thuật
Arduino Mega |
Tính năng, đặc điểm |
Vi điều khiển |
AVR ATmega 2560 (8bit) |
Nguồn cung cấp |
7-12V (Bộ điều chỉnh sẵn có cho bộ điều khiển) |
Số chân I/O số |
54 |
Số chân I/O tương tự |
16 |
Xung clock |
16 MHz ( nhà sản xuất cài đặt là 1MHz) |
Bộ nhớ flash |
128 KB |
SRAM |
8 KB |
Giao tiếp |
USB (Lập trình với ATmega 8), ICSP (lập trình), SPI, I2C và USART |
Bộ Timer |
2 (8bit) + 4 (16bit) = 6 Timer |
PWM |
12 (2-16 bit) |
ADC |
16 (10 bit) |
USART |
|
Ngắt thay đổi chân |
24 |
Arduino Mega 2560 cũng được tích hợp các tính năng bổ sung như bộ so sánh, ngắt, chế độ tiết kiệm điện, cảm biến nhiệt độ, RTC và nhiều tính năng khác.
Chân nguồn:
VIN |
Cung cấp điện áp (7-12V) |
GND |
Chân nối đất |
Nguồn 5V |
Đối với nguồn cung cấp thiết bị phần cứng bên ngoài |
Nguồn 3.3V |
Đối với thiết bị phần cứng điện áp thấp bên ngoài |
Sơ đồ chân Arduino Mega
Chân điều khiển:
RESET: Arduino Mega Mega 2560 có sẵn mạch reset với nút ấn để thiết lập lại hệ thống và chân này có thể được sử dụng khi kết nối các thiết bị khác để thiết lập lại bộ điều khiển.
XTAL1, XTAL2: Thạch anh(16Mhz) được kết nối với xung clock cung cấp cho bộ điều khiển.
AREF: Chân này được dùng khi sử dụng ADC để chuyển đổi tín hiệu với điện áp tham chiếu bên ngoài mà không muốn sử dụng điện áp tham chiếu nội bộ 1.1V hoặc 5V.
Các chân Digital (70):
Chân số: Từ 0-53 (số) và 0-15 (tương tự) có thể được sử dụng làm đầu vào hoặc đầu ra cho thiết bị được thiết lập bằng các hàm Mode (), digtalWrite (), digitalRead ().
Ứng dụng:
Thiết bị đầu ra: Relay, LED, buzzer, LCD và các thiết bị khác.
Thiết bị đầu vào: Nút ấn, cảm biến siêu âm, cần điều khiển và các thiết bị khác
Thí dụ:
Đầu ra tín hiệu thấp trên Arduino mega
pinMode (0, OUTPUT);
digitalWrite (0, LOW);
Đầu vào đọc tín hiệu trên Arduino mega
pinMode (0, INPUT);
digitalRead (0);
Chân tương tự (16):
Từ 0-15 (analog) có thể được sử dụng như chân đầu vào tương tự cho bộ ADC, nếu không sử dụng nó hoạt động như chân digital bình thường. Nó được thiết lập bởi các hàm pinMode () khai báo chân, analogRead () để đọc trạng thái chân và nhận giá trị kỹ thuật số cho tín hiệu analog. Lưu ý phải cẩn thận để lựa chọn điện áp tham chiếu bên trong hoặc bên ngoài và chân Aref.
Ứng dụng :
Thiết bị đầu vào: Cảm biến nhiệt độ, cảm biến (như ldr, irled và độ ẩm) và các thiết bị khác
Thí dụ :
pinMode (0, INPUT);
analogRead (0);
Chân có Chức năng thay thế:
Chân SPI: Chân 22-SS, 23_SCK, 24-MOSI, 25-MISO
Các chân này được sử dụng cho giao tiếp nối tiếp với giao thức SPI để liên lạc giữa 2 thiết bị trở lên. SPI cho phép bit phải được thiết lập để bắt đầu giao tiếp với các thiết bị khác.
Ứng dụng: Lập trình điều khiển AVR, giao tiếp với những người khác ngoại vi như LCD và thẻ SD.
Chân I2C:
Chân 20 cho SDA và 21 cho SCK (Tốc độ 400khz) để cho phép liên lạc hai dây với các thiết bị khác. Hàm được sử dụng là wire.begin () để bắt đầu chuyển đổi I2C, với wire.Read () để đọc dữ liệu i2c và wire.Write () để ghi dữ liệu i2c.
Ứng dụng:
Thiết bị đầu ra: LCD và liên lạc giữa nhiều thiết bị với hai dây.
Thiết bị đầu vào: RTC và các thiết bị khác.
Thí dụ:
I2c chỉ đọc dữ liệu
Wire.begin ();
Wire.requestTừ (2, 1); // dữ liệu 1byte
Wire.Read ();
PWM chân :
Chân 2-13 có thể được sử dụng như đầu ra PWM với hàm analogWrite () để ghi giá trị pwm từ 0-255.
Ứng dụng:
Thiết bị đầu ra: Điều khiển tốc độ của động cơ, ánh sáng mờ, pid cho hệ thống điều khiển hiệu quả.
Thí dụ:
Ngõ ra tín hiệu tương tự trên bảng mạch Arduino
pinMode (0, OUTPUT);
analogWrite (0,255);
Chân USART:
Chân 0 – RXD0, chân 1 – TXD0
Chân 19 – RXD1, chân 18 – TXD1
Chân 17 – RXD2, chân 16 – TXD2
Chân 15 – RXD3, chân 14 – TXD3
Chân này được sử dụng cho giao tiếp nối tiếp giữa bo mạch với máy tính hoặc hệ thống khác để chia sẻ và ghi dữ liệu. Nó được sử dụng với hàm serialBegin () để cài đặt tốc độ truyền và bắt đầu truyền thông với serial.Println () để in mảng ký tự (mảng char) ra thiết bị khác.
Ứng dụng:
Bộ điều khiển truyền thông và máy tính
Ví dụ :
Serial.begin (9600);
Serial.Println (“hello”);
Chân ngắt :
Chân digital: 0,22,23,24,25,10,11,12,13,15,14
Chân analog: 6,7,8,9,10,11,12,13,14,15
Chân này được sử dụng để ngắt. Để kích hoạt chân ngắt phải cài đặt bật ngắt toàn cục.
Ứng dụng :
Bộ mã hóa vòng quay, nút bấm dựa trên ngắt và các nút khác.
Thí dụ :
pinMode (0, OUTPUT);
pinMode (1, INPUT_PULLUP);
attachInterrupt (digitalpinToInterrupt (1), LOW, CHANGE);
Chân ngắt phần cứng:
Chân 18 – 21,2,3 ngắt phần cứng được sử dụng cho các ứng dụng ngắt. Ngắt phần cứng phải được bật với tính năng ngắt toàn cục để ngắt quãng từ các thiết bị khác.
Ứng dụng:
Nhấn nút cho chương trình ISR, đánh thức bộ điều khiển bằng thiết bị bên ngoài như cảm biến siêu âm và các thiết bị khác.
Thí dụ:
pinMode (0, OUTPUT);
pinMode (1, INPUT_PULLUP);
attachInterrupt (digitalpinToInterrupt (1), LOW, LOW);
Các phần của Arduino Mega:
Giắc cắm nguồn DC:
Cấp nguồn cho Arduino Mega từ 7-12V qua cổng này. Arduino Mega R3 có bộ điều chỉnh điện áp nguồn cấp 5V và 3.3V cho bộ điều khiển Arduino và bộ cảm biến.
AVR 2560:
Đây là vi điều khiển chính được sử dụng để lập trình và chạy tác vụ cho hệ thống. Đây là bộ não của hệ thống để điều khiển tất cả các thiết bị khác trên mạch.
ATmega8:
Vi điều khiển này được sử dụng để liên lạc giữa bộ điều khiển chính và các thiết bị khác. Bộ điều khiển này được lập trình cho giao tiếp USB và các tính năng lập trình nối tiếp.
ICSP 1 (ATmega8) và 2 (AVR 2560):
Nó có các tính năng của lập trình sử dụng bus nối tiếp với lập trình AVR sử dụng giao tiếp SPI. AVR 2560 được lập trình để chạy hệ thống và ATmega 8 được lập trình để liên lạc và lập trình nối tiếp.
Một số chương trình đơn giản để thử trên Arduino Mega 2560
Chương trình 1: Đèn LED nhấp nháy
/ *Bật đèn LED trong hai giây, sau đó tắt trong hai giây trên chân 13, nhiều lần.
*// chức năng cài đặt chạy một lần khi bạn nhấn đặt lại hoặc bật bảng
void setup () {
// khởi tạo ghim số 13 làm đầu ra.
pinMode (13, OUTPUT);
// chức năng vòng lặp chạy lặp đi lặp lại
void loop () {
digitalWrite (13, CAO); // bật đèn LED (HIGH là mức điện áp)
Delay (2000); // chờ hai giây
digitalWrite (13, LOW); // tắt đèn LED
delay (2000); // chờ hai giây
Chương trình 2: Ánh sáng Led mờ (PWM):
int brightness = 0; // giá trị pwm
void setup ()
pinMode (3, OUTPUT);
Void loop ()
analogWrite (3, brightness); // pwm viết trên chân 3
brightness ++; // độ sáng được tăng thêm 1
if (brightness <= 0 || brightness > = 255) {
brightness = 0; // độ sáng giới hạn ở 0-255
delay (10)
Chương trình 3: Analog đọc điện áp (Analog chân với USART):
Void setup ()
Serial.begin (9600); // chức năng bắt đầu giao tiếp usart với baudrate được đặt thành 9600
Void loop ()
int sensorValue = analogRead (A0); // dữ liệu analog chân 0 được đọc và chuyển đổi thành giá trị số được lưu trữ trong sensorValue.
Serial.println (sensorValue); // usart để đầu ra giá trị cảm biến trên màn hình nối tiếp
Code: M-7006-039 Còn hàng
Code: 7203-028 Còn hàng
Code: M-7004-016 Còn hàng
Code: 7006-060 Còn hàng
Hotline: 0979 466 469
Hello.
I am currently developing a project in which I’m using a RTC DS1307 module to get access to current time and date.
I managed to get it to work just fine when connected to my Arduino Mega 2560. I am connecting the SDA and SCL from RTC to pins 20 and 21, respectively.
However, as soon as I put my Ethernet Shield (which I use to access an SD card) on top of the Arduino, the connection with the RTC boards stops to work, and I get the following message from my Serial Monitor:
Couldn’t find RTC
I am using the example code available from the RTClib library, with no alterations:
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib #include "RTClib.h" RTC_DS1307 rtc; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; void setup () { Serial.begin(57600); #ifndef ESP8266 while (!Serial); // wait for serial port to connect. Needed for native USB #endif if (! rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); while (1) delay(10); } if (! rtc.isrunning()) { Serial.println("RTC is NOT running, let's set the time!"); // When time needs to be set on a new device, or after a power loss, the // following line sets the RTC to the date & time this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); } // When time needs to be re-set on a previously configured device, the // following line sets the RTC to the date & time this sketch was compiled // rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); } 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(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // calculate a date which is 7 days, 12 hours, 30 minutes, and 6 seconds into the future DateTime future (now + TimeSpan(7,12,30,6)); Serial.print(" now + 7d + 12h + 30m + 6s: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); Serial.println(); delay(3000); }
Does anyone have any idea on how I could solve this problem?
Thanks in advance.
Mạch thời gian thực MKE-M09 RTC DS1307 real time clock module
Hướng dẫn sử dụng với phần mềm mBlock và MakerEdu Creator
Phần cứng cần chuẩn bị:
- Mạch thời gian thực MKE-M09 RTC DS1307 real time clock module
- Mạch hiển thị MKE-M07 LCD1602 I2C module
- Mạch MakerEdu Creator
- Cáp USB để nạp chương trình và cấp nguồn
Phần mềm cần chuẩn bị:
- Tải và cài đặt phần mềm mBlock theo hướng dẫn.
- Tải và cài đặt Driver, cấu hình cho Mạch MakerEdu Creator trên phần mềm mBlock theo hướng dẫn.
- Tải và cài đặt Extension MakerEdu Hardware trên phần mềm Mblock theo hướng dẫn.
Chương trình mẫu:
- Mạch MakerEdu Creator đọc liên tục giá trị thời gian từ mạch RTC DS1307, với chu kỳ mỗi 1s.
- Sau đó cho hiển thị các giá trị thời gian lên màn hình LCD, gồm: “Thứ, Ngày/Tháng/Năm” và “Giờ:Phút:Giây”.
Blocks
Sơ đồ kết nối:
MakerEdu Creator | Devices |
Port I2C | Mạch Thời Gian Thực MKE-M09 RTC DS1307 Real Time Clock Module |
Port I2C | Mạch Hiển Thị MKE-M07 LCD1602 I2C Module |
Các bước tiến hành:
- Kết nối Mạch Thời Gian Thực MKE-M09 với mạch MakerEdu Creator qua Port I2C.
- Kết nối Mạch Hiển Thị MKE-M07 với mạch MakerEdu Creator qua Port I2C.
- Kết nối mạch MakerEdu Creator với máy tính bằng cáp USB và cấu hình mạch trên phần mềm mBlock.
- Nạp chương trình mẫu vào mạch MakerEdu Creator.
- Nhấn nút Reset trên mạch MakerEdu Creator để bắt đầu chạy chương trình.
Kết quả:
…pic
Nhà phân phối
Có thể mua Mạch thời gian thực MKE-M09 RTC DS1307 real time clock module tại các nhà phân phối sau:
Tư vấn: 0979.466.469 / 0938.128.290 Email: [email protected]
bài viết này mì sẽ giới thiệu với các bạn về Arduino Mega – Sơ đồ chân
Hướng dẫn Arduino Mega – Sơ đồ chân
Trước hết, tại sao lại sử dụng Arduino Mega 2560?
Khi các bo mạch rẻ hơn có sẵn, tại sao lại sử dụng Arduino Mega? Lý do chính đằng
sau điều này là các tính năng bổ sung được tích hợp sẵn với bảng này. Đặc điểm đầu
tiên là thiết kế hệ thống I / O lớn với 16 đầu dò analog và 54 đầu dò kỹ thuật số
có sẵn hỗ trợ USART và các chế độ giao tiếp khác. Thứ hai, nó có sẵn RTC và các tính
năng khác như bộ so sánh tương tự, bộ đếm thời gian nâng cao, ngắt cho cơ chế đánh thức
bộ điều khiển để tiết kiệm điện hơn và tốc độ nhanh với đồng hồ tinh thể 16 Mhz để có
được 16 MIBS. Nó có hơn 5 chân cho Vcc và Gnd để kết nối các thiết bị khác với Arduino Mega.
Thông số kỹ thuật Arduino Mega 2560
Arduino Mega – Tính năng cơ bản
Arduino MegaĐặc trưng
Vi điều khiểnAVR ATmega 2560 (8bit)
Nguồn cấp7-12V (Bộ điều chỉnh sẵn có cho Bộ điều khiển)
Ghim I / O kỹ thuật số54
Các chân I / O Analog16
Tổng số I / O kỹ thuật số70 (Kỹ thuật số + Tương tự)
Tốc độ đồng hồ16 MHz (Nhà máy đặt thành 1Mhz)
Bộ nhớ flash128 KB
SRAM8 KB
Giao tiếpUSB (Lập trình với ATmega 8), ICSP (lập trình), SPI, I2C và USART
Hiển thị 1 đến 9 của 9 mục nhập
TrướcKế tiếp
Arduino Mega – Tính năng nâng cao
Arduino MegaCác tính năng tiên tiến
Hẹn giờ2 (8bit) + 4 (16bit) = 6 bộ hẹn giờ
PWM12 (2-16 bit)
ADC16 (10 bit)
USART4
Ngắt thay đổi mã pin24
Arduino Mega 2560 cũng được tích hợp các tính năng bổ sung như Bộ so sánh tương tự, Ngắt
ngoài & Ngắt phần mềm, Chế độ tiết kiệm điện, Cảm biến nhiệt độ sẵn có, RTC và hơn thế nữa.
Arduino Mega Pinout ( sơ đồ Chân )
Chân nguồn:
Arduino MegaChân điện
VINĐiện áp cung cấp (7-12V)
GNDĐất
Nguồn cung cấp 5VĐối với nguồn điện thiết bị phần cứng bên ngoài
Cung cấp 3.3VĐối với nguồn điện thiết bị phần cứng điện áp thấp bên ngoài
Sơ đồ chân Arduino Mega
Chân điều khiển:
RESET: (Đặt lại đầu vào) Mức thấp trên chân này lâu hơn 4 chu kỳ xung nhịp sẽ tạo ra một thiết lập lại.
Arduino Mega có mạch đặt lại sẵn với nút nhấn để đặt lại hệ thống và chân này có thể được sử dụng
bởi các thiết bị khác để đặt lại bộ điều khiển.
XTAL1, XTAL2: Crystal (16Mhz) được kết nối với đồng hồ cung cấp cho bộ điều khiển với 2 tụ điện bypass nối đất.
AREF: Chân này được sử dụng khi chúng tôi sử dụng Adc để chuyển đổi tương tự sang kỹ thuật số với
điện áp tham chiếu bên ngoài để chuyển đổi và không muốn sử dụng tham chiếu bên trong 1.1V hoặc 5v.
Chân kỹ thuật số: Từ 0-53 (kỹ thuật số) và 0-15 (tương tự) có thể được sử dụng làm đầu vào hoặc đầu
ra cho đầu dò kỹ thuật số và thiết bị đầu ra bằng pinMode () cho hướng chân, digtalWrite () để ghi chân
và digitalRead () để đọc tình trạng pin.
Ứng dụng:
Thiết bị đầu ra: Rơ le, đèn LED, còi, LCD và các thiết bị khác.
Thiết bị đầu vào: nhiệt điện trở kỹ thuật số, nút nhấn, cảm biến siêu âm, cần điều khiển và các thiết bị khác
Chân tương tự (16):
Chân tương tự: Từ 0-15 (tương tự) có thể được sử dụng làm chân đầu vào tương tự cho adc, nếu không sử
dụng nó hoạt động như chân kỹ thuật số bình thường. Nó có thể được sử dụng bởi pinMode () cho hướng
chân, analogRead () để đọc trạng thái chân và nhận giá trị kỹ thuật số cho tín hiệu tương tự, phải cẩn thận khi lựa chọn điện áp tham chiếu bên trong hoặc bên ngoài và chân Aref.
Chân SPI :
Pin 22 – SS, Pin 23 – SCK, Pin 24 – MOSI, Pin 25 – MISO
Các chân này được sử dụng để giao tiếp nối tiếp với giao thức SPI để giao tiếp giữa 2 hoặc nhiều thiết bị.
Bit kích hoạt SPI phải được đặt để bắt đầu giao tiếp với các thiết bị khác.
Ứng dụng:
Lập trình bộ điều khiển AVR, giao tiếp với các thiết bị ngoại vi khác như LCD và thẻ SD với giao tiếp bốn
dòng ở tốc độ cao.
Chân I2C:
Chân kỹ thuật số 20 cho SDA và 21 cho SCK (Tốc độ 400khz) để cho phép giao tiếp hai dây với các thiết bị khác.
Hàm được sử dụng là wire.begin () để bắt đầu chuyển đổi I2C, với wire.Read () để đọc dữ liệu i2c và wire.Write () để ghi dữ liệu i2c.
Ứng dụng:
Thiết bị đầu ra: LCD và giao tiếp giữa nhiều thiết bị bằng hai dây.
Thiết bị đầu vào: rtc và các thiết bị khác.
PWM Pins :
Chân kỹ thuật số 2-13 có thể được sử dụng làm đầu ra PWM với analogWrite () để ghi giá trị pwm từ 0-255.
Đây là sự thay thế của DAC cho hệ thống giá rẻ để lấy tín hiệu tương tự ở đầu ra bằng cách sử dụng bộ lọc.
Ứng dụng:
Thiết bị đầu ra: điều khiển tốc độ của động cơ, điều chỉnh độ sáng đèn, pid cho hệ thống điều khiển hiệu quả.
Ghim USART:
Chân 0 – RXD0, chân 1 – TXD0
Chân 19 – RXD1, chân 18 – TXD1
Chân 17 – RXD2, chân 16 – TXD2
Chân 15 – RXD3, chân 14 – TXD3
Chân này được sử dụng để giao tiếp usart nối tiếp với máy tính hoặc hệ thống khác để chia sẻ và ghi dữ liệu.
Nó được sử dụng với serialBegin () để thiết lập cài đặt tốc độ truyền và bắt đầu giao tiếp với serial.Println () để in mảng char trên đầu ra thiết bị khác.
Ứng dụng:
Giao tiếp hai bộ điều khiển, giao tiếp máy tính và bộ điều khiển, gỡ lỗi với usart bằng màn hình nối tiếp.
Ghim các ghim ngắt:
Pin kỹ thuật số 0,22,23,24,25,10,11,12,13,15,14
Chân Analog 6,7,8,9,10,11,12,13,14,15
Chân này được sử dụng cho ngắt thay đổi chân. Kích hoạt ngắt pinchange phải được đặt với kích hoạt ngắt toàn cục.
Ứng dụng :
Bộ mã hóa quay, ngắt dựa trên nút nhấn và những thứ khác.
Chân ngắt phần cứng:
Chân số 18 – 21,2,3 ngắt phần cứng được sử dụng cho các dịch vụ ngắt. Ngắt phần cứng phải được bật với tính năng ngắt toàn cục để nhận ngắt từ các thiết bị khác.
Ứng dụng:
Nút nhấn cho chương trình ISR, bộ điều khiển đánh thức với các thiết bị bên ngoài, cảm biến như sóng siêu âm và các thiết bị khác.
Các thành phần của giản đồ Arduino Mega:
Nguồn điện DC Jack:
Nguồn cung cấp bên ngoài cho Arduino Mega từ dải 7-12 volt được cung cấp với cổng này.
Arduino Mega R3 có bộ điều chỉnh điện áp cho nguồn 5v và 3,3v cho bộ điều khiển Arduino và nguồn cung cấp cảm biến.
AVR 2560:
Đây là bộ điều khiển chính dùng để lập trình và chạy tác vụ cho hệ thống.
Đây là bộ não của hệ thống điều khiển tất cả các thiết bị khác trên tàu.
ATmega8:
Bộ điều khiển này được sử dụng để giao tiếp giữa bộ điều khiển chính và các thiết bị khác.
Bộ điều khiển này được lập trình cho các tính năng giao tiếp USB và lập trình nối tiếp.
ICSP 1 (ATmega8) và 2 (AVR 2560):
Nó có tính năng lập trình sử dụng bus nối tiếp với bộ lập trình AVR sử dụng giao tiếp SPI. AVR 2560 được
lập trình để chạy hệ thống và ATmega 8 được lập trình để giao tiếp nối tiếp và lập trình.
Cài lại :
Nó có mạch đặt lại với tụ điện, nút và điện trở để đặt lại bộ điều khiển. Một nút nhấn được sử dụng để nhận tín hiệu thấp 4 chu kỳ trên chân đặt lại để đưa bộ điều khiển ở chế độ đặt lại.
Tinh thể:
Nó có một mạch tinh thể với hai tụ điện và một tinh thể 16 Mhz cho các chân xtal 1 và 2 giao tiếp với avr 2560.
I2C:
Nó có các tính năng của I2C (giao tiếp hai dây) với một điện trở kéo lên bên ngoài.
USART:
Nó có chân TXD và RXD để giao tiếp nối tiếp với chỉ báo LED.
Code: M-7006-051 Còn hàng
Code: 7006-031 Còn hàng
Code: M-7006-040 Còn hàng
Code: M-7006-015 Còn hàng
Hotline: 0979 466 469
*************** ** s w R T C ** *************** The swRTC is a software implementation of a Real-Time Clock for Arduino boards and Atmel microcontrollers. It's based on an internal timer and it requires no external hardware. ******************************************************************** REQUIREMENTS * The swRTC library needs Arduino IDE version 002x/1.0.x to work with Atmega48/88/168/328/328P, Atmega640/1280/1281/2560/2561 and Atmega8/8A. * To work with Attiny24/44/84, Attiny25/45/85 and Attiny2313/4313 you need the Tiny Core libraries that you can download from: http://code.google.com/p/arduino-tiny/ (1) * To work with Atmega644/1284 you need the 644P/1284P package that you can download from my website (only for IDE 1.0.x): http://www.leonardomiliani.com/?p=625⟨=en (2) (1) Directions to install and use the Tiny core are provided from its author. (2) Directions to install the mod files can be found inside the package ******************************************************************** INSTALLATION 1) Uncompress the archive and copy the swRTC folder inside the "libraries" folder inside your sketchbooks' folders. If the "libraries" folder doesn't exist, you have to create it. To know where the sketchbooks folder is located, open the Arduino IDE, then select from the menu "File/Preferences" and look at the path in "Sketchbook location". At the end, you should have something similar to this (for Linux): /home/username/sketchbook/libraries/swRTC 2) After that, you have to replace a file of the Tiny core. Make a backup copy in case you need to roll back to the original one. To do this, locate the file named core_build_options.h that is located in your-arduino-IDE-folder/hardware/tiny/cores/tiny/ and rename it to core_build_options.bck (or a name you like). Then, copy the core_build_options.h that comes from the swRTC into the previous path. This will permit to have both the swRTC library and the delay/millis functions from Arduino IDE up and running on Tinyx5/x4/2313 microcontrollers. ******************************************************************** USAGE & METHODS Include the library in your sketch with #includeTo use the library, first you have to create an instance of the library, i.e.: swRTC rtc; Then you have to set up the internal clock with valid time&date. This can be done via software or by the user through a user interface (i.e. LCD display) using the following methods: rtc.setTime(hours, minutes, seconds); rtc.setDate(day, month, year); It is suggested to stop the swRTC before to change the time and/or the date with: rtc.stopRTC(); and then to start it again, after changes are done, with: rtc.startRTC(); The startRTC() method also sets the HW timer according to the clock frequency of your Arduino/Atmel microcontroller, synchronizing the prescaler of the timer to match the correct timings. To get the time&date you can use the following methods: rtc.getSeconds(); rtc.getMinutes(); rtc.getHours(); rtc.getDay(); rtc.getMonth(); rtc.getYear(); Most of the above methods return a byte value, only getYear() returns a signed integer value. If you want to know if a specific year is a leap year, you just have to call: rtc.isLeapYear([year]) to get a boolean value that is true in case of a leap year. The argument "year" is optional: if you don't provide it, the library will check the current year. If you want to know the current week day, just call rtc.getWeekDay() to get a number indicating the current day of the week: from 0 for Sunday to 6 for Saturday The library can work with timestamps too. rtc.getTimestamp([epoch]); rtc.setClockWithTimestamp(timestamp[, epoch]); rtc.weekDay(timestamp); The first function returns the number of seconds since the beginning of a particular date epoch (1900 or 1970). By default, it returns the number of seconds since 1970.0 (1970/01/01), the UNIX epoch, but you can also use the epoch 1900.0 (1900/01/01). The second one sets the internal clock using a timestamp (i.e. a timestamp provided from an NTP server). If specified, epoch will be used. The third function returns a number indicating the weekday of a given timestamp, starting from 0 for Sunday to 6 for Saturday. There are two more functions that are used to correct the difference between the time of the internal clock and the real time. rtc.setDeltaT(value); rtc.getDeltaT(); This is an important feature. Version 0.8 introduces the deltaT correction, a value to correct the deviation between the computed time and the real time, the time that is calculated by the library and the time that is effectively passed on. This function has been introduced to adjust the counter with particular sketches that can use other interrupt functions (i.e. NewSoftSerial library) or systems based on external resonators (like the new Arduino UNO) or interl oscillators, that can be affected by a tolerance of +/-10% over the nominal clock. Allowed values are integer values between -8,400 and 8,400 (max -14.0 or +14.0 minutes/day). The deltaT is the number of tenths of seconds per day to apply to the RTC to correct the deviation from the real time. If your RTC is faster than the real time, try adjusting deltaT with negative values, if your RTC is slower, try a deltaT with a positive values. I.e. 102 means a correction of 10200 ms/day, 10.2 seconds/day. getDeltaT(), on the other hand, returns the current value of the time correction. ** I M P O R T A N T **: the use of floating point values in setDelatT() is now DEPRECATED. Old versions of the library that used floats still continue to work (accepting a value that indicates the number of seconds to add/subtract with a single decimal cipher, in the range -840.0..+840.0) but this does not mean that they will do in the future, so it is reccomended that you upgrade your code and start using the new syntax with integer values. Since release 1.2.0, the library supports the use of the internal Real-Time Counter (RTC) present on several MUCs. This module permits to use the timer 2 in asynchronous mode with an external 32,768 Hz crystal. Setting up the timer 2 with a prescaler of 128, we get 1 overflow every 1 secon so that we can increment the software clock in a more accurate manner. At the moment, the use of deltaT is not supported with the use of the RTC module. To use the RTC module (that is present only in Atmega88/168/328, Atmega8, Atmega344/644/1284 and Atmega1280/256x), just add the following #define before the inclusion of the library: #define USE_INTERNAL_RTC #include "swRTC.h" The library has been modified and now the .cpp file has been removed, while its content has been included in the header file. This does not change the usage of the library ******************************************************************** TIMESTAMPS The library can use timestamps to set the internal clock as it can return a timestamp from its clock. To get a timestamp based on the internal clock, call: rtc.getTimestamp(epoch); "epoch" can be 1900 or 1970, depending if you want a timestamp based on the NTP epoch (1900.0) or the UNIX epoch (1970.0) To set hte clock using a timestamp, call: rtc.setClockWithTimestamp(timestamp, epoch); timestamp is the timestamp to be used, epoch is the epoch (1900 or 1970) of the timestamp. ******************************************************************** SUPPORTED FREQUENCIES, MICROS AND LIMITATIONS The library is interrupt driven and uses an internal timer. ATMEL Atmegax0: Atmega640/1280/1281/2560/2561 The library supports the Atmel microcontrollers Atmega640/1280/1281/2560/2561 - the Atmega1280/2560 are the chips mounted on Arduino MEGA/MEGA2560. The library uses the timer 2. No limitations are on Arduino Timer 0 based functions like delay() or millis(). Limits are on the usage of PWM signals on pins 9 and 10 because the library alters the frequency of the output PWM signals of Timer 2. ATMEL Atmegax8: Atmega48/88/168/328/328 with or without the "P" (PicoPower) core (this does not mean that the specific micro is supported from the Arduino IDE and/or avrdude). The library supports the Atmel microcontrollers Atmega48/88/168/328. The library uses the timer 2. No limitations are on Arduino Timer 0 based functions like delay() or millis(). Limits are on the usage of PWM signals on pins 3 and 11 because the library alters the frequency of the output PWM signals of Timer 2. ATMEL Atmega8/8A This is the micro prior to Atmegax8 series. It has been used on ArduinoNG. The library uses the timer 2. ATMEL Attinyx5: Attiny25/45/85 On this family of MCUs, the library uses the Timer 0. Delay() & millis() still continue to function because the Tiny core sets them to work with Timer 1. ATMEL Attinyx4: Attiny24/44/84 The library uses the Timer 0 because Timer 1 is a 16 bit counter that is a little bit more difficult to set. For this reason, delay() and millis() functions are moved on timer 1 (follow the directions in INSTRUCTION) ATMEL Attiny2313/4313 The library uses the Timer 0 because Timer 1 is a 16 bit counter that is a little bit more difficult to set. For this reason, delay() and millis() functions are moved on timer 1 (follow the directions in INSTRUCTION) ATMEL Atmega644/1284 The library uses the Timer 2, so keep it in mind if you think to use PWM on phisical pins 20 & 21. ATMEL ATmega32U4: The library uses the Timer 3 on this chip. ** I M P O R T A N T ** The library supports, due to rounding issues, only the following speed clocks: - Atmega644/1284, Atmega48/88/168/328, Atmega8, Atmega640/1280/1281/2560/2561: 1, 4, 8, and 16 MHz - Attiny25/45/85, Attiny24/44/84, Attiny2313: 1, 8, and 16 MHz - Atmega32U4: only 16 MHz ******************************************************************** HOW IT WORKS The library sets an internal timer in counter mode to have 1 overflow interrupt exactly every 1 millisecond. Every 1000 ms it increments the internal registers starting from seconds to years to keep the running of the time. To do this, is calculates the correct starting value of the counter and the prescaler of the timer, depending on the system frequency. It also chooses the correct timer because this trick only works with 8-bit counters. On Attiny micros, the library must move the delay/millis functions on timer 1 because these micros have only 2 timers, and the 8-bit timer is timer 0. ******************************************************************** VERSION HISTORY 2018/04/03 - v. 1.2.9: Fixed a bug that lead to wrong timestamps/date conversions 2018/02/13 - v. 1.2.8: Fixed a typo that broke the compatibility with Atmega644 2017/01/27 - v. 1.2.7: added support for ATmega32U4 (thanks to Esteban Torre and piluex) 2016/05/21 - v. 1.2.6: fixed timestamp functions when we are in leap years (I hope definitely..) 2016/02/21 - v. 1.2.5: fixed a bug into the deltaT arithmetics that leads to double count the computation. 2016/02/14 - v. 1.2.4: updated to use with latest Arduino IDE branches (>=1.6.7) 2016/02/14 - v. 1.2.3: fixed the type of the prototype of the function setClockWithTimestamp 2016/01/09 - v. 1.2.2: fixed a bug in the timestamp code that returned a wrong value until february, 29th for leap year 2013/05/31 - v. 1.2.1: changed a couple ov variables from int to byte type. 2013/05/11 - v. 1.2.0: the libray now supports the Real-Time Counter module of some MCUs 2013/05/01 - v. 1.1.2: now getDeltaT return the deltaT with the correct sign 2013/04/01 - v. 1.1.1: fixed a bug in the new setDeltaT method 2013/03/31 - v. 1.1.0: setDeltaT now works with ints - new getDeltaT method 2013/01/14 - v. 1.0.6: fixed a bug in the function used to set the clock given a timestamp 2012/06/04 - v. 1.0.5: introduced new method getWeekDay 2012/05/05 - v. 1.0.3: added support for 4 MHz clock (read below) 2012/04/23 - v. 1.0.2: first fix of a bug in the algorithm of getTimestamp 2012/25/01 - v. 1.0.1: latest versione, distribuited under the terms of the GNU GPL v.3.0 and any later version 2012/01/22 - v. 1.0: first stable & complete release of the library 2012/01/20 - v. 0.8.4: the function now can set the internal clock using a timestamp 2011/11/27 - v. 0.8.3: introduced support for Atmega1284 2011/10/09 - v. 0.8.2: fixed a glitch in deltaT and introduced support for deltaT with tenths od a second 2011/10/09 - v. 0.8.1: new deltaT based on seconds/day 2011/10/08 - v. 0.8: introduced deltaT to correct deviations between computed & real time and Timestamp 2011/10/04 - v. 0.7.1: dropped millis sketch due to the fact that milliseconds is no longer required 2011/10/01 - v. 0.7: corrected some bug; the support for Attinyx4 now works 2011/09/30 - v. 0.6: added supporto for Attiny2313 2011/09/29 - v. 0.5: corrected some bugs 2011/09/28 - v. 0.4: addedd support for Atmega640/1280/1281/2560/2561 2011/09/28 - v. 0.3: added support for Attiny24/44/84 and Atmega644 (Attinyx4 don't work at the moment: FIXED!) 2011/09/28 - v. 0.2: added support for Attiny25/45/85 and Atmega8/8A 2011/09/26 - v. 0.1: first release - only works on Arduino and Atmega328 at 1/8/16 MHz ******************************************************************** LICENCE This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************** AUTHOR Written by Leonardo Miliani ******************************************************************** CONTRIBUTORS lesto - from <www.arduino.cc> forum ******************************************************************** Last document revision: 2018/04/03
*************** ** s w R T C ** *************** The swRTC is a software implementation of a Real-Time Clock for Arduino boards and Atmel microcontrollers. It's based on an internal timer and it requires no external hardware. ******************************************************************** REQUIREMENTS * The swRTC library needs Arduino IDE version 002x/1.0.x to work with Atmega48/88/168/328/328P, Atmega640/1280/1281/2560/2561 and Atmega8/8A. * To work with Attiny24/44/84, Attiny25/45/85 and Attiny2313/4313 you need the Tiny Core libraries that you can download from: http://code.google.com/p/arduino-tiny/ (1) * To work with Atmega644/1284 you need the 644P/1284P package that you can download from my website (only for IDE 1.0.x): http://www.leonardomiliani.com/?p=625⟨=en (2) (1) Directions to install and use the Tiny core are provided from its author. (2) Directions to install the mod files can be found inside the package ******************************************************************** INSTALLATION 1) Uncompress the archive and copy the swRTC folder inside the "libraries" folder inside your sketchbooks' folders. If the "libraries" folder doesn't exist, you have to create it. To know where the sketchbooks folder is located, open the Arduino IDE, then select from the menu "File/Preferences" and look at the path in "Sketchbook location". At the end, you should have something similar to this (for Linux): /home/username/sketchbook/libraries/swRTC 2) After that, you have to replace a file of the Tiny core. Make a backup copy in case you need to roll back to the original one. To do this, locate the file named core_build_options.h that is located in your-arduino-IDE-folder/hardware/tiny/cores/tiny/ and rename it to core_build_options.bck (or a name you like). Then, copy the core_build_options.h that comes from the swRTC into the previous path. This will permit to have both the swRTC library and the delay/millis functions from Arduino IDE up and running on Tinyx5/x4/2313 microcontrollers. ******************************************************************** USAGE & METHODS Include the library in your sketch with #includeTo use the library, first you have to create an instance of the library, i.e.: swRTC rtc; Then you have to set up the internal clock with valid time&date. This can be done via software or by the user through a user interface (i.e. LCD display) using the following methods: rtc.setTime(hours, minutes, seconds); rtc.setDate(day, month, year); It is suggested to stop the swRTC before to change the time and/or the date with: rtc.stopRTC(); and then to start it again, after changes are done, with: rtc.startRTC(); The startRTC() method also sets the HW timer according to the clock frequency of your Arduino/Atmel microcontroller, synchronizing the prescaler of the timer to match the correct timings. To get the time&date you can use the following methods: rtc.getSeconds(); rtc.getMinutes(); rtc.getHours(); rtc.getDay(); rtc.getMonth(); rtc.getYear(); Most of the above methods return a byte value, only getYear() returns a signed integer value. If you want to know if a specific year is a leap year, you just have to call: rtc.isLeapYear([year]) to get a boolean value that is true in case of a leap year. The argument "year" is optional: if you don't provide it, the library will check the current year. If you want to know the current week day, just call rtc.getWeekDay() to get a number indicating the current day of the week: from 0 for Sunday to 6 for Saturday The library can work with timestamps too. rtc.getTimestamp([epoch]); rtc.setClockWithTimestamp(timestamp[, epoch]); rtc.weekDay(timestamp); The first function returns the number of seconds since the beginning of a particular date epoch (1900 or 1970). By default, it returns the number of seconds since 1970.0 (1970/01/01), the UNIX epoch, but you can also use the epoch 1900.0 (1900/01/01). The second one sets the internal clock using a timestamp (i.e. a timestamp provided from an NTP server). If specified, epoch will be used. The third function returns a number indicating the weekday of a given timestamp, starting from 0 for Sunday to 6 for Saturday. There are two more functions that are used to correct the difference between the time of the internal clock and the real time. rtc.setDeltaT(value); rtc.getDeltaT(); This is an important feature. Version 0.8 introduces the deltaT correction, a value to correct the deviation between the computed time and the real time, the time that is calculated by the library and the time that is effectively passed on. This function has been introduced to adjust the counter with particular sketches that can use other interrupt functions (i.e. NewSoftSerial library) or systems based on external resonators (like the new Arduino UNO) or interl oscillators, that can be affected by a tolerance of +/-10% over the nominal clock. Allowed values are integer values between -8,400 and 8,400 (max -14.0 or +14.0 minutes/day). The deltaT is the number of tenths of seconds per day to apply to the RTC to correct the deviation from the real time. If your RTC is faster than the real time, try adjusting deltaT with negative values, if your RTC is slower, try a deltaT with a positive values. I.e. 102 means a correction of 10200 ms/day, 10.2 seconds/day. getDeltaT(), on the other hand, returns the current value of the time correction. ** I M P O R T A N T **: the use of floating point values in setDelatT() is now DEPRECATED. Old versions of the library that used floats still continue to work (accepting a value that indicates the number of seconds to add/subtract with a single decimal cipher, in the range -840.0..+840.0) but this does not mean that they will do in the future, so it is reccomended that you upgrade your code and start using the new syntax with integer values. Since release 1.2.0, the library supports the use of the internal Real-Time Counter (RTC) present on several MUCs. This module permits to use the timer 2 in asynchronous mode with an external 32,768 Hz crystal. Setting up the timer 2 with a prescaler of 128, we get 1 overflow every 1 secon so that we can increment the software clock in a more accurate manner. At the moment, the use of deltaT is not supported with the use of the RTC module. To use the RTC module (that is present only in Atmega88/168/328, Atmega8, Atmega344/644/1284 and Atmega1280/256x), just add the following #define before the inclusion of the library: #define USE_INTERNAL_RTC #include "swRTC.h" The library has been modified and now the .cpp file has been removed, while its content has been included in the header file. This does not change the usage of the library ******************************************************************** TIMESTAMPS The library can use timestamps to set the internal clock as it can return a timestamp from its clock. To get a timestamp based on the internal clock, call: rtc.getTimestamp(epoch); "epoch" can be 1900 or 1970, depending if you want a timestamp based on the NTP epoch (1900.0) or the UNIX epoch (1970.0) To set hte clock using a timestamp, call: rtc.setClockWithTimestamp(timestamp, epoch); timestamp is the timestamp to be used, epoch is the epoch (1900 or 1970) of the timestamp. ******************************************************************** SUPPORTED FREQUENCIES, MICROS AND LIMITATIONS The library is interrupt driven and uses an internal timer. ATMEL Atmegax0: Atmega640/1280/1281/2560/2561 The library supports the Atmel microcontrollers Atmega640/1280/1281/2560/2561 - the Atmega1280/2560 are the chips mounted on Arduino MEGA/MEGA2560. The library uses the timer 2. No limitations are on Arduino Timer 0 based functions like delay() or millis(). Limits are on the usage of PWM signals on pins 9 and 10 because the library alters the frequency of the output PWM signals of Timer 2. ATMEL Atmegax8: Atmega48/88/168/328/328 with or without the "P" (PicoPower) core (this does not mean that the specific micro is supported from the Arduino IDE and/or avrdude). The library supports the Atmel microcontrollers Atmega48/88/168/328. The library uses the timer 2. No limitations are on Arduino Timer 0 based functions like delay() or millis(). Limits are on the usage of PWM signals on pins 3 and 11 because the library alters the frequency of the output PWM signals of Timer 2. ATMEL Atmega8/8A This is the micro prior to Atmegax8 series. It has been used on ArduinoNG. The library uses the timer 2. ATMEL Attinyx5: Attiny25/45/85 On this family of MCUs, the library uses the Timer 0. Delay() & millis() still continue to function because the Tiny core sets them to work with Timer 1. ATMEL Attinyx4: Attiny24/44/84 The library uses the Timer 0 because Timer 1 is a 16 bit counter that is a little bit more difficult to set. For this reason, delay() and millis() functions are moved on timer 1 (follow the directions in INSTRUCTION) ATMEL Attiny2313/4313 The library uses the Timer 0 because Timer 1 is a 16 bit counter that is a little bit more difficult to set. For this reason, delay() and millis() functions are moved on timer 1 (follow the directions in INSTRUCTION) ATMEL Atmega644/1284 The library uses the Timer 2, so keep it in mind if you think to use PWM on phisical pins 20 & 21. ATMEL ATmega32U4: The library uses the Timer 3 on this chip. ** I M P O R T A N T ** The library supports, due to rounding issues, only the following speed clocks: - Atmega644/1284, Atmega48/88/168/328, Atmega8, Atmega640/1280/1281/2560/2561: 1, 4, 8, and 16 MHz - Attiny25/45/85, Attiny24/44/84, Attiny2313: 1, 8, and 16 MHz - Atmega32U4: only 16 MHz ******************************************************************** HOW IT WORKS The library sets an internal timer in counter mode to have 1 overflow interrupt exactly every 1 millisecond. Every 1000 ms it increments the internal registers starting from seconds to years to keep the running of the time. To do this, is calculates the correct starting value of the counter and the prescaler of the timer, depending on the system frequency. It also chooses the correct timer because this trick only works with 8-bit counters. On Attiny micros, the library must move the delay/millis functions on timer 1 because these micros have only 2 timers, and the 8-bit timer is timer 0. ******************************************************************** VERSION HISTORY 2018/04/03 - v. 1.2.9: Fixed a bug that lead to wrong timestamps/date conversions 2018/02/13 - v. 1.2.8: Fixed a typo that broke the compatibility with Atmega644 2017/01/27 - v. 1.2.7: added support for ATmega32U4 (thanks to Esteban Torre and piluex) 2016/05/21 - v. 1.2.6: fixed timestamp functions when we are in leap years (I hope definitely..) 2016/02/21 - v. 1.2.5: fixed a bug into the deltaT arithmetics that leads to double count the computation. 2016/02/14 - v. 1.2.4: updated to use with latest Arduino IDE branches (>=1.6.7) 2016/02/14 - v. 1.2.3: fixed the type of the prototype of the function setClockWithTimestamp 2016/01/09 - v. 1.2.2: fixed a bug in the timestamp code that returned a wrong value until february, 29th for leap year 2013/05/31 - v. 1.2.1: changed a couple ov variables from int to byte type. 2013/05/11 - v. 1.2.0: the libray now supports the Real-Time Counter module of some MCUs 2013/05/01 - v. 1.1.2: now getDeltaT return the deltaT with the correct sign 2013/04/01 - v. 1.1.1: fixed a bug in the new setDeltaT method 2013/03/31 - v. 1.1.0: setDeltaT now works with ints - new getDeltaT method 2013/01/14 - v. 1.0.6: fixed a bug in the function used to set the clock given a timestamp 2012/06/04 - v. 1.0.5: introduced new method getWeekDay 2012/05/05 - v. 1.0.3: added support for 4 MHz clock (read below) 2012/04/23 - v. 1.0.2: first fix of a bug in the algorithm of getTimestamp 2012/25/01 - v. 1.0.1: latest versione, distribuited under the terms of the GNU GPL v.3.0 and any later version 2012/01/22 - v. 1.0: first stable & complete release of the library 2012/01/20 - v. 0.8.4: the function now can set the internal clock using a timestamp 2011/11/27 - v. 0.8.3: introduced support for Atmega1284 2011/10/09 - v. 0.8.2: fixed a glitch in deltaT and introduced support for deltaT with tenths od a second 2011/10/09 - v. 0.8.1: new deltaT based on seconds/day 2011/10/08 - v. 0.8: introduced deltaT to correct deviations between computed & real time and Timestamp 2011/10/04 - v. 0.7.1: dropped millis sketch due to the fact that milliseconds is no longer required 2011/10/01 - v. 0.7: corrected some bug; the support for Attinyx4 now works 2011/09/30 - v. 0.6: added supporto for Attiny2313 2011/09/29 - v. 0.5: corrected some bugs 2011/09/28 - v. 0.4: addedd support for Atmega640/1280/1281/2560/2561 2011/09/28 - v. 0.3: added support for Attiny24/44/84 and Atmega644 (Attinyx4 don't work at the moment: FIXED!) 2011/09/28 - v. 0.2: added support for Attiny25/45/85 and Atmega8/8A 2011/09/26 - v. 0.1: first release - only works on Arduino and Atmega328 at 1/8/16 MHz ******************************************************************** LICENCE This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************** AUTHOR Written by Leonardo Miliani ******************************************************************** CONTRIBUTORS lesto - from <www.arduino.cc> forum ******************************************************************** Last document revision: 2018/04/03
Thông số kỹ thuật
- Điện áp hoạt động: 5VDC
- Chuẩn giao tiếp: Digital I2C
- Các chân giao tiếp: SDA (Serial Data) / SCL (Serial Clock)
- Điện áp giao tiếp: TTL 3.3/5VDC
- IC thời gian thực: DS1307, datasheet.
- Tích hợp pin CR1220 lưu giữ thời gian khi không cấp nguồn.
- Sử dụng trực tiếp an toàn với các board mạch giao tiếp ở cả hai mức điện áp 3.3VDC và 5VDC như: Arduino, Raspberry Pi, Jetson Nano, Micro:bit,….
- Bổ sung thêm các thiết kế ổn định, chống nhiễu.
- Chuẩn kết nối: Conector XH2.54 4Pins
- Thuộc hệ sinh thái phần cứng Robotics MakerEdu, tương thích tốt nhất khi sử dụng với các mạch điều khiển trung tâm của MakerEdu và MakerEdu Shield.
Các chân tín hiệu
MKE-M09 | Ghi chú |
GND | Chân cấp nguồn âm 0VDC |
5V | Chân cấp nguồn dương 5VDC |
SDA | Chân tín hiệu Digital Data |
SCL | Chân tín hiệu Digital Clock |
Hướng dẫn sử dụng với phần mềm Arduino và Vietduino
Phần cứng cần chuẩn bị:
- Mạch thời gian thực MKE-M09 RTC DS1307 real time clock module
- Mạch Vietduino Uno (Arduino Uno Compatible)
- Mạch MakerEdu Shield for Vietduino
- Cáp USB để nạp chương trình và cấp nguồn
Lưu ý:
Nếu không có mạch Vietduino Uno bạn vẫn có thể sử dụng mạch Vietduino Mega 2560, Arduino Uno, Arduino Mega 2560 hoặc các mạch phần cứng có cấu trúc các chân GPIO tương tự. |
Phần mềm cần chuẩn bị:
- Tải và cài đặt phần mềm Arduino theo hướng dẫn.
- Tải và cài đặt Driver, cấu hình cho mạch Vietduino Uno trên phần mềm Arduino theo hướng dẫn.
- Tải và cài đặt bộ thư viện DS1307 theo hướng dẫn.
Chương trình mẫu:
// Thêm bộ thư viện DS1307. // Add the DS1307 library. #include “RTClib.h” // Khởi tạo “RTC_DS1307”. // Initialize “RTC_DS1307”. RTC_DS1307 rtc; // Lưu tên gọi của Thứ trong Tuần. // Save the name of the Day of the Week. char daysOfTheWeek[7][12] = { “Sun”, // Chủ Nhật. “Mon”, // Thứ 2. “Tue”, // Thứ 3. “Wed”, // Thứ 4. “Thu”, // Thứ 5. “Fri”, // Thứ 6. “Sat” // Thứ 7. }; void setup() { // Khởi động kết nối Serial UART ở tốc độ 9600 để truyền dữ liệu lên máy tính. // Start the Serial UART connection at 9600 to transfer data to the computer. Serial.begin(9600); // Khởi động thư viện. // Start up the library. rtc.begin(); } void loop() { // Lấy toàn bộ dữ liệu thời gian hiện tại. // Get all current time data. DateTime now = rtc.now(); // Truyền giá trị lên máy tính. // Transmit the value to the computer. Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(“, “); // Serial.print(now.day(), DEC); Serial.print(“/”); Serial.print(now.month(), DEC); Serial.print(“/”); Serial.print(now.year(), DEC); Serial.print(” – “); // Serial.print(now.hour(), DEC); Serial.print(“:”); Serial.print(now.minute(), DEC); Serial.print(“:”); Serial.print(now.second(), DEC); Serial.println(); // Đợi 1s để cập nhập tiếp. // Wait 1s to update again. delay(1000); }
Sơ đồ kết nối:
MakerEdu Shield for Vietduino | Arduino/Vietduino | Devices |
Port I2C | SDA / SCL | Mạch Thời Gian Thực MKE-M09 RTC DS1307 Real Time Clock Module |
Các bước tiến hành:
- Kết nối mạch Vietduino Uno với mạch MakerEDU Shield for Vietduino.
- Kết nối Mạch Thời Gian Thực MKE-M09 với mạch MakerEDU Shied for Vietduino qua Port I2C.
- Kết nối mạch Vietduino Uno với máy tính bằng cáp USB và cấu hình mạch trên phần mềm Arduino (Board / Port).
- Nạp chương trình mẫu vào mạch Vietduino Uno.
- Nhấn nút Reset trên mạch Vietduino Uno hoặc mạch MakerEDU Shield for Vietduino để bắt đầu chạy chương trình.
Kết quả:
…pic
Keywords searched by users: arduino mega 2560 rtc
Categories: Sưu tầm 22 Arduino Mega 2560 Rtc
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/