Lelucon Tahun Baru dari proyek Arduino Mega Server

gambar

Pengembangan proyek Arduino Mega Server sedang berjalan lancar dan dalam proses bekerja ada hambatan tak terduga yang harus diatasi secara heroik. Saya akan memberi tahu Anda beberapa di antaranya hari ini, dan mungkin ini akan menghemat sedikit waktu dan saraf Anda.

Lelucon pertama: dan wanita tua itu pengecut atau lihat akarnya!


Saya sedang bersiap untuk merilis versi 0.14 sistem untuk Arduino Due dan akan menyesuaikan versi ini untuk bekerja dengan Power Monitor. Bagi mereka yang tidak tahu, Power Monitor adalah sistem perangkat lunak dan perangkat keras untuk memantau catu daya, yang memungkinkan Anda untuk mengontrol tingkat tegangan listrik dan konsumsi daya di lebih dari 14 saluran dan memiliki kontrol bawaan terhadap frekuensi arus listrik utama dan bahkan osiloskop jaringan, yang menampilkan formulir secara langsung di halaman web arus dan tegangan secara real time.

gambar

Saya memasang sirkuit, memeriksa semuanya, menjalankannya - tidak bekerja. Yah, itu terjadi, itu biasa. Saya mulai memeriksa kode - semuanya beres, memeriksa perangkat keras - semuanya OK, memeriksa koneksi - semuanya juga tertata. Dalam pemikiran yang mendalam, saya duduk di kursi dan mulai memikirkan di mana ada kesalahan. Setelah banyak berpikir, saya sampai pada kesimpulan bahwa semuanya dilakukan dengan benar. Mengapa itu tidak berhasil? Tidak ada keajaiban, jadi saya memeriksa semuanya untuk kedua kalinya.
gambar

Kode, perangkat keras, koneksi. Segalanya tampak benar. Saya berpikir banyak lagi. Saya akan menyekop kode lagi, dengan kecanduan - hasilnya nol. Karena semua metode rawat jalan telah habis, saya memindahkan pasien ke departemen bedah dan mengambil tester dan besi solder. Pasien melirik saya dengan hati-hati, tetapi dia tidak bisa berkata apa-apa dan tidak dapat memberi tahu saya apa-apa. Setelah beberapa manipulasi, ternyata Power Monitor tidak menyala sama sekali! Bagaimana bisa begitu? Konduktor catu daya terlihat jelas, tetapi tidak ada daya!

Dan kemudian saya sadar bahwa, ternyata, ada papan prototipe seperti yang
gambar
biasanya saya temui dan yang biasa saya anggap sebagai satu-satunya yang mungkin, tetapi ada (temukan sepuluh perbedaan, seperti yang mereka katakan).
gambar
dan inilah papan yang saya temui kali ini. Tampaknya sepele dan hanya diberikan ketika Anda sudah mengetahuinya, dan ketika Anda tidak tahu, Anda dapat mematahkan seluruh kepala Anda sampai Anda tahu mengapa perangkat Anda tidak berfungsi.

Masih ada titik psikologis - jika Anda menganggap bannya utuh, maka Anda tidak memperhatikan lintasan dalam penandaan (Anda tidak pernah tahu apa yang ingin dibuat pabrikan). Lelucon semacam ini terkadang terjadi dalam perkembangan - lihat, seperti kata mereka, sampai ke akarnya!

Lucu kedua: halo dari tim tercinta kami arduino.cc


Seperti yang saya katakan, pengembangan sedang berjalan lancar dan AMS telah menjadi proyek yang cukup banyak dan, tentu saja, tidak mungkin dilakukan tanpa arahan kompilasi bersyarat yang sangat berguna dalam proyek tersebut. Ini adalah alat manajemen kode yang kuat, terutama karena Arduino Mega Server memiliki struktur modular dan arahan kompilasi bersyarat mengaktifkan dan menonaktifkan berbagai modul sistem.

#define
#ifdef
#endif

Ini dilakukan agar Anda dapat menonaktifkan modul yang tidak Anda butuhkan dan menghemat memori mikrokontroler yang berharga. Dan saya belum pernah bertemu dalam praktik saya (dalam bahasa pemrograman yang berbeda) sehingga arahan kompilasi bersyarat tidak bekerja atau "buggy". Ini omong kosong! Sampai baru-baru ini, saya pikir itu tidak mungkin, tetapi para pengembang (lucu) dari lingkungan pemrograman Arduino tidak membiarkan kita bosan, tetapi hal pertama yang pertama.

Jadi, kami mencoba menonaktifkan modul yang tidak kami butuhkan, dalam hal ini, modul untuk bekerja dengan MajorDoMo (dan sejauh ini ini berfungsi seperti yang diharapkan).

//#define MAJORDOMO_FEATURE

Secara teori, semuanya antara arahan

#ifdef MAJORDOMO_FEATURE

...

#endif

harus dimatikan dari kompilasi. Tapi itu dia!


#ifdef MAJORDOMO_FEATURE

char majorMegaObject[] = "ncMega01";
char majorCommObject[] = "comm_mega01";

// MajorDoMo net settings
byte MAJOR_IP[] = {192, 168, 2, 8};
int MAJOR_PORT = 80;

// <--------------------------------------     

// EthernetClient object
EthernetClient mclient;

// <--------------------------------------     ! ,   ,   !

void majordomoInit() {
  initStart("MajorDoMo");
  timeStamp();
  Serial.print("Connect to MajorDoMo... ");
  if (mclient.connect(MAJOR_IP, MAJOR_PORT)) {
    Serial.println("OK");
    //mclient.println("GET /search?q=arduino HTTP/1.0");
    mclient.println();
  } else {
      Serial.println("failed");
    }
  delay(200);
  mclient.stop();
  modulMajor = MODUL_ENABLE;
  initDone();
}


Seperti yang Anda lihat, kompilasi bersyarat tidak hanya berfungsi (itu buruk, tetapi belum pergi ke mana pun), tetapi kompilasi itu berfungsi "seperti yang Tuhan berikan ke dalam jiwa Anda", yaitu, di mana ia ingin - ia mengkompilasi, di mana ia tidak mau - ia tidak dapat dikompilasi! Dan ini sangat buruk, karena "gangguan" yang tidak dapat diprediksi seperti itu sangat sulit ditangkap dan mereka dapat menyebabkan konsekuensi yang sama sekali tidak dapat diprediksi.

Omong-omong, artikel ini adalah tentang Arduino IDE versi 1.6.5. Tapi, ternyata, versi lingkungan pengembangan tidak terlalu penting, mereka semua sangat bermasalah. Apa yang saya pelajari baru-baru ini, sampai saya menyusun sketsa kecil dan proyek kecil, semuanya beres.

Lelucon ketiga: sekali lagi, arduino.cc kita tercinta dan bug yang sangat fantastis


Saya tidak akan menjelaskan di sini untuk waktu yang lama, menurut pendapat saya, bug yang tidak biasa dalam kompiler lingkungan Arduino, tetapi saya akan segera memberikan kode sehingga Anda sendiri dapat menghargai keajaiban ini.

Deklarasikan variabel:

long errorsHttpSend = 0;

Dalam loop kami mencetak:

Serial.println(errorsHttpSend);

Hasil:

808333615

Ganti nama dengan menambahkan 2:

long errorsHttpSend2 = 0;

Dalam loop kami mencetak:

Serial.println(errorsHttpSend2);

Hasil:

0 

Muncul pertanyaan: bagaimana pengembangan dapat dilakukan dalam sistem seperti itu? Di sini Anda juga dapat menyebutkan karya yang sepenuhnya tidak memadai dari berbagai versi IDE Arduino. Kode yang berfungsi baik di satu versi lingkungan menolak untuk dikompilasi di versi lain. Satu lingkungan mengkompilasi proyek, yang lain "tidak melihat" salah satu perpustakaan. Setelah menginstal ulang lingkungan pengembangan, versi yang sama 1.6.5 (yang dikompilasi sebelum menginstal ulang) berhenti mengkompilasi proyek.

Jadi perlu diingat apa yang harus Anda hadapi saat bekerja dengan Arduino. Hanya ada satu poin positif: dengan sistem seperti itu, Anda tanpa disadari akan menjadi guru pemrograman dan master administrasi sistem.

Biarkan saya ungkapkan keinginan Tahun Baru saya kepada tim pengembangan Arduino: Anda adalah kekasih kami! Kami mengucapkan Selamat Tahun Baru dan semoga Anda merilis lingkungan pengembangan yang berfungsi normal di Tahun Baru!

Selamat Tahun Baru!


Teman! Saya mengucapkan selamat kepada Anda pada 2016 mendatang dan saya berharap bahwa informasi dalam artikel ini akan membantu Anda menghemat waktu dan saraf di tahun baru! Dan pengembangan yang sukses!

NB

Meskipun semua intrik musuh, dalam waktu dekat versi baru Arduino Mega Server akan dirilis pada 0,14 untuk Arduino Mega dan Arduino Due dengan banyak fitur baru.

Selain itu . Saluran Youtube terbuka dan berikut ini adalah video promo dari Arduino Mega Server, yang menunjukkan cara bekerja dengan sistem nyata.

Source: https://habr.com/ru/post/id388623/


All Articles