Isi kandungan:

Pengawal Serial Berasaskan Arduino: 6 Langkah
Pengawal Serial Berasaskan Arduino: 6 Langkah

Video: Pengawal Serial Berasaskan Arduino: 6 Langkah

Video: Pengawal Serial Berasaskan Arduino: 6 Langkah
Video: Simulasi Arduino Input dan Output Analog (Serial Monitor) 2024, Julai
Anonim
Pengawal Serial Berasaskan Arduino
Pengawal Serial Berasaskan Arduino
Pengawal Serial Berasaskan Arduino
Pengawal Serial Berasaskan Arduino

Ini adalah pengawal bersiri sederhana untuk pelbagai servos berdasarkan Arduino. (pertama saya juga boleh diajar:))

Sebilangan besar pekerjaan ini berasal dari mendapatkan perisian untuk berbicara dengan arduino dan membuat protokol agar data dapat diserahkan. Bagi aspek perkakasan, semua yang saya gunakan adalah dua servo (servo standard Parallax di sini.) Sparkfun Arduino ProtoShield dan Arduino Duemilanove dengan ATMEGA328, tetapi kebanyakan bahagian ini boleh diganti dengan item serupa. Saya menganggap projek ini sebagai sebahagian daripada sistem RC, tetapi menyiapkan komunikasi memerlukan banyak masa. Sekiranya ada yang mempunyai penambahbaikan, idea, atau pepijat, sila beri komen. EDIT: Saya menulis ini beberapa ketika yang lalu, baru sahaja dapat menerbitkannya.

Langkah 1: Perkara yang Mungkin Anda Perlu …

Perkara yang Mungkin Anda Perlu …
Perkara yang Mungkin Anda Perlu …
Perkara yang Mungkin Anda Perlu …
Perkara yang Mungkin Anda Perlu …

Beberapa perkara yang anda perlukan untuk membina ini. 1. Papan Arduino (anda pilih) 2. dua (atau satu) servos 3. kabel jumper 4. Visual Studio 2008 Express - pautan (pilihan) 5. Arduino IDE - pautan Maaf peminat Linux dan Apple, program saya hanya berjalan buat masa ini, tetapi anda masih boleh menghantar arahan bersiri secara manual ke arduino tanpa mengubah kodnya.

Langkah 2: Sambungkan Perkakasan

Sambungkan Perkakasan
Sambungkan Perkakasan

Tidak ada yang sangat rumit untuk langkah ini. Hubungkan satu servo ke pin 9 dan yang lain ke pin 10.

Langkah 3: Program Arduino

Atur cara Arduino
Atur cara Arduino

sekarang anda boleh memuat naik lakaran ke arduino.

Berikut adalah pecahan ringkas kod: #masuk servo myservo; // buat objek servo untuk mengawal servo servo myservo1; int incomingByte = 0, datacount = 0, counter = 0, siap = 0; // untuk data char data siri yang masuk [10]; const char mengesahkan [8] = "ma11hew"; perintah char [3]; batal persediaan () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // membuka port bersiri, menetapkan kadar data Serial.println ("Hi Arduino Here!"); // ditambahkan untuk membantu mengenal pasti port bersiri Ini hanya menyediakan port dan servo bersiri. int i; untuk (i = 0; i <180; i ++) {myservo.write (i); kelewatan (15); } myservo.write (5); untuk (i = 0; i <180; i ++) {myservo1.write (i); kelewatan (15); } myservo1.write (5); } Pergerakan sapuan sederhana untuk mengesahkan servo berfungsi dengan betul. gelung kekosongan () {siap = 0; pembilang = 0; sementara (1 == 1) {if (Serial.read ()! = sahkan [kaunter]) {rehat; } jika (kaunter == 6) {kelewatan (20); arahan [0] = Serial.read (); arahan [1] = Serial.read (); // if (Serial.read () == ((perintah [1] * 12)% 8)) // {siap = 1; //} Serial.println ("perintah tersimpan"); } kaunter ++; kelewatan (2); } ini memeriksa penyangga bersiri untuk rentetan kebenaran yang betul kemudian mengambil dua bait untuk perintah. yang dinyatakan jika pernyataan itu memungkinkan untuk membuat checksum sementara tetapi akan menjadikan antaramuka manual menjadi sukar. siap boleh diatur ke 0 sehingga perintah tidak akan dihuraikan seperti dalam kes data yang rosak. // cari melalui perintah jika (siap == 1) {if (perintah [0] == 'T') {perintah [0] = 0; Serial.print ("kawalan pendikit pada pin 9 hingga:"); Serial.println (peta (arahan [1], 32, 126, 2, 180), DEC); myservo.write (peta (arahan [1], 32, 126, 2, 180)); } if (perintah [0] == 'S') {perintah [0] = 0; Serial.print ("kawalan pendikit pada pin 10 hingga:"); Serial.println (peta (arahan [1], 32, 126, 2, 180), DEC); myservo1.write (peta (arahan [1], 32, 126, 2, 180)); }}} selebihnya kod adalah mencari perintah untuk mendapatkan perintah yang sah (T atau S.) jika sesuai, ia memerlukan bait seterusnya dan mengirimkannya ke servo. lebih banyak lagi di peta (arahan [1], 32, 126, 2, 180) kemudian … kod di sini boleh dikembangkan untuk apa sahaja yang anda perlukan (mis. lampu, motor, IR, dll.) kod ini harus berfungsi dengan baik tanpa pengubahsuaian.

Langkah 4: Pasang Perisian

Pasang Perisian
Pasang Perisian

Saya mempunyai dua cara untuk memasang ini … pemasang nsis: Muat turun pemasang pengekstrak sendiri di bawah dan jalankan. Anda akan mempunyai pilihan untuk memasang sumber semasa pemasangan. pakej binari pemasang memasang inti c ++ dll sehingga dapat dijalankan di komputer tanpa visual c ++ sudah dipasang. Setelah pemasang selesai anda boleh menjalankannya dari desktop atau menu mula. cara zip (tidak disahkan): Muat turun dan jalankan, ia mesti berfungsi. mungkin. (Arkib zip mempunyai struktur folder yang sama yang dibuat oleh pemasang, tanpa sumber. Saya tidak mempunyai mesin tanpa studio visual untuk mengujinya sehingga mungkin tidak berfungsi.)

Langkah 5: Gunakan Program Antara Muka

Gunakan Program Antara Muka
Gunakan Program Antara Muka
Gunakan Program Antara Muka
Gunakan Program Antara Muka

Untuk menggunakan program terlebih dahulu pilih kadar baud yang ditentukan dalam lakaran arduino. Lakaran sketsa yang tidak diubah menjadi 38400 baud tetapi boleh diubah untuk memenuhi keperluan anda untuk perkara seperti pautan radio yang lebih perlahan. nota: kadar baud lebih tinggi daripada 38400 belum stabil, saya rasa ini kerana uart mengisi sebelum data dapat diproses. Seterusnya, pilih port COM yang akan digunakan. program lalai ke COM4 pastikan untuk mengubahnya atau program akan rosak. Akhirnya, klik buka. Sekiranya semuanya berjalan lancar, program akan membuka port bersiri yang dipilih pada kadar baud yang dipilih. Sekiranya tidak, program itu mungkin akan terhempas dengan pengecualian yang tidak ditangani. pastikan port betul dan cuba lagi. Gunakan kotak teks untuk menyerahkan arahan langsung ke arduino. "Peta (perintah [1], 32, 126, 2, 180)" skala semua 94 perintah yang mungkin, * spasi * hingga ~, dapat dibaca oleh arduino di ASCII hingga 2 hingga 180 untuk servo. apa-apa bait kurang daripada ASCII 32 (ruang) atau di atas 126 (~) lalai ke 63 (?) Bar trek menyediakan antara muka eaiser untuk arahan langsung. setiap langkah menghantar arahan bersiri ke arduino secara bertahap.

Langkah 6: Kreatif

Dapatkan Kreatif!
Dapatkan Kreatif!
Dapatkan Kreatif!
Dapatkan Kreatif!

Fikirkan perkara yang menarik untuk dibuat dengan ini. Beberapa idea: 1. Pendikit jarak jauh untuk kereta. 2. Pemasangan kamera 3D 3. rover bawah air Bersenang-senang !!

Disyorkan: