Arduino multishield sorunu

  • Konbuyu başlatan elek
  • Başlangıç tarihi

elek

Paylaşımcı üye
Katılım
24 May 2006
Mesajlar
2,666
Puanları
145
Aşağıdaki program şu şekilde çalışıyor..normal sayıyor ama sol üç hane delay kısmındaki süre kadar silik bir şekilde yanıp sönüyor..x=x+1 ve delay ı silip loop içine X=1234 yazarsam bu rakamı normal yazıyor..

Kod:
/* Define shift register pins used for seven segment display */
#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8


/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};
int x=0;
int a;
int b;
int c;
int d;

void setup ()
{

/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}

/* Main program */
void loop()
{
 
  a=x/1000;
  b=(x/100)%10;
  c=(x/10)%10;
  d=x%10;
 
/* Update the display with the current counter value */
WriteNumberToSegment(0 , a);
WriteNumberToSegment(1 , b);
WriteNumberToSegment(2 , c);
WriteNumberToSegment(3 , d);
x=x+1;
delay(300);
}

/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
void WriteNumberToSegment(byte Segment, byte Value)
{
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);

}
 
Moderatör tarafında düzenlendi:

mehmet.bey

Profesyonel Üye
Katılım
19 Ara 2011
Mesajlar
1,451
Puanları
283
Konum
Galaksi Dışı
Display yazdırma kısmını ya interrupt içinde
kullanın ya da milis() fonksiyonu ile durum makinesi
yapın.
 
Konu Sah
elek

elek

Paylaşımcı üye
Katılım
24 May 2006
Mesajlar
2,666
Puanları
145
..bu hazır bir programdı..ben sadece x i arttırma ,parçalama ve delay ekledim.
o dediklerinizi bu hazır programa ekleyemem sanırım..
 
Konu Sah
elek

elek

Paylaşımcı üye
Katılım
24 May 2006
Mesajlar
2,666
Puanları
145
sağolun..şema arduino uno ve multifonksiyon shield kartı.
arduino-multifunction-shield-551x551.jpg
 
Konu Sah
elek

elek

Paylaşımcı üye
Katılım
24 May 2006
Mesajlar
2,666
Puanları
145
tamam buldum..lcd mantığı gibi düşündüm..halbuki öyle değil..display e yazılan ekranda kalmıyor ki..tazelemek lazım..yani programı değiştirmek..bir yandan sayma yapılacak ama o sayıyı örneğin 7 segmentde mesela 1 saniye tutmak için devamlı yazmak gerekir.ama nasıl?
 

Benzer Konular

Forum istatistikleri

Konular
116,786
Mesajlar
822,405
Kullanıcılar
425,686
Son üye
Axell00

Yeni konular

Üst