Arduino da GOTO kullanımı ve değer döndürülmesi

Başlatan Epsilon, 24 Temmuz 2019, 21:02:58

Epsilon

Merhaba
Basitçe izah edersem:
Nano da 3 nolu pinde buton var bastığımda 1.LED(5.pin) tekrar bastığımda
2.led(6.pin) ... şeklinde devam eden 7 tane ledi her bastığımda yakıyorum.9 nolu pindende 0,5 volt dan 3,5 volta kadar değişiyor yani butona her basış ortalama 0,5 volt artırarak  kare dalga çıkarıyor LED ler bu kare dalganın seviyesinin görseli.

Yapmak istediğim ,kodları AYARLAR gibi bir label içine alıp örneğin 2 saniye butona basmazsam ,hangi seviyedeki LED yanıyorsa o pwm değerini ,örneğin ASIL KISIM gibi bir label a göndermek.Yani örneğin

pwmWrite(led, 27);
satırındaki 27 değeriyle ASIL KISIM da çalıştırmak

Sorularım:

AYARLAR labeli nereden başlayabilir,ASIL KISIM adlı label nereye eklenir?

#include <PWM.h>//eklendi
int led = 9;  // eklendi
int32_t frequency = 50; //eklendi frequency (in Hz)

#define button 3

#define LED1 5
#define LED2 6
#define LED3 7

#define LED4 8
#define LED5 10
#define LED6 11
#define LED7 12

int state = 0;
int old=0;
int buttonPoll=0;
void setup() {
//InitTimersSafe(); 

  //sets the frequency for the specified pin
// bool success = SetPinFrequencySafe(led, frequency);
  
  //if the pin frequency was set successfully, turn pin 13 on
//  if(success) {
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH); 
  // put your setup code here, to run once:
pinMode (button,INPUT);
pinMode (LED1,OUTPUT);
pinMode (LED2,OUTPUT);
pinMode (LED3,OUTPUT);

pinMode (LED4,OUTPUT);
pinMode (LED5,OUTPUT);
pinMode (LED6,OUTPUT);
pinMode (LED7,OUTPUT);

digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);

digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
digitalWrite(LED6,LOW);
digitalWrite(LED6,LOW);

}

void loop() {
buttonPoll =digitalRead(button);
if (buttonPoll ==1){
  delay(50);
  buttonPoll=digitalRead(button);
  if (buttonPoll ==0){
    state =old+1;
  }}
  else{
    delay(100);
  }
  switch (state){
    case 1:
    digitalWrite(LED1,HIGH);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
    pwmWrite(led, 27);

    old=state;
    break;
    case 2:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,HIGH);
    digitalWrite(LED3,LOW);

    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
    pwmWrite(led, 44);
    old=state;
    break;

    case 3:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,HIGH);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
    pwmWrite(led, 48);  
    old=state;
    break;
  
  case 4:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,HIGH);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
  pwmWrite(led, 52);
  old=state;
    break;
    
  
  case 5:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,HIGH);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
  pwmWrite(led, 58);
  old=state;
    break;
  
    case 6:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,HIGH);
    digitalWrite(LED7,LOW);
  pwmWrite(led, 62);
  
  old=state;
    break;

case 7:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,HIGH);
  pwmWrite(led, 78);
  old=state;
    break;
      
  default:
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);

    digitalWrite(LED4,LOW);
    digitalWrite(LED5,LOW);
    digitalWrite(LED6,LOW);
    digitalWrite(LED7,LOW);
  
    old=0;
    break;
  }
}

RaMu

Goto kullanmadan yap.

while(buton_zaman)
{
void loop() {
buton_zaman ı void loop ne kadar sürüyorsa o kadar azalt

buttonPoll...

butona basılırsa buton_zaman ı 2 saniyeye kur.}
}
tabi void loop yazmayacak orada,
halihazırda yazdığın void loop daki kodlar bu while döngüsüne girecek.
Bu while buton zaman dışında bir yerde
yeniden while ın içine girmek istediğinde buton zaman değişkenini  kurman yeterli olacak.
Programın başlangıcında buton zaman kurulmalı.
Şuan void loop içinde bulunan pwm ayar değeri bir değişkene kaydedilecek,
o istediğin yerde istediğin gibi kullanılacak.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Epsilon

@RaMu cevabınız için teşekkürler.
Demek istediğinizi anladım .Bu konu ile ilgili güzel bir kaynak videoda buldum
Tekrar teşekkürler.