Motif
Untuk memulainya, setiap orang hidup dalam waktu yang, sayangnya, tidak dapat dihentikan. Dan karena kita hidup di dunia ini, maka mari kita catat waktu dan jangan lewatkan satu menit, buang waktu saja. Untuk ini, saya membuat perangkat luar biasa ini, yang disebut arloji .
Ayo mulai!
Matahari terbit di jalan, saya menggambar papan sirkuit dan menggaruknya di mesin fotokopi untuk mencetak papan sirkuit.
Selanjutnya, mereka yang tahu bagaimana papan sirkuit dibuat akan mengerti bahwa saya mentransfer gambar dengan besi ke textolite, tergores, kaleng, dll, dan mereka yang tidak tahu - baca di Internet tentang pembuatan papan sirkuit dengan metode LUT - (Teknologi menyetrika dengan laser).Saya lupa untuk menembak hasilnya, tetapi saya pikir kualitasnya akan terlihat di papan selesai: Anda
dapat melihat tempat-tempat yang tidak muncul, tetapi tidak ada hal buruk yang terjadi, hanya TPA yang tertinggal.Selanjutnya, perlu untuk menyolder komponen, yang tidak akan saya bahas secara khusus, tinggalkan daftar saja:- AtTiny2313 - mikrokontroler 8-bit
- ds1307 - chip penghitung dengan akurasi yang baik
- jam kuarsa pada 32,768 kHz
- 2 x 10K resistor
- 7 resistor per 10 ohm
- 1 x 5,2 kΩ resistor
- 4 resistor per 1 kOhm
- 4 transistor KT315 (saudara modern mereka)
- Bel 5 volt
- 2 tombol jam (pemasangan sudut)
- 4 indikator (10011-BSR) anoda umum
- 47 microfarad tantalum
- dan soket daya dan dudukan sudut (diameter lubang - 5.1mm, diameter kontak tengah - 1.5mm)
Dan biarkan panjang daftar ini tidak mengganggu Anda, karena kami telah merakit perangkat selama bertahun-tahun, dan itu harus dipasang pada tingkat yang tepat!Siapa yang ingin melihat papan dari sisi lain, di sini ada foto:
Programnya
Seperti semua perangkat, arloji membutuhkan program. Dalam hal ini, program ini ditulis dalam BASIC dalam BASCOM AVR. Bahasa ini sangat nyaman untuk pemrograman, karena kodenya jelas, efisien dan tidak memakan banyak ruang pada mikrokontroler. Saya tidak mulai menulis program dari awal, tetapi saya mengambil kode sumber dari satu artikel di situs dengan besi solder. Mereka yang tertarik akan menemukan, saya hanya meninggalkan kode yang saya selesaikan di sini:$regfile = "attiny2313.dat"
$crystal = 8000000
Dim Count As Byte
Dim Number(4) As Integer
Dim Pointmem As Byte
Dim Point As Bit
Dim Mine As Byte
Dim Hour As Byte
Dim Seco As Byte
Config Porta.1 = Output
Porta.1 = 1
Waitms 10
Porta.1 = 0
Waitms 70
Porta.1 = 1
Waitms 10
Porta.1 = 0
Config Portb = Output
Config Porta.0 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.6 = Output
Config Sda = Portd.5
Config Scl = Portd.4
Config Pind.0 = Input
Portd.0 = 1
Config Pind.1 = Input
Portd.1 = 1
Config Timer1 = Timer , Prescale = 64
On Timer1 Awake:
Config Timer0 = Timer , Prescale = 64
On Ovf0 Refresh
Dig1 Alias Porta.0 : Dig2 Alias Portd.2 : Dig3 Alias Portd.3 : Dig4 Alias Portd.6
Enable Interrupts
Enable Ovf0
Enable Timer1
Start Timer1
Hour = 0
Mine = 0
If Pind.1 = 0 And Pind.0 = 0 Then
Porta.1 = 1
Waitms 100
Porta.1 = 0
Hour = 0
Mine = 0
Seco = 1
Seco = Makebcd(seco)
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cwbyte Seco
I2cstop
Mine = Makebcd(mine)
I2cstart
I2cwbyte &HD0
I2cwbyte 1
I2cwbyte Mine
I2cstop
Hour = Makebcd(hour)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte Hour
I2cstop
Waitms 1000
Porta.1 = 1
Waitms 10
Porta.1 = 0
End If
Do
I2cstart
I2cwbyte &HD0
I2cwbyte &H00
I2cstart
I2cwbyte &HD1
I2crbyte Seco , Ack
I2crbyte Mine , Ack
I2crbyte Hour , Nack
I2cstop
Seco = Makedec(seco)
Mine = Makedec(mine)
Hour = Makedec(hour)
If Seco = 80 Then
Seco = 10
Seco = Makebcd(seco)
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cwbyte Seco
I2cstop
End If
If Hour > 9 Then
Number(1) = Hour / 10
Number(1) = Abs(number(1))
Else
Number(1) = 20
End If
Number(2) = Hour Mod 10
If Mine > 9 Then
Number(3) = Mine / 10
Number(3) = Abs(number(3))
Else
Number(3) = 0
End If
Number(4) = Mine Mod 10
If Pind.1 = 0 Then
Porta.1 = 1
Waitms 10
Porta.1 = 0
If Mine = 59 Then
Mine = 0
Else
Incr Mine
End If
Mine = Makebcd(mine)
I2cstart
I2cwbyte &HD0
I2cwbyte 1
I2cwbyte Mine
I2cstop
Else
If Pind.0 = 0 Then
Porta.1 = 1
Waitms 10
Porta.1 = 0
If Hour = 23 Then
Hour = 0
Else
Incr Hour
End If
Hour = Makebcd(hour)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte Hour
I2cstop
End If
End If
Waitms 250
Loop
Awake:
If Point = 1 Then
Porta.1 = 1
Waitus 10
Porta.1 = 0
End If
Toggle Point
Return
Refresh:
Reset Dig1 : Reset Dig2 : Reset Dig3 : Reset Dig4
Incr Count : If Count > 4 Then Count = 1
If Count = 2 And Point = 1 Then
Pointmem = Number(2) + 10
Portb = Lookup(pointmem , Digits)
Else
Portb = Lookup(number(count) , Digits)
End If
Select Case Count
Case 1 : Set Dig1
Case 2 : Set Dig2
Case 3 : Set Dig3
Case 4 : Set Dig4
End Select
Return
Digits:
Data &B00101000 , &B01111011 , &B00110100 , &B00110010 , &B01100011
Data &B10100010 , &B10100000 , &B00101011 , &B00100000 , &B00100010
Data &B00001000 , &B01011011 , &B00010100 , &B00010010 , &B01000011
Data &B10000010 , &B10000000 , &B00001011 , &B00000000 , &B00000010
Data &B11111111
Kami mem-flash hampir 2 kilobyte kode dalam mikron dan mengamati bagaimana perangkat yang baru mulai hidup telah mulai melayani orang tersebut.Sejujurnya, saya merasakan kesenangan luar biasa dalam menciptakan sesuatu yang jauh dari mudah dipahami oleh banyak orang)Sepertinya perangkat tanpa kasing, saya akan mengerjakan kasing setelah menulis artikel ini:
Jadi, arloji sudah siap, tetapi bagaimana cara kerjanya? Ini saya tunjukkan di paruh pertama video ini (saya tidak meminta berlangganan atau apa pun, hanya materi)Kesimpulan
Jadi, dalam 2 hari saya membuat perangkat yang akan menunjukkan kepada saya berapa banyak yang tersisa untuk melakukan satu hal dan beralih ke hal lain ketika tiba saatnya, atau memulai sesuatu yang penting.Yah, itu saja, terima kasih kepada mereka yang telah membaca sampai akhir, sukses dalam proyek Anda, dan seperti yang mereka katakan: "cod to you, 47, dan sampai jumpa di frekuensi lain! QRZ .. "