Arduino'da yeniyim yardım lütfen

erkan340

Üye
Katılım
7 Şub 2022
Mesajlar
8
Puanları
1
Yaş
39
öncelıkle arduıno da yenıyım ama öğrenmeye çalısıyorum
sensörden gelen sureklı degişken bir veri var . bu veriyi dısarıdan bır sınyal geldiğinde d değişkeninide olan son veriyi birsonrakı kosulda kullanmak istiyorum yardımcı olursanız sevınırım.



float ref = 100.00 ;
float normal = (sensor.read());


if (digitalRead (P) == HIGH )
{

float b = normal - ref;
float c= b*0.5 ;

float d = c + normal - b ;

Serial.print("normal değer: ");
Serial.println( normal );

Serial.print("yarısı : ");
Serial.println( d );
}
if (digitalRead (P) == LOW )
{
float e =normal - ref;
float f = d - e ;


Serial.print("top : ");
Serial.println( g );



}
}
 
Değişkenleri if döngüsünün içinde tanımlarsan bir sonraki koşula aktarılmaz. Değişkenleri en başa global olarak tanımlarsan program var olduğu sürece ramde kalacaktır yani yazacağın programın en başına

C++:
float b,c,d,e,f,g;

şeklinde tanımlarsan döngü içerisinde bunları her kullandığında değerleri değişir ama kaybolmazlar.
 
global olarak tanımlasamda ilk dongüdeki son görülen degeri almam lazım yanı duymeye basıldıgı ankı veriyi sabıt tutmam lazım
global olarak tanımladıgımda diğer dongü içinde veri sensorden gelen veriye göre değiştiği için bir işime yaramıyor
yanı p den low geldiğinde d degerinin son halinı kullanmam gerekiyor
 
C++:
float ref = 100.00;
float normal, b, c, d, e, f, g;


void setup() {
  pinMode(P, INPUT);

}

void loop() {
  if (digitalRead(P) == HIGH) {
    normal = (sensor.read());
    b = normal - ref;
    c = b * 0.5;

    d = c + normal - b;

    Serial.print("normal değer: ");
    Serial.println(normal);

    Serial.print("yarısı : ");
    Serial.println(d);
  }
  if (digitalRead(P) == LOW) {
    e = normal - ref;
    f = d - e;

    Serial.print("top : ");
    Serial.println(g);
  }

}

Açıklamakla uğraşamayacağım. sensor ve P değerini girmeyi unutma.
 
böyle durumlarda boş yere ana programı meşgul etmemek için kesme kullanmak daha mantıklı.
 
öncelikle cvp verenlere cok teşekkür ederim
buyuk bır kısmını hallettim
şu anda takıldığım yer println ile yazdıgım g deki float ı 5 nolu pine cıkış yapmak istiyorum
yardımcı olursanız sevınırım
 
Soruyu o kadar eksik ve yanlış soruyorsun ki, çok basit birşey olmasına rağmen insanlar cevap yazmıyor. Nasıl çıkış yapmak istiyorsun? sayısal bir değer bir pine nasıl çıkılabilir? Sanırım pwm olarak çıkmasını istiyorsun. Bunun için basit bir matematik gerekiyor sadece. MAX_DEGER olarak g nin alabileceği maksimum değeri yazman gerekiyor.

C++:
int buffer = (g/MAX_DEGER)*100.00;
int pwm = map(buffer,0,100,0,255);
analogWrite(pwm);
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…