Arduino'da yeniyim yardım lütfen

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

erkan340

Üye
Katılım
7 Şub 2022
Mesajlar
10
Puanları
1
Yaş
41
ö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);
 

Forum istatistikleri

Konular
133,380
Mesajlar
971,000
Kullanıcılar
459,227
Son üye
saidkaradogu

Yeni konular

Çevrimiçi üyeler

Geri
Üst