انجمن تخصصی رباتیک و الکترونیک

  1. راکعی
  2. نمایشگرها و روشنایی
  3. دوشنبه, 18 جون 2018
  4.  اشتراک از طریق ایمیل
سلام خسته نباشید من چند روز پیش این ماژول رو تهیه گردم و خیلی سعی کردم با کتابخانه های مختلف راه اندازیش کنم اما موفق نشد
این تنها کدی هستش که تونستم بنویسم تا یک شمارنده داشته باشم اما وقتی تابع delay رو فعال میکنم دیگه درست نمایش نمیده
لطفا من رو راهنمایی کنید تا بتونم راه اندازیش کنم
ممنونم
البته این ماژول تو تضیحات نوشته اند مشترک اما کاتد مشترک هستش



int clock_pin = 11;
int latch_pin = 10 ;
int data_pin = 9;
int t = 1;
/* 0 1 2 3 4 5 6 7 8 9 */
byte num[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
/* 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
byte numd[16] = {0xBF, 0x86, 0xDB, 0xCF, 0xE6, 0xED, 0xFD, 0x87, 0xFF, 0xEF};
byte alpha[6] = {0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
byte alphad[6] = {0xF7, 0xFC, 0xB9, 0xDE, 0xF9, 0xF1};
/* 7 segment number */
byte digit[4] = {0x7F, 0xBF, 0xDF, 0xEF};

#define dwl digitalWrite(latch_pin,LOW)
#define dwh digitalWrite(latch_pin,HIGH)
int counter = 0;

void setup() {
pinMode(clock_pin, OUTPUT);
pinMode(data_pin, OUTPUT);
pinMode(latch_pin, OUTPUT);
}

void loop() {
for (int i = 1000; i < 2000; i++)
{
disp(i);
// delay(1000);
}

}
void disp(int counter)
{
int d1 = counter / 1000 % 10;
int d2 = counter / 100 % 10;
int d3 = counter / 10 % 10;
int d4 = counter % 10;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d1]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[0]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d2]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[1]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d3]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[2]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d4]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[3]);
dwh;

}

پیوست‌ها
مرجع‌ها
  1. http://thecaferobot.com/store/74hc59-4d-seven-segment
saeed پاسخ پذیرفته شده
فکر کنم این خوب باشه

int clock_pin = 11;
int latch_pin = 10 ;
int data_pin = 9;
int t = 1;

/* 0 1 2 3 4 5 6 7 8 9 */
byte num[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
/* 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
byte numd[16] = {0xBF, 0x86, 0xDB, 0xCF, 0xE6, 0xED, 0xFD, 0x87, 0xFF, 0xEF};
byte alpha[6] = {0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
byte alphad[6] = {0xF7, 0xFC, 0xB9, 0xDE, 0xF9, 0xF1};
/* 7 segment number */
byte digit[4] = {0x7F, 0xBF, 0xDF, 0xEF};

#define dwl digitalWrite(latch_pin,LOW)
#define dwh digitalWrite(latch_pin,HIGH)
int counter = 0;

void setup() {
pinMode(clock_pin, OUTPUT);
pinMode(data_pin, OUTPUT);
pinMode(latch_pin, OUTPUT);
}
int millisec1=0;
int millisec2=0;
void loop() {
millisec1=millis();
if ((millisec1-millisec2)>100){
millisec2=millisec1;
if (millisec1>30000){millisec1=0; millisec2=0;}
for (int i = 1000; i < 2000; i++)
{
disp(i);
// delay(1000);
}

}}
void disp(int counter)
{
int d1 = counter / 1000 % 10;
int d2 = counter / 100 % 10;
int d3 = counter / 10 % 10;
int d4 = counter % 10;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d1]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[0]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d2]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[1]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d3]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[2]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d4]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[3]);
dwh;

}
کامنت ها
سلام ممنونم. این کد کار نکرد اما راهنمایی تون عالی بود من با کد millis() مشکلم رو حل کردم
[CODE]

int clock_pin = 11;
int latch_pin = 10 ;
int data_pin = 9;
int t = 1;

/* 0 1 2 3 4 5 6 7 8 9 */
byte num[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
/* 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
byte numd[16] = {0xBF, 0x86, 0xDB, 0xCF, 0xE6, 0xED, 0xFD, 0x87, 0xFF, 0xEF};
byte alpha[6] = {0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
byte alphad[6] = {0xF7, 0xFC, 0xB9, 0xDE, 0xF9, 0xF1};
/* 7 segment digit number */
byte digit[4] = {0x7F, 0xBF, 0xDF, 0xEF};

#define dwl digitalWrite(latch_pin,LOW)
#define dwh digitalWrite(latch_pin,HIGH)
int counter = 0;
int i = 0;
unsigned long startMillis; //some global variables available anywhere in the program
unsigned long currentMillis;
const unsigned long period = 1000; //the value is a number of milliseconds

void setup() {
pinMode(clock_pin, OUTPUT);
pinMode(data_pin, OUTPUT);
pinMode(latch_pin, OUTPUT);
}

void loop() {
disp(i);
currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started)
if (currentMillis - startMillis >= period) //test whether the period has elapsed
{
i++; //if so, change the state of the LED. Uses a neat trick to change the state
startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state.
}

if (i >= 10000)
{
i = 0;
}

}

void disp(int counter)
{
int d1 = counter / 1000 % 10;
int d2 = counter / 100 % 10;
int d3 = counter / 10 % 10;
int d4 = counter % 10;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d1]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[0]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d2]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[1]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d3]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[2]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d4]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[3]);
dwh;

}
[CODE/]
  1. راکعی
  2. 1 سال قبل
هنوز کامنتی ارسال نشده است
افزودن کامنت
راکعی پاسخ پذیرفته شده
سلام ممنونم. این کد کار نکرد اما راهنمایی تون عالی بود من با کد millis() مشکلم رو حل کردم




int clock_pin = 11;
int latch_pin = 10 ;
int data_pin = 9;
int t = 1;

/* 0 1 2 3 4 5 6 7 8 9 */
byte num[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
/* 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
byte numd[16] = {0xBF, 0x86, 0xDB, 0xCF, 0xE6, 0xED, 0xFD, 0x87, 0xFF, 0xEF};
byte alpha[6] = {0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
byte alphad[6] = {0xF7, 0xFC, 0xB9, 0xDE, 0xF9, 0xF1};
/* 7 segment digit number */
byte digit[4] = {0x7F, 0xBF, 0xDF, 0xEF};

#define dwl digitalWrite(latch_pin,LOW)
#define dwh digitalWrite(latch_pin,HIGH)
int counter = 0;
int i = 0;
unsigned long startMillis; //some global variables available anywhere in the program
unsigned long currentMillis;
const unsigned long period = 1000; //the value is a number of milliseconds

void setup() {
pinMode(clock_pin, OUTPUT);
pinMode(data_pin, OUTPUT);
pinMode(latch_pin, OUTPUT);
}

void loop() {
disp(i);
currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started)
if (currentMillis - startMillis >= period) //test whether the period has elapsed
{
i++; //if so, change the state of the LED. Uses a neat trick to change the state
startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state.
}

if (i >= 10000)
{
i = 0;
}

}

void disp(int counter)
{
int d1 = counter / 1000 % 10;
int d2 = counter / 100 % 10;
int d3 = counter / 10 % 10;
int d4 = counter % 10;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d1]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[0]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d2]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[1]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d3]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[2]);
dwh;
dwl;
shiftOut(data_pin, clock_pin, MSBFIRST, num[d4]);
shiftOut(data_pin, clock_pin, LSBFIRST, digit[3]);
dwh;

}

کامنت ها
هنوز کامنتی ارسال نشده است
افزودن کامنت
m_nejatish پاسخ پذیرفته شده
سلام
متاسفانه من هم همین مشکل رو با این ماژول دارم. با هیچ کتابخانه ای کار نمی کند.:(
کسی میدونه چرا ؟
کسی می تونه کتابخونه ای معرفی کنه که با این ماژول کار کند ؟
کامنت ها
هنوز کامنتی ارسال نشده است
افزودن کامنت
  • صفحه :
  • 1


هنوز به این بحث پاسخی داده نشده است.
شما نیز اجازه ارسال پاسخ را ندارید