زمان ارسال: 11 ماه پیش

 

امروز بعد چند وقت با کد و اموزش جدید در خدمت شما هستیم. کد سون سگمنت 7seg با اردوینو به صورت شمارنده افزایشی و کاهشی  (اند مشترک و یا کاتد مشترک) . پس به ادامه مطلب بروید

طرز کار برنامه به صورت زیر است

 

وسایل مورد نیاز:

1- برد اردوینو (مورد استفاده ما uno)

2- 7segment اند مشترک یا کاتد مشترک (مورد استفاده ما اند مشترک)

3- 3 تا مقاومت (برای سون سگمنت 220 اهم و برای کلید ها 5 یا 10 کیلو اهم استفاده شده است)

4- سیم

5- دو عدد کلید

 

مراحل کار:

اگر اموزش های قبلی را دنبال کرده باشید تا الان اشنایی خوبی با برد و پین ها دارید.

اول از همه سون سگمنت رو توضیح میدم

طبق عکس های زیر هر پایه از سون سگمنت مشخص هست کدوم حرف (A ,B ,…) میشود.

در کاتد مشترک پایه سه یا هشت به زمین و در اند مشترک پایه سه یا هشت به vcc وصل شود

 

 

کد نوشته شده زیر برای اند مشترک هست و برای کاتد مشترک یه تفاوت های کوچیکی داره

 

برای پول اپ کردن کلید به صورت زیر عمل کنید

مقامت 5 یا 10 کیلو اهم باشه و کلید به پین گفته شده وصل کنید.در پول اپ مقدار یک به برد داده میشود و زمانی ک کلید فشرده بشود صفر به برد میدهد.

توضیحات کد:

در ابتدا تعریف پین 9 و 10 برای کلید های افزایش و کاهش است

const int buttonPinU = 9;
const int buttonPinD = 10;

در خط بعدش تعریف وضعیت کلید افزایش و کاهش و مقدار اولیه یک میباشد چون قراره کلید پول اپ بشه

تعریف متغییر کانتر برای شمارش عدد  و بعدش تعریف ارایه دو بعدی  برای سون سگمنت که 16 در 7 میباشد یعنی 16 عدد از صفر تا 15 و ریختن مقدار  اون عدد به صورت بایت

بعد وارد بخش void setup 

کد میشویم. در این بخش تعریف ورودی بودن دو کلید و خروجی کردن پین های 2 تا 8 است.

تابع void seg_write(byte digit)

بدین صورت عمل میکند که با توجه به ارگومان ورودی که یه بایت هست.یه حلقه داره که هفت بار انجام میشه و داخلش پین 2 تا 8 رو با توجه به ارایه که در ابتدا تعریف کردیم روشن یا خاموش میکنه که میشه همون عدد کانتر مون

در بخش اصلی برنامه یعنی void loop()

اول وضعیت کلید ها خونده میشه اگر کلید افزایش فشار داده بشه مقدار صفر به ما میده و در این صورت متغییر کانتر یکی افزایش پیدا میکنه و تابع که بالاتر توضیح دادیم با ارگومان کانتر فراخوانی میشود و اگر کانتر 16 برسد دوباره صفر میشود

برای کلید کاهشی دقیقا به همین شکل با این تفاوت که کانتر کاهش میدهیم و اگر کانتر صفر بشه دوباره مقدارش 16 میشود.

/*
* www.PersianStudent.ir
* @mahdi271
* common anode 7 segment display
* 2-8 arduino pin for 7seg
* 9 and 10 pin arduino for button UP & DW
* */
const int buttonPinU = 9;
const int buttonPinD = 10;
int buttonStateU=1;
int buttonStateD=1;
byte counter=0;
byte seven_seg[16][7]={
{0,0,0,0,0,0,1}, //0
{1,0,0,1,1,1,1}, //1
{0,0,1,0,0,1,0}, //2
{0,0,0,0,1,1,0}, //3
{1,0,0,1,1,0,0}, //4
{0,1,0,0,1,0,0}, //5
{0,1,0,0,0,0,0}, //6
{0,0,0,1,1,1,1}, //7
{0,0,0,0,0,0,0}, //8
{0,0,0,1,1,0,0}, //9
{0,0,0,1,0,0,0}, //10 a
{1,1,0,0,0,0,0}, //11 b
{0,1,1,0,0,0,1}, //12 c
{1,0,0,0,0,1,0}, //13 d
{0,1,1,0,0,0,0}, //14 e
{0,1,1,1,0,0,0} //15 f
};
void setup() {
Serial.begin(9600);
Serial.println(“www.persianstudent.ir”);
Serial.println(“Mahdi271”);
pinMode(buttonPinU,INPUT);
pinMode(buttonPinD,INPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
seg_write(counter);
}
void loop() {
buttonStateU = digitalRead(buttonPinU);
buttonStateD = digitalRead(buttonPinD);
if(buttonStateU==0)
{
seg_write(counter);
counter++;
delay(300);
if(counter==16)
counter=0;
}
else if(buttonStateD==0)
{
counter–;
seg_write(counter);
delay(300);
if(counter==0)
counter=16;
}
}
void seg_write(byte digit)
{
byte pin =2;
for (byte seg_count=0;seg_count<7;seg_count++)
{
digitalWrite(pin,seven_seg[digit][seg_count]);
pin++;
}
}

اگر از سون سگمنت کاتد مشترک استفاده کردید

byte seven_seg[16][7]={
{ 1,1,1,1,1,1,0 }, // = 0
{ 0,1,1,0,0,0,0 }, // = 1
{ 1,1,0,1,1,0,1 }, // = 2
{ 1,1,1,1,0,0,1 }, // = 3
{ 0,1,1,0,0,1,1 }, // = 4
{ 1,0,1,1,0,1,1 }, // = 5
{ 1,0,1,1,1,1,1 }, // = 6
{ 1,1,1,0,0,0,0 }, // = 7
{ 1,1,1,1,1,1,1 }, // = 8
{ 1,1,1,0,0,1,1 } // = 9
{ 1,1,1,0,1,1,1 } // = 10 a
{ 0,0,1,1,1,1,1 } // = 11 b
{ 1,0,0,1,1,1,0 } // = 12 c
{ 0,1,1,1,1,0,1 } // = 13 d
{ 1,0,0,1,1,1,1 } // = 14 e
{ 1,0,0,0,1,1,1 } // = 15 f
};

جایگزین ارایه که در ابتدا برنامه هست بکنید

 

دانلود کد برنامه سون سگمنت اند مشترک

 

0

431 views

نویسنده: مهدی موسوی
درباره مهدی موسوی:

دانشجوی رشته کامپیوتر گرایش نرم افزار دانشگاه صنعتی سجاد مشهد . علاقه مند به دنیای اینترنت



طراحی سایت توسط تیم طراحی دانشجوی ایرانی

© تمامی حقوق مادی و معنوی این وب سایت متعلق به دانشجوی ایرانی می باشد.