آرایه چیست؟ (ادامه)
سلام بر دوستان عزیر آردوینو کار
امروز میخواهم با یک مثال به برسی آرایه بپردازیم که در آن از درس های گذشته نیز استفاده شده است.
در این مثال ما تعداد 4 عدد رله و تعداد 6 عدد کلید فشاری داریم و میخواهیم کارهای زیر را انجام دهیم:
1⃣ با فشردن هرکدام از 4 کلید اول رله مربوط به آن کلید روشن شود و با فشردن مجدد همان کلید رله مربوطه خاموش گردد.
2⃣ با فشردن کلید پنجم تمامی رله ها روشن شوند.
3⃣ با فشردن کلید ششم همه رله ها خاموش گردند.
در این مثال از Debounce استفاده نکرده ایم تا مفهوم آرایه را به خوبی متوجه شوید. در مثال های بعدی همین برنامه را با استفاده از Debounce انجام خواهیم داد.
// چون مقدار یک آرایه از نوع عدد صحیح است و نمیتواند تغییر کند باید حتماً از نوع const یعنی ثابت تعرف گردد. //
// تعریف تعداد پایه های کلید فشاری و رله //
const int B_Count = 5, R_Count = 4;
// تعریف شماره پایه های رله ها //
int Rellay_Pin[R_Count] = {6, 8, 11, 12};
// تعریف شماره پایه های کلید فشاری ها //
int Button_Pin[B_Count] = {2, 4, 5, 9, 13, 7};
// به تعداد کلید ها متغیری بنام B_State تعریف می کنیم تا آخرین وضعیت کلید را در خود نگهداری کند. //
bool B_State[B_Count] = {0};
// یعنی از B_State صفرم تا B_State چهارم همه مقدار صفر به خود بگیرند //
// میتوانستیم به این صورت نیز بنویسیم //
//bool B_State[B_Count] = {0, 0, 0, 0};
// ولی در اینصورت اگر تعداد کلید ها تغییر پیدا می کرد باید تعداد صفر ها را نیز تغییر میدادیم. //
void setup() {
// تنظیم حالت ورودی و خروجی پایه ها //
// در این حلقه For چون تعداد پایه های کلید های فشاری از تعداد//
// پایه های رله بیشتر است از تعداد کلید ها استفاده می کنیم. //
for (int i = 0; i < B_Count; i++) {
// پایه های کلیدهای فشاری بعنوان ورودی با مقاومت PULLUP تعریف می شوند. //
pinMode(Button_Pin[i], INPUT_PULLUP);
// اگر شمارنده حلقه(i) از تعداد پایه های رله بیشتر نیست //
if (i < R_Count) {
// پایه های رله بعنوان خروجی تعریف شوند //
pinMode(Rellay_Pin[i], OUTPUT);
// رله ها خاموش شوند //
digitalWrite(Rellay_Pin[i], LOW);
}
}
}
void loop() {
// به تعداد کلید ها حلقه درست میکنیم. //
for (int i = 0; i < B_Count; i++)
// در داخل حلقه تمامی کلید ها را با ارسال اندیس شماره پایه کلید به تابع Read_Key وضعیت کلید مورد نظر را می خوانیم. //
Read_Key(i);
// به تعداد رله ها حلقه درست میکنیم. //
for (int i = 0; i < R_Count; i++)
// در داخل حلقه آخرین وضعیت هر رله که توسط کلید ها تنظیم شده را به آن اعمال میکنیم. //
digitalWrite(Rellay_Pin[i], B_State[i]);
}
// این تابع را برای خواندن وضعیت کلید ها نوشته ایم. //
// این تابع یک ورودی که همان اندیس شماره پایه کلید است را می گیرد. //
void Read_Key(int x ) {
// یک متغیر جهت خواندن وضعیت منطقی پایه دیجیتال کلیدی که اندیس آن به تابع ارسال شده است تعریف می کنیم. //
int Button_Pressed;
// وضعیت کلید مورد نظر را میخوانیم. //
Button_Pressed = digitalRead(Button_Pin[x]);
// اگر کلید مورد نظر فشرده شده بود، مقدار صفر به خود میگیرد. //
if (Button_Pressed == 0) {
// اگر اندیس کلید مورد نظر کمتر از تعداد رله ها بود
// (چون اندیس از صفر شروع میشود یک واحداز تعداد کمتر است) //
// بنابراین به تعداد رله ها اعمال زیر انجام می شود. //
if (x < R_Count) {
// وضعیت را معکوس کن. //
B_State[x] != B_State[x];
}
// در غیر اینصورت یعنی اگر کلید بعد از آخرین شماره اندیس رله ها بود //
else if (x == R_Count) {
// تمامی رله ها را روشن کن //
for (int i = 0; i < R_Count; i++)B_State[i] = 1;
}
// در غیر اینصورت یعنی اگر کلید بعدی بود //
else if (x == R_Count + 1) {
// تمامی رله ها را خاموش کن //
for (int i = 0; i < R_Count; i++)B_State[i] = 0;
}
}
}
https://telegram.me/ArduinoKaraneJavan
سلام بر دوستان عزیر آردوینو کار
امروز میخواهم با یک مثال به برسی آرایه بپردازیم که در آن از درس های گذشته نیز استفاده شده است.
در این مثال ما تعداد 4 عدد رله و تعداد 6 عدد کلید فشاری داریم و میخواهیم کارهای زیر را انجام دهیم:
1⃣ با فشردن هرکدام از 4 کلید اول رله مربوط به آن کلید روشن شود و با فشردن مجدد همان کلید رله مربوطه خاموش گردد.
2⃣ با فشردن کلید پنجم تمامی رله ها روشن شوند.
3⃣ با فشردن کلید ششم همه رله ها خاموش گردند.
در این مثال از Debounce استفاده نکرده ایم تا مفهوم آرایه را به خوبی متوجه شوید. در مثال های بعدی همین برنامه را با استفاده از Debounce انجام خواهیم داد.
// چون مقدار یک آرایه از نوع عدد صحیح است و نمیتواند تغییر کند باید حتماً از نوع const یعنی ثابت تعرف گردد. //
// تعریف تعداد پایه های کلید فشاری و رله //
const int B_Count = 5, R_Count = 4;
// تعریف شماره پایه های رله ها //
int Rellay_Pin[R_Count] = {6, 8, 11, 12};
// تعریف شماره پایه های کلید فشاری ها //
int Button_Pin[B_Count] = {2, 4, 5, 9, 13, 7};
// به تعداد کلید ها متغیری بنام B_State تعریف می کنیم تا آخرین وضعیت کلید را در خود نگهداری کند. //
bool B_State[B_Count] = {0};
// یعنی از B_State صفرم تا B_State چهارم همه مقدار صفر به خود بگیرند //
// میتوانستیم به این صورت نیز بنویسیم //
//bool B_State[B_Count] = {0, 0, 0, 0};
// ولی در اینصورت اگر تعداد کلید ها تغییر پیدا می کرد باید تعداد صفر ها را نیز تغییر میدادیم. //
void setup() {
// تنظیم حالت ورودی و خروجی پایه ها //
// در این حلقه For چون تعداد پایه های کلید های فشاری از تعداد//
// پایه های رله بیشتر است از تعداد کلید ها استفاده می کنیم. //
for (int i = 0; i < B_Count; i++) {
// پایه های کلیدهای فشاری بعنوان ورودی با مقاومت PULLUP تعریف می شوند. //
pinMode(Button_Pin[i], INPUT_PULLUP);
// اگر شمارنده حلقه(i) از تعداد پایه های رله بیشتر نیست //
if (i < R_Count) {
// پایه های رله بعنوان خروجی تعریف شوند //
pinMode(Rellay_Pin[i], OUTPUT);
// رله ها خاموش شوند //
digitalWrite(Rellay_Pin[i], LOW);
}
}
}
void loop() {
// به تعداد کلید ها حلقه درست میکنیم. //
for (int i = 0; i < B_Count; i++)
// در داخل حلقه تمامی کلید ها را با ارسال اندیس شماره پایه کلید به تابع Read_Key وضعیت کلید مورد نظر را می خوانیم. //
Read_Key(i);
// به تعداد رله ها حلقه درست میکنیم. //
for (int i = 0; i < R_Count; i++)
// در داخل حلقه آخرین وضعیت هر رله که توسط کلید ها تنظیم شده را به آن اعمال میکنیم. //
digitalWrite(Rellay_Pin[i], B_State[i]);
}
// این تابع را برای خواندن وضعیت کلید ها نوشته ایم. //
// این تابع یک ورودی که همان اندیس شماره پایه کلید است را می گیرد. //
void Read_Key(int x ) {
// یک متغیر جهت خواندن وضعیت منطقی پایه دیجیتال کلیدی که اندیس آن به تابع ارسال شده است تعریف می کنیم. //
int Button_Pressed;
// وضعیت کلید مورد نظر را میخوانیم. //
Button_Pressed = digitalRead(Button_Pin[x]);
// اگر کلید مورد نظر فشرده شده بود، مقدار صفر به خود میگیرد. //
if (Button_Pressed == 0) {
// اگر اندیس کلید مورد نظر کمتر از تعداد رله ها بود
// (چون اندیس از صفر شروع میشود یک واحداز تعداد کمتر است) //
// بنابراین به تعداد رله ها اعمال زیر انجام می شود. //
if (x < R_Count) {
// وضعیت را معکوس کن. //
B_State[x] != B_State[x];
}
// در غیر اینصورت یعنی اگر کلید بعد از آخرین شماره اندیس رله ها بود //
else if (x == R_Count) {
// تمامی رله ها را روشن کن //
for (int i = 0; i < R_Count; i++)B_State[i] = 1;
}
// در غیر اینصورت یعنی اگر کلید بعدی بود //
else if (x == R_Count + 1) {
// تمامی رله ها را خاموش کن //
for (int i = 0; i < R_Count; i++)B_State[i] = 0;
}
}
}
https://telegram.me/ArduinoKaraneJavan
👍1
ماژول رله 4 کانال جهت استفاده در پروژه فوق که می توان به راحتی آنرا خریداری کرد و یا ساخت.
https://telegram.me/ArduinoKaraneJavan
https://telegram.me/ArduinoKaraneJavan
ماژول های رله بصورت 1 و 2 و 4 و 8 و 12 و 16 و 24 تایی با ولتاژ بوبین 5 ولت در بازار موجود می باشند. که می توانید در پروژه های خود استفاده کنید.
✅ در این ماژول ها از اپتوکوپلر برای ایزولاسیون مدار قدرت و مدار فرمان که همان برد آردوینوی ما می باشد استفاده شده است تا در صورت اتصال سیمهای برق موجود در کنتاکتها به مدار رله، به برد آردوینو هیچگونه آسیبی وارد نگردد.
✅ در این ماژول ها از یک ترانزیستور به عنوان بافر جریان برای هر رله استفاده شده است.
✅ در ضمن برای هر رله یک عدد LED کوچک از نوع SMD نیز روی ماژول استفاده شده است که نشان دهنده رسیدن فرمان به برد است و در عیب یابی مدار بسیار کمک می کند.
✅ روی این ماژول ها یک جامپر وجود دارد که جهت کنترل نوع فعال شدن رله می باشد. و به صورت زیر عمل میکند:
👈 اگر جامپر روی قسمت VCC باشد وقتی 1 میدهید رله روشن میشود و وقتی 0 میدهید رله خاموش میشود .
👈 اگر جامپر روی قسمت GND باشد وقتی 0 میدهید رله روشن میشود و وقتی 1 میدهید رله خاموش میشود .
در زیر تصویر چند نمونه از این ماژول های رله آورده شده است.
https://telegram.me/ArduinoKaraneJavan
✅ در این ماژول ها از اپتوکوپلر برای ایزولاسیون مدار قدرت و مدار فرمان که همان برد آردوینوی ما می باشد استفاده شده است تا در صورت اتصال سیمهای برق موجود در کنتاکتها به مدار رله، به برد آردوینو هیچگونه آسیبی وارد نگردد.
✅ در این ماژول ها از یک ترانزیستور به عنوان بافر جریان برای هر رله استفاده شده است.
✅ در ضمن برای هر رله یک عدد LED کوچک از نوع SMD نیز روی ماژول استفاده شده است که نشان دهنده رسیدن فرمان به برد است و در عیب یابی مدار بسیار کمک می کند.
✅ روی این ماژول ها یک جامپر وجود دارد که جهت کنترل نوع فعال شدن رله می باشد. و به صورت زیر عمل میکند:
👈 اگر جامپر روی قسمت VCC باشد وقتی 1 میدهید رله روشن میشود و وقتی 0 میدهید رله خاموش میشود .
👈 اگر جامپر روی قسمت GND باشد وقتی 0 میدهید رله روشن میشود و وقتی 1 میدهید رله خاموش میشود .
در زیر تصویر چند نمونه از این ماژول های رله آورده شده است.
https://telegram.me/ArduinoKaraneJavan
👍1
ماژول رله تک کانال با اپتوکوپلر
https://telegram.me/ArduinoKaraneJavan
https://telegram.me/ArduinoKaraneJavan
نوع دیگری از ماژول های رله تک کانال که فقط دارای حالت Normaly Open می باشد.
https://telegram.me/ArduinoKaraneJavan
https://telegram.me/ArduinoKaraneJavan
نوع دیگری از ماژول های رله تک کانال که فقط دارای حالت Normaly Open می باشد.
https://telegram.me/ArduinoKaraneJavan
https://telegram.me/ArduinoKaraneJavan
نوع دیگری از ماژول های رله 8 کانال که فقط دارای حالت Normaly Open می باشد.
https://telegram.me/ArduinoKaraneJavan
https://telegram.me/ArduinoKaraneJavan
#آردوینو کاران جوان
✅ اولین کانال آموزش آردوینو در تلگرام
✅ آموزش از صفر تا بینهایت آردوینو
✅ برای عضویت کلیک کنید 👇🏻👇🏻👇🏻 https://telegram.me/ArduinoKaraneJavan
✅ اولین کانال آموزش آردوینو در تلگرام
✅ آموزش از صفر تا بینهایت آردوینو
✅ برای عضویت کلیک کنید 👇🏻👇🏻👇🏻 https://telegram.me/ArduinoKaraneJavan
#آردوینو کاران جوان
✅ اولین کانال آموزش آردوینو در تلگرام
✅ اتوماسیون خانگی و صنعتی
✅ برای عضویت کلیک کنید 👇🏻👇🏻👇🏻 https://telegram.me/ArduinoKaraneJavan
✅ اولین کانال آموزش آردوینو در تلگرام
✅ اتوماسیون خانگی و صنعتی
✅ برای عضویت کلیک کنید 👇🏻👇🏻👇🏻 https://telegram.me/ArduinoKaraneJavan
روز آردوینو Arduino Day
روز آردوینو مصادف با 28 مارس، روزی است که در آن تولد آردینو در سراسر جهان جشن گرفته می شود. در این جشن، آن دسته از کسانی که با آردوینو کار می کنند اطلاعات، پروژه ها و تجربیات خود را با دیگران به اشتراک می گذارند.
همه افرادی که در زمینه کار با آردوینو مشارکت می کنند، می توانند در این جشن شرکت نموده وبا افزدون یک event به مجموعه افرادی که در سالروز تولد آردینو تجربیات خود را به استراک می گذارند، بپیوندند.
برای ایجاد کردن event به این لینک مراجعه کنید:
https://day.arduino.cc/#/
https://telegram.me/ArduinoKaraneJavan
روز آردوینو مصادف با 28 مارس، روزی است که در آن تولد آردینو در سراسر جهان جشن گرفته می شود. در این جشن، آن دسته از کسانی که با آردوینو کار می کنند اطلاعات، پروژه ها و تجربیات خود را با دیگران به اشتراک می گذارند.
همه افرادی که در زمینه کار با آردوینو مشارکت می کنند، می توانند در این جشن شرکت نموده وبا افزدون یک event به مجموعه افرادی که در سالروز تولد آردینو تجربیات خود را به استراک می گذارند، بپیوندند.
برای ایجاد کردن event به این لینک مراجعه کنید:
https://day.arduino.cc/#/
https://telegram.me/ArduinoKaraneJavan