Saya mencoba membuat pintu kecil yang membuka dan menutup setiap 12 jam. Saya bertanya-tanya apakah saya bisa membuat skrip pengulangan kecil dengan jeda () selama 12 jam, jeda (43 200 000 000); Saya tebak? Namun, saya tidak tahu apakah itu mungkin dan / atau direkomendasikan. Beberapa umpan balik / alternatif (jika perlu) akan menyenangkan :)
arduino-uno
timers
Fred Pannekoek
sumber
sumber
Jawaban:
Metode jam waktu nyata adalah cara yang paling akurat tetapi sebaliknya digunakan
millis
Ini akan menunda hingga sekitar. 4294967295ms (2 ^ 32-1) atau 49 hari, setelah itu timer akan mengejar nilai
startMillis
sumber
delay(LONG_DELAY_MS)
? The pelaksanaan Arduino menerima rindu unsigned. Saya juga tidak sepenuhnya yakin kode Anda berfungsi dengan benar ketikamillis()
membungkusnya, dan lebih kecil daristartMillis
delay()
memiliki kegunaannya, tetapi untuk penundaan yang lama itu tidak baik. Ini hanya memberitahu mikrokontroler untuk tidak melakukan apa pun untukx
siklus jam. Selama waktu itu, Arduino Anda tidak dapat melakukan hal lain.Taruhan terbaik Anda adalah menggunakan sesuatu yang disebut Real Time Clock (RTC). Chip ini khusus dibuat untuk melacak waktu, dan Anda dapat menghubungkannya ke Arduino Anda dengan mudah. Inilah contoh bagaimana Anda bisa melakukan itu.
sumber
Anda dapat menggunakan pengawas interupsi dan membuat MCU Anda tidur sambil menunggu dan menghemat daya.
Tetapi perhatikan bahwa Anda hanya akan menghemat daya jika papan Anda juga menyimpannya. Itu berarti Anda harus memiliki regulator tegangan diam rendah daripada regulator biasa yang melengkapi papan Arduino yang paling umum, seperti Uno. Kalau tidak, tidak masalah apakah MCU Anda menghemat energi jika papan Anda tidak.
Berikut kodenya (belum diuji):
Kode yang saya salin dari halaman ini: Arduino Berdaya Rendah Menggunakan Watchdog Timer .
sumber
Apakah Anda memiliki sleep (unsigned int seconds) yang tersedia?
Jika tidak, ini akan memungkinkan Anda untuk menunda () waktu yang sangat lama:
sumber
Ini akan berhasil:
sumber
Saya hanya menggunakan untuk loop ketika saya tidak ingin melakukan hal-hal di antaranya:
sumber
delay(43200000)
.