Arduino multishield sorunu

elek

Profesyonel Üye
Katılım
24 May 2006
Mesajlar
2,911
Puanları
318
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:
Display yazdırma kısmını ya interrupt içinde
kullanın ya da milis() fonksiyonu ile durum makinesi
yapın.
 
..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..
 
Şemanızı ekler misiniz? Fırsat bulursam bakayım.
 
sağolun..şema arduino uno ve multifonksiyon shield kartı.
arduino-multifunction-shield-551x551.jpg
 
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?
 

Yeni mesajlar

Forum istatistikleri

Konular
127,966
Mesajlar
913,950
Kullanıcılar
449,611
Son üye
ramazansanli@

Yeni konular

Geri
Üst