PBP gibi sonsuz döngü Ardiuno da nasıl yapılır?

Başlatan ledanimasyon, 08 Şubat 2020, 23:18:32

ledanimasyon

Merhaba; 
 Ardiuno programında çok yeniyim anlayamadigim konu PBP daki gibi sonsuz döngüler olusturamadim, bir biri arasında dallanip dallandigi yerde komut gelene kadar orda beklemesini istiyorum. Aşağıdaki örneği ardiuno dilinde  cevirebilecek arkadaş var mı .Teşekkürler. 


'--------ana  döngü sonsuz-----------

BASLA:
        IF  STAR=1 THEN  GOTO KONTROL
        IF  STP=1 THEN  GOTO DENEME
        IF  HATA=1 THEN  GOTO ALARM
        LED1 =0
        LED2 =0
        GOTO BASLA

'--birinci alt program sonsuz döngü -

KONTROL:   
        LED1=1
        LED2=0
        IF  STAR =1 THEN  GOTO BASLA
        IF  STP=1 THEN  GOTO DENEME
       GOTO KONTROL

'--ikinci alt program sonsuz döngü --

DENEME :
       LED1=0
       LED2=1
       IF  STAR=1 THEN  GOTO BASLA
       IF  STP=1  THEN   GOTO KONTROL
      GOTO DENEME

'--üçüncü alt program sonsuz döngü --

ALARM:
      LED1=0
      LED2=0
      GOTO ALARM

Hattuşa

bi deneme yaptım olmuşmudur deneyerek görebilirsiniz


const int led1 =  A1;
const int led2 =  A2;
const int STAR = 2;
const int STP = 3;
const int HATA = 3;

void setup() {
  // put your setup code here, to run once:
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(STAR, INPUT);
   pinMode(STP, INPUT);
   pinMode(HATA, INPUT);
     digitalWrite(led1,LOW);
    digitalWrite(led2,LOW);
}

void loop() {
  if(STAR ==1){control();}
  if(STP ==HIGH){deneme();}  
  if(HATA ==HIGH){alarm();} 
    
}

void control(){
      digitalWrite(led1,HIGH);
      digitalWrite(led2,LOW);
  
  }

  void deneme(){
    digitalWrite(led1,LOW);
    digitalWrite(led2,HIGH);
    }

    void alarm(){
          digitalWrite(led1,LOW);
          digitalWrite(led2,LOW);
      }

ledanimasyon

teşekkürler .Denedikten sonra sonucu yazarım .

Hattuşa

Alıntı yapılan: ledanimasyon - 09 Şubat 2020, 02:00:11teşekkürler .Denedikten sonra sonucu yazarım .

giriş çıkış pinleri atmasyon o pinleri kendin belirle ve yazılımda düzeltmelisin. bu arada ben arduıno da kod yazmayı pek bilmiyorum. bir başlangıç  yaptım hatalar oldukça düzelten birileri çıkar

fatih88

Alıntı Yapconst int led1 =  A1;
const int led2 =  A2;
const int STAR = 2;
const int STP = 3;
const int HATA = 3;

void setup() {
  // put your setup code here, to run once:
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(STAR, INPUT);
   pinMode(STP, INPUT);
   pinMode(HATA, INPUT);
     digitalWrite(led1,LOW);
    digitalWrite(led2,LOW);
}

void loop() {
  if(STAR ==1){control();}
  if(STP ==HIGH){deneme();} 
  if(HATA ==HIGH){alarm();}
   
}

void control(){
      digitalWrite(led1,HIGH);
      digitalWrite(led2,LOW);
 
  }

  void deneme(){
    digitalWrite(led1,LOW);
    digitalWrite(led2,HIGH);
    }

    void alarm(){
          digitalWrite(led1,LOW);
          digitalWrite(led2,LOW);
      }
selami usta bende çok fazla ardunioyu sevmem lakin c syntax yanlış olmuş genelde alt programlar loop veya main blogunun üstünde olur eğer altta yazmak istersen sanırsam setup un üstüne alt programları tanıtman gerekir
gelelim arkadaşın sonsuz döngü işine ben c de sonsuz döngüyü while ise sağlıyorum lakin goto komutu ilede yapılabilir lakin c de pek goto kumutu kullanılmaması öneriliyor
//*******************************
unit_8t x=1;//global bir değişken yanımladım bu değişken short olarakta tanımlana bilir ilk ataması 1 dir
.
.
.
void flas()//flas alt programı
{
   while(x)//x bir olduğu sürece while arasındaki süslü parantezler arasında çalışır 
   {
    .
    . 
    .
    if(pinb&(1<<pinb.0))x=0;//alt programda pinb0 a basılırsa x 0 olup while yanlış olacağından alt programdan cıkar ben bu şekil yapıyorum genelde  
   }
}
void main()
{
.
.
.
.
if(pinb&(1<<pinb.1))flas();//pinb1 e basılırsa flas alt programına git
}


bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ledanimasyon

Teşekkürler. Daha deneme fırsatı bulamadım ardıuno sipariş verdim gelincedeneyeceğim .

 Neden ardiunoyu sevmiyorsunuz.Kullanış bakımından kötü olduğu için mi?Varsa kötü tarafları biraz açıklarmısınız.Benim ihtiyaç duyduğum tarafı dokunmatik ekran konusunda .PBP da bunu yapamam diye .

fatih88

Tekil uygulamalar için iyi lakin benim gözümde ardunioyu 14-18 yaş gurubu öğrencileri kodlamaya alıştırmak için iyi size şimdi timer0 kullan ardunio ile desem nasıl olacak mecbur register yönlendirme ile yapacaksın ardunio da kullanıcıların veya firmanın oluşturduğu makroları kullanıyorsun misal ben pwm kullanmayacağım ardunio ide si senin icin o komutlari senin dosyana ekliyor ve mcu hafizandan yiyor ve tabiki komut cecikmeleri olusuyor bazi uygulamalarda bende kullanıyorum lakin uzun soluklu programlarda 32kb hafıza yetmiyor
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

Serk@n

ledanimasyon

Arduino'da loop döngüsü süreklidir. Bunun haricinde bir sürekli bir döngü istiyorsanız, while döngüsü yapabilirsiniz:

while (x)
{
...
...
...
}

x=true olduğu sürece döngü devam eder.

Takıldığınız yerlerde yine bilgim kadarıyla yardımcı olurum.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

ledanimasyon

Anladım açıklamaların için teşekkürler.

Serkanzey sizede teşekkür ediyorum takildigim yerde sizden yardım isterim zahmet olmazsa.

Powered by EzPortal