ryco

مدیر کل
  • تعداد ارسال ها

    242
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    89

آخرین بار برد ryco در 24 مهر

ryco یکی از رکورد داران بیشترین تعداد پسند مطالب است!

اعتبار در سایت

247 بی نظیر

7 دنبال کننده

درباره ryco

  • درجه
    کاربر ثابت
  • تاریخ تولد 11 دی 1378

اطلاعات تماس

  • آدرس تارنما
    http://mostro.ir
  • مرورگر
    Microsoft Edge
  • تلگرام
    http://telegram.me/rohollah

اطلاعات نمایه

  • جنسیت
    آقا
  • مکان
    Bu
  • علایق
    آفرود، بیابون، کویر، پیاده روی، دوچرخه سواری!
  • نام توسعه دهندگی
    mostro
  • سیستم عامل کامپیوتر
    Windows 10
  • سیستم عامل موبایل
    Android
  • موبایل
    Other

آخرین بازدید کنندگان نمایه

391 بازدید کننده نمایه
  1. بسم الله الرحمن الرحیم سلام؛ به درخواست دوستان، یه سیستم زنگ هوشمند مدرسه قرار هست بسازیم. البته تو هوشمند بودنش شک دارم ولی خب از اونجا که هر کسی به هر چیزی که یه چیپ داشته باشه بهش عبارت #هوشمند می چسبونه، منم تصمیم گرفتم بهش بگم هوشمند. خب بریم سراغ لوازم مورد نیاز، نکته اینکه لازم نیست عینا همین ها رو بخرید، می توانید از مدل های مشابه هم استفاده کنید. اگر در خرید و انتخاب شک دارید، همینجا بپرسید! مواد لازم: 1. یک برد آردوئینو. من برای این کار UNO رو پیشنهاد میدم! چون به راحتی هم پروگرام میشه، تازه قیمتش هم خیلی کمه و برای کار ما هم کافیه! 2. ماژول ساعت فوق دقیق DS3231، یه ماژول قدرتمند و کم مصرف با قیمت ارزان! تا سال 2100 برنامه ریزی شده و علاوه بر ساعت، تاریخ رو هم داره که البته مورد نیاز ما نیست! از همه مهم تر یک باتری ساعت هم داره که در صورتی که برق قطع شد، زمان بندی ما به فنا نره . اگرچه تاریخش شاید برای مدارس مهم باشه تا در ایام تعطیل زنگ کار نکنه! ولی خب کلا از برق بکشیمش بیرون بهتره. 3. ماژول رله Relay Module: این رو برای مدیریت برق نیاز داریم! یدونه تک کاناله بخرید! خرج الکی هم نکنید! 4. مقداری سیم مناسب با ولتاژ 220 ولت و 5 ولت و همچنین به یک زنگ مدرسه هم نیاز داریم! حالا بریم سراغ وصل کردن این لوازم! توی UNO ما پایه SDA ماژول رو به پایه A4 و پایه SLC رو به پایه A5 آردوئینو وصل کردیم. VCC رو هم به 3.5 ولت و GND هم که تکلیفش مشخصه! من برای روشن کردن زنگ از پایه 6 دیجیتال استفاده کردم که به دلخواه خودتون می تونید از پایه دیجیتال دیگری هم استفاده کنید! یه سیم به پایه 6 وصل می کنید. این پایه در اصل رله رو کنترل می کنه، این پایه رو باید به پایه in رله متصل کنید. VCC و GND رله رو هم به پایه های مربوطه روی آردوئینو متصل کنید. در آخر کابل برق رو به رله وصل کنید. (سیم نول مستقیم به زنگ متصل می شه، رله رو سر راه سیم فاز قرار بدید تا مدار رو قطع و وصل کنه!). پایان! سعی کنید کار رو تمیز انجام بدید و قبل از لحیم کاری از بردبورد استفاده کنید تا صحت اتصالات رو بسنجید. اگر هم لحیم کاری بلد یستید، قبل از اینکه خودتون و وسایل رو بسوزونید برید به یه تعمیرکار لوازم الکترونیک رجوع کنید و جان خودتون رو نجات بدید! بگذریم! حالا نوبت برنامه نویسی هست. من برای این زنگ مدرسه اینترفیس خاصی در نظر نگرفتم و همونطور که گفتم موقع کامپایل دیگه زمان ها رو مشخص می کنیم! البته اگر می خواید از طریق راه دور و با بلوتوث زنگ ها رو کنترل کنید هم بگید تا انجامش بدیم ولی خب فکر کنم لازم نیست اصلا، چون زنگهای مدرسه ثابته و تغییر ندارند! 1. کابل USB رو به برد متصل کنید. 2. این کتابخونه رو دانلود کنید و در IDE آردوئینو اضافه و سپس به پروژه بیافزایید! 3. کدهای زیر رو وارد محیط برنامه نویسی کرده و آپلود کنید روی برد! //این همون کتابخونه است که دانلود کردیم! #include <DS3231.h> //این کتابخونه رو دستی اضافه کنید (بنویسیدش!) #include <Wire.h> //یک شی از RTCDateTime میسازیم تا زمان رو در اون ذخیره کنیم //و به جزییاتش دست پیدا کنیم RTCDateTime dt; // یک ساعت از کتابخونه مورد نظر می سازیم DS3231 clock; void setup() { // put your setup code here, to run once: Serial.begin(9600); // شروع به کار ماژول رو اعلام می کنیم Serial.println ("Initialize DS3231"); //ساعت شروع به کار می کند: clock.begin (); //زمان رو از کامپیوتر دریافت و تنظیم می کنیم: clock.setDateTime (__DATE__, __TIME__); //پایه 6 رو به عنوان پایه خروجی تنظیم می کنیم pinMode (6, OUTPUT); } void loop() { // put your main code here, to run repeatedly: // مقدار زمان رو در متغیر میریزیم و سپس چاپ می کنیم: dt = clock.getDateTime (); Serial.print ("Raw Time: "); Serial.print (dt.hour); Serial.print (":"); Serial.print (dt.minute); Serial.print (":"); Serial.print (dt.second); Serial.println (""); //یک تاخیر 1 ثانیه ای برای هر بار چاپ لحاظ می کینم: delay(1000); //یک شرط قرار دادیم که اگر ساعت 13 و دقیقه 23 و ثانیه کمتر از 5 // بود پایه 6 رو فعال کنه. if ( (dt.hour == 13) && (dt.minute == 23) && (dt.second < 5) ) { digitalWrite(6, HIGH); } else { //اگر هم نبود، عیر فعال کنه! digitalWrite(6, LOW); } } نکته: برای اینکه بتونید خروجی رو ببینید، CTRL + Shift + M رو بزنید! سعی کردم مستند نویسی کنم تا هم با کدها آشنا بشید و هم اینکه بتونید تغییرات دلخواه رو بدید، اگر سوالی بود در خدمتم! فایل پروژه رو هم در انتها می تونید دانلود کنید. school.ino
  2. سلام؛ چگونه می توانم از طریق کد نویسی یک هات اسپات ایجاد کنم؟! می خواهم یک هات اسپات دلخواه ایجاد کرده و یک روتر ایجاد کنم. اشتراک گذاری اینترنت مد نظرم نیست و تنها اتصال دستگاه ها و تبادل اطلاعات برایم مهم هست.
  3. سلام؛ برد Uno یکی از محبوب ترین بردهایی است که تولید شده و البته همانطور که از نامش پیداست (UNO در ایتالیایی یعنی عدد یک) آغازگر انقلاب آردوئینو بوده است. بردی ارزان (حدود 20 هزار تومان) که بر پایه mega328 توسعه یافته و بر همین اساس امکانات خوبی را برای ما فراهم می کند: 14 پین برای ورود و خروج اطلاعات که 6 تا از آنها به عنوان pwm نیز قابل استفاده هستند یک مزیت برای هر کاربری است که تعداد زیادی ورودی و خروجی در مدار خود دارد. وجود پورت USB از نوع مینی علاوه بر آسان کردن پروگرام این برد، تغذیه آن را هم از طریق طیف وسیعی از منبع تغذیه های موجود در بازار (شارژر موبایل!) امکان پذیر کرده است. البته جک مادگی ضخیم شارژ همچنان بر روی این برد قابل مشاهده است، تا در صورت نیاز به درگاه USB بتوانید همچنان برد را تغذیه کنید. پین هدرISCP و کلید ریسیت هم از سایر چیزهایی است که در این برد وجود دارد. برای راه اندازی این برد به صورت پایدار به اختلاف پتانسیل مابین 6 تا 20 ولت نیاز دارید، البته اگر ولتاژ را به بیش از 12 ولت برسانید، به علت افزایش دمای چیپ بهتر است از یک سینک یا خنک کننده دیگر استفاده کنید. بهتر است بگوییم بهترین بازه عملیاتی این برد در ولتاژ 7 تا 12 ولت قرار دارد. حافظه این برد 32 کیلوبایت هست که کاملا کافی به نظر می رسد! 2 کیلوبایت SRAM و 1 کیلو بایت EEPROM هم در اختیار شماست (البته من نمی دونم دقیقا کاربردشون چیه!). در آخر هم خوب است بدانید که با دو پین RX و TX می توانید از ماژول های رادیویی مثل بلوتوث هم استفاده کنید!
  4. سلام؛ احتمالا برای شما هم این سوال پیش آمده باشد که چه زمانی باید از بردهای رسپبری پای و چه زمانی از بردهای (یا ماژول‌های) آردوئینو استفاده کرد. با این که این یک قانون نیست اما در کلیت می‌تواند راهگشا باشد. هر گاه نیاز بر این باشد که شما اطلاعاتی را از محیط دریافت کنید یا کاری بر روی سیستم انجام دهید، بهتر است از بردهای آردوئینو و ماژول‌های آن استفاده کنید. و هر گاه نیاز به پردازش این اطلاعات دارید یا می‌خواهید دستورات پیچیده‌ای برای اعمال به بردهای آردوئینو بدهید، باید از رسپبری پای یا سایر بردهای دارای سیستم عامل استفاده کنید. البته واضح هست که برد رسپبری پای خود می‌تواند به وسیله سنسور، برخی از اطلاعات را دریافت کند، اما ماژول‌های موجود برای بردهای آردوئینو بسیار گسترده تر و ارزانتر هستند. همچنین باید به این نکته هم توجه کرد که گوشی موبایل هم می‌تواند تبدیل به واحد پردازشی سیستم ما شود. پس با رسپبری پای تمام اطلاعات را از آردوئینو دریافت و پردازش کنید.
  5. سلام! قصد دارم وقتی برنامه اجراست، برخی از کارها توسط کیبورد صورت بگیره و به عبارتی با زدن کلیدی مانند بالا (Up) عملی خاص صورت بگیره. من طبق اسناد مایکروسافت پروژه ساخته و تست کردم، اما هنگام فشار کلیدهای کیبورد، رویداد keydown اجرا نمیشه! Microsoft Document, Keyboard Events private void grdMain_KeyDown(object sender, KeyRoutedEventArgs e) { switch (e.Key) { case VirtualKey.Up: break; case VirtualKey.Down: break; case VirtualKey.Left: break; case VirtualKey.Right: break; } } <Grid Name="grdMain" Loaded="grdMain_Loaded" KeyDown="grdMain_KeyDown" KeyUp="grdMain_KeyUp" Background="Red"> </Grid>
  6. با توجه به فیلتر/تحریم بودن سرویس دهنده، آیا راه حلی هست که بتونیم بدون فیلتر از این ابزار استفاده کنیم؟
  7. سلام؛ داشتن یک کیبورد اختصاصی می تواند برای خیلی ها مفید و کارآمد باشد، کیبوردی که تنها برای یک عملیات یا برنامه خاص، فعالیت شما را ساده تر و حرفه ای تر می کند، یک کیبورد مخصوص بازی، کیبورد پخش چند رسانه ای، کیبورد برای کنترل رسپبری پای و یا حتی یک کلید برای تایپ ; در محیط ویژوال استدیو! خب، به موارد زیر برای انجام این پروژه نیازمندیم: 1. یک برد آردوئینو که از USB پشتیبانی کند و دارای پردازنده ATmega32u4 باشد! (مانند:Leonardo, Micro, یا Due board). 2. کابل USB 3. سیم 4. بردبورد 5. کلید فشاری در بعد نرم افزاری: 1. IDE Arduino از لحاظ برنامه نویسی با کار پیچیده ای روبرو نیستیم، می توانید یک کلید تعریف کنید که تنها حرف R را تایپ کند یا یک کلید ترکیبی از Ctrl + C بسازید که عملیات کپی را انجام دهد. حتی به سادگی می توانید عملیات را زمان بندی کنید تا با فشار کلید، یک سری عملیات ها (فشار کلید) انجام شود. در اینجا ما برای فهم بهتر پروژه دو مثال می زنیم، ابتدا بیایید یک کلید را به برد خود متصل کنیم! این تصویر هم توسط Fritzing ایجاد شده! که بعدا مفصل در موردش صحبت خواهیم کرد. همانطور که می بینید، ما 2D را به وسیله دکمه به GND متصل می کنیم تا عملیات فیزیکی فشار دکمه کیبورد را ایجاد کنیم. اکنون بورد خود را به وسیله USB به رایانه خود متصل کنید و IDE Arduino رو اجرا کنید. در گام اول، کتابخانه کیبورد را به پروژه با تایپ عبارت زیر اضافه می کنیم: #include "Keyboard.h" در void setup، پین 2 را به عنوان ورودی تعریف می کنیم و کیبورد را فراخوانی می کنیم، با این فراخوانی، برد شما به عنوان یک کیبورد شناسایی خواهد شد! void setup() { // make pin 2 an input and turn on the // pullup resistor so it goes high unless // connected to ground: pinMode(2, INPUT_PULLUP); // initialize control over the keyboard: Keyboard.begin(); } و حالا در حلقه، با توجه به اینکه در حال فشار دکمه هستیم یا خیر، کلید مورد نظر را فراخوانی می کنیم. برای تشخیص در حال فشرده شدن کلید می توان از یک شرط ساده استفاده کرد: void loop() { while (digitalRead(2) == HIGH) { // do nothing until pin 2 goes low delay(500); } خب اکنون می خواهیم کلید ; را بسازیم: Keyboard.press(';'); delay(100); Keyboard.releaseAll(); به همین سادگی ما یک کلید را ساختیم که با فشار آن و نگه داشتنتش، هر دهم ثانیه، یکبار ; را تایپ می کند. اما اگر بخواهید از کلید Ctrl استفاده کنید، باید آن را تعریف کنید، در کیبوردهایی که از ویندوز (و همچنین لینوکس) پشتیبانی می کنند، این کلید به صورت زیر تعریف می شود: char ctrlKey = KEY_LEFT_GUI; هر چند لازم نیست (آخه کاربرای مک کجا از این کارا می کنند؟! ) اما برای مک به صورت زیر است: char ctrlKey = KEY_LEFT_CTRL; دیگر چیزی تغییر نمی کند جز اینکه باید قبل از کلید c، کلید ctrl را فشار دهیم! // Copy: Keyboard.press(ctrlKey); Keyboard.press('c'); delay(100); Keyboard.releaseAll(); به همین سادگی! می توانید عملیات های پیچیده دیگری رو هم تعریف کنید! #لذت_ببرید اما کدها به صورت کامل: تک کلید: #include "Keyboard.h" void setup() { // make pin 2 an input and turn on the // pullup resistor so it goes high unless // connected to ground: pinMode(2, INPUT_PULLUP); // initialize control over the keyboard: Keyboard.begin(); } void loop() { while (digitalRead(2) == HIGH) { // do nothing until pin 2 goes low } delay(500); Keyboard.press('n'); delay(100); Keyboard.releaseAll(); } و برای کپی: #include "Keyboard.h" void setup() { // make pin 2 an input and turn on the // pullup resistor so it goes high unless // connected to ground: pinMode(2, INPUT_PULLUP); // initialize control over the keyboard: Keyboard.begin(); } void loop() { while (digitalRead(2) == HIGH) { // do nothing until pin 2 goes low } delay(1000); // Copy for Win/Linux: Keyboard.press(ctrlKey); Keyboard.press('n'); delay(100); Keyboard.releaseAll(); }
  8. آموزش iot

    همه چیز درست به نظر میرسه! ماژول بلوتوث رو درست متصل کردید؟ بیاید به تلگرام من (آدرس تلگرامم در پروفایلم هست).
  9. آموزش iot

    سلام؛ بردتون که چیز خوبیه، گویا اصلی هست (برای من اصلی نیست مثل اینکه!) دوست عزیز، تو کدی که اسم بلوتوث رو نوشتید، باید اسم دستگاه لوتوثی خودتون رو بنویسید! conn = new BluetoothSerial("Dev B"); نحوه بدست آوردنشم کامل تو آموزش توضیح دادم. خواهش می کنم. اینجا جمع شدیم به هم کمک کنیم!!
  10. آموزش iot

    سلام! آهان! امیدوارم مشکلی نباشه، اگه روشنه که مشکلی نیست! یک عکس از بردتون بدید تا بهتر راهنمایی کنم! منظوری نداشتم ، اشتباه لپی بوده! منظورم اینه که پایه رو درست متصل کردید؟ توی کدها، پایه مربوطه رو معرفی کردید؟
  11. آموزش iot

    سلام! خب اول چرا لحیم کاری کردید؟! شما تا لحظه آخر نباید این کار رو انجام بدید. اما حالا، شما ال ای دی رو به صورت مستقیم به باتری وصل کنید، ببینید درسته؟! ال ای دی رو به پایه درست وصل کردید؟ کدخا رو دست وصل کردید؟! در صورت درست بودن کد، باید هنگام ارسال دستور، یه ال ای دی روی برد روشن بشه!
  12. آموزش iot

    سلام دوست عزیز. در خود IDE آردوئینو کد وجود داره! به مسیر برویدFile > Examples > Firmata، StandardFirmata، پنجره جدیدی باز میشه که حاوی کدهاست. و در مورد سوال قبلتون، چون ویندوز IOT همیشه آخرین SDK رو داره، بنابراین هر کدوم از نسخه های ویژوال که از اون SDK پشتیبانی می کنن می تونن کاربردی باشند. در مورد آموزش های بیشتر هم چشم.
  13. آموزش iot

    بسم الله الرحمن الرحیم قسمت دوم: سلام دوستان خوبم، خب امروز یک قسمت دیگه از کار رو انجام میدیم. به قسمت های مهم رسیدیم. درحال حاضر باید، یک ال ای دی رو به پایه های برد آردوئینو متصل کنیم. من برای این کار، پایه 5 دیجیتال رو در نظر گرفتم که تنها دارای حالت روشن و خاموش هست. از گراند (GND) هم یک سیم به پایه منفی میرسونیم. اتصال ماژول بلوتوث هم ساده است، ولی یک نکته کوچک هست. پایه های مثبت و منفی را به پایه های همنام در برد متصل کنید، اما در مورد دو پایه دیگر، پایه TX ماژول را به RX برد و RX ماژول را به TX برد متصل کنید (برعکس). در اصل ما فرستنده برد رو به گیرنده ماژول و فرستنده ماژول رو به گیرنده برد متصل کردیم. حالا برد رو به منبع تغذیه متصل کنید. (عکس از سایت مایکی هست، ولی به همین نحو باید وصل کنید) حالا ویژوال رو باز کنید و پروژه ای رو که قبلا ساختیم رو باز کنید. یک متغیر از نوع BluetoothSerial و یکی هم از نوع RemoteDevice میسازیم: namespace Pilot { /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> public sealed partial class MainPage : Page { BluetoothSerial conn; RemoteDevice uno; public MainPage() { this.InitializeComponent(); } } } گام بعدی، بلوتوث رو متصل می کنیم و در گام بعد اون رو به RemoteDevice میدهیم: public MainPage() { this.InitializeComponent(); conn = new BluetoothSerial("Dev B"); uno = new RemoteDevice(conn); } } Dev B اسم بلوتوث من هست. چیزی که منو به دردسر انداخت همین بود، چون توی دستگاه اسم بلوتوث ماژول HC-05 بود. برای اطلاع از نام بلوتوث، بعد از پیر کردن ماژول با ویندوز، به تنظیمات بلوتوث برید. در قسمت Com Ports می تونید اسم دستگاه رو ببینید (مقابل Outgoing و در میان دو ''). اگر هم چیز خاصی نبود، همون اسم اصلی رو قرار بدید. خب بریم ادامه بدیم: حالا اگر همه جیز به خوبی پیش رفت و دستگاه متصل بود، باید یک متد ایجاد کنیم و کارامون رو پیش ببریم: public MainPage() { this.InitializeComponent(); conn = new BluetoothSerial("Dev B"); uno = new RemoteDevice(conn); conn.ConnectionEstablished += Conn_ConnectionEstablished; } private void Conn_ConnectionEstablished() { throw new NotImplementedException(); } و در نهایت، استارت تبادل داده ها رو میزنیم! نرخ داده ها رو که در قسمت قبل یادتون هست؟ public MainPage() { this.InitializeComponent(); conn = new BluetoothSerial("Dev B"); uno = new RemoteDevice(conn); conn.ConnectionEstablished += Conn_ConnectionEstablished; conn.begin(57600, 0); } private void Conn_ConnectionEstablished() { //کارهایی که در صورت اتصال باید انجام بشه، مثلا فعال سازی دکمه روشن و خاموش کردن ال ای دی } خب، همه چیز به خوبی پیش رفت، حالا یه دکمه میسازیم که به وسیله اون بتونیم فرامین مربوط به روشن و خاموش کردن ال ای دی رو بفرستیم. <Page x:Class="Pilot.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Pilot" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Button Name="btnOn" Click="btnOn_Click" Content="ON" Width="70" HorizontalAlignment="Center"/> <Button Name="btnOff" Click="btnOff_Click" Content="OFF" Width="70" HorizontalAlignment="Center"/> </StackPanel> </Page> حالا باید دستورات نهایی رو وارد کنیم! در مورد نوع دستورات، طی پست بعدی صحبت می کنم. اما فعلا چون یک پایه دیجیتالی رو انتخاب کردیم، پس دستورات رو به صورت زیر می فرستیم: برای روشن کردن: uno.digitalWrite(5, PinState.HIGH); خاموش کردن: uno.digitalWrite(5, PinState.LOW); و در نهایت کدهای ما به این صورت خواهد بود: using Microsoft.Maker.RemoteWiring; using Microsoft.Maker.Serial; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 namespace Pilot { /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> public sealed partial class MainPage : Page { BluetoothSerial conn; RemoteDevice uno; public MainPage() { this.InitializeComponent(); conn = new BluetoothSerial("Dev B"); uno = new RemoteDevice(conn); conn.ConnectionEstablished += Conn_ConnectionEstablished; conn.begin(57600,0); } private void Conn_ConnectionEstablished() { } private void btnOn_Click(object sender, RoutedEventArgs e) { uno.digitalWrite(5, PinState.HIGH); } private void btnOff_Click(object sender, RoutedEventArgs e) { uno.digitalWrite(5, PinState.LOW); } } } برنامه رو تست کنید! مطمئنا اولین بار که ال ای دی رو روشن می کنید، لذت غیر قابل انکاری (در حد اختراع خود لامپ ) خواهید برد! موفق باشید!
  14. بسم الله الرحمن الرحیم سلام؛ اینبار هم یه آموزش جدید و اما جذاب داریم براتون که میدونم هر کسی انجامش بده، حسابی بهش خوش میگذره و در آینده هم با خلاقیت و پشتکارش می تونه کارهای بزرگی بکنه. این یک آموزش پایه است، بنابراین پیشرفتش و شاخوبرگ دادنش دست خودتونه! خب، قصد داریم گوشی ویندوزیمون (یا هر دستگاهی که قابلیت اجرای برنامه های یونیورسال و دارای سخت افزار بلوتوث هست) رو به آردوئینو متصل کنیم و با ارسال دستوری، یک لامپ رو روشن کنیم. برای این کار نیاز به چند وسیله مختلف داریم: 1. دستگاه با قابلیت اجرای ویندوز 10 دارای سخت افزار بلوتوث 2. برد آردوئینو؛ من از برد آردوئینو UNO استفاده کردم. 3. ماژول بلوتوث مناسب با برد آردوئینو؛ من برای بردم از برد HC-05 همراه با برد راه اندازش استفاده کردم. 4. یک LED معمولی 5. برد بورد برای قرار دادن قطعات 6. منبع تغذیه 5 ولتی (شارژر موبایل ها اکثرا مناسب هستند) 7. مقداری سیم و در بعد نرم افزاری هم به: 1. ویژوال استدیو 2017 2. IDE آردوئینو (لینک دانلود) نیاز داریم. خب بعد جمع کردن پیش نیازها، وقتشه که اولین پروژه رو شروع کنیم. ویژوال استدیو رو اجرا و یک پروژه جدید Blank App (Windows Universal) ایجاد می کنیم. بعد از ایجاد پروژه، از طریق Nuget، پکیج Windows Remote Arduino رو دریافت و نصب کنید، ترجیحا جهت محکم کاری، یکبار پروژه رو rebuild کنید. پس از این کار در منوی سولوشن، روی Package.appxmanifest راست کلیک کنید و گزینه View Code رو بزنید. می خواهیم قابلیت ها (نیازها) رو معرفی کنیم. تمامی موارد زیر رو در زیر تگ <Capabilities> وارد کنید: برای اتصال از طریق بلوتوث: <DeviceCapability Name="bluetooth.rfcomm"> <Device Id="any"> <Function Type="name:serialPort"/> </Device> </DeviceCapability> و <Capability Name="privateNetworkClientServer"/> <Capability Name="internetClientServer"/> خب، فعلا کارمون با ویژوال تمومه! میریم سراغ پروگرام کردن آردوئینو: IDE مربوطه رو نصب و اجرا کنید، برد خودتون رو با کابل USB به سیستم متصل کنید. توجه کنید که در این حالت نباید ماژولهای گیرنده داده مثل بلوتوث به بردتون متصل باشه، چون در فرایند پروگرام کردن دچار خطا خواهید شد. از منوی Tools > Board، برد خودتون رو انتخاب کنید. سپس از منوی Tools > Port، پورتی رو که برد از طریق اون به سیستم متصل هست رو انتخاب کنید. و در آخر از مسیر File > Examples > Firmata، StandardFirmata را انتخاب کنید. این کدهای آماده، تمام نیازهای ما برای اتصال به تک تک پایه ها و دریافت و ارسال داده رو برطرف می کند. حالا وقتشه این کدها رو بر روی برد آپلود کنیم. کافیه دکمه "Upload" (دکمه فلش رو به راست) رو فشار بدیم و منتظر پایان فرآیند باشیم. یک نکته ظریف اما مهم اینجا وجود داره، و اون هم مربوط به نرخ باند ماژول بلوتوث هست. باید در دیتاشیت ماژولی که خریدید نگاه کنید و عدد مربوطه رو پیدا کنید. برای ماژل من 57600 هست. بعد از پیدا کردن نرخ مناسب، در کدهای StandardFirmata سرچ کنید و مقدار زیر رو به نرخ مناسب ماژولتون تغییر بدید: Firmata.begin(57600); تمام! در پست بعدی، بخش پایانی کار رو توضیح خواهم داد. پس با ما همراه باشید. رزرو..........
  15. سلام؛ اگر شما هم با پنل GridView کار کرده باشید، حتما در نمایش آیتم ها در صفحات مختلف دچار مشکل فضای خالی در طرفین آیتم ها شدید. متاسفانه این کنترل به خوبی بهینه نشده و کاملا رسپانسیو عمل نمی کند. بنابراین باید از راه حلی دیگر این مشکل رو جبران کنیم تا آیتم ها تمام عرض پنل رو بپوشانند و فضای خالی آزار دهنده ای جلوی چشم مخاطب قرار نگیرد. اما حالا بریم سراغ توضیحات: ابتدا در xml کنترل گرید ویو، کدهای زیر رو اضافه می کنیم، تا عرض هر آیتم به اندازه فضای آزاد برسه: GridView.ItemContainerStyle> <Style TargetType="GridViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Stretch" /> </Style> </GridView.ItemContainerStyle> به این منظور باید در رویداد SizeChanged گرید ویو میزان عرض هر آیتم رو بصورت دستی تغییر بدیم. من برای این کار تعداد ستون هایی رو که می خوام در عرض صفحه میشه نمایش داد رو محاسبه می کنم و سپس این عرض "حداکثری" رو به آیتم ها می دم. من عرض حداکثری هر آیتم رو 850 انتخاب کردم: private void gvFave_SizeChanged(object sender, SizeChangedEventArgs e) { var columns = Math.Ceiling(ActualWidth / 850); ((ItemsWrapGrid)gvFave.ItemsPanelRoot).ItemWidth = e.NewSize.Width / columns; } به همین سادگی می تونید از شر فضای خالی راحت بشید. اگر سوالی بود در خدمتم. با تشکر