Değişkenler

Başlatan Zakkum2014, 30 Ekim 2018, 23:17:34

Zakkum2014

Arkadaşlar  float değişkenini sensör uygulamasında kullanırken aynı float değişkenini sensörün set değerini arttır ve eksilt yapılabilirmi. Lcd ekran üzerinde gösterilecek

ziyaretci

-Bir tane sensör var.
-Sana veri geliyor.
-Sen bu veriyi alıyorsun.
-Float bir değişkene yazıyorsun.
-Ve bu float değişkeni...aesnsjsyyr
-jndbehskdidhsk
-LCD'ye yazıyorsun.

1)Sensörün set değerinden kastın nedir?

2)Sensörden gelen veriyi kaydettiğin float değişkenin değiştirilip değiştirilemeyeceğini mi soruyorsun?
-Evet, veri değiştirilebilir. Değiştirdiğin veriyi LCD'ye basabilirsin.

3)Sensörden gelen bilginin bulunduğu değişkeni değiştirerek, sensördeki bir ayarı yapabilir miyim diye mi soruyorsun?
-Belirsiz, bu iletişim protokolü dahilinde değildir muhtemelen. Sürücü dosyasına bakmak lazım. Sensörden veri yine aynı gelir, çıkışı sen istediğin oranda ve doğrultuda büyütüp, küçültebilirsin. Tabi matematiksel olarak.

4)Sensör ne sensörü?
-3. sorunun cevabını netleştirecek.

Zakkum2014

Lm35 veya ntc tipi 
Printf(lcd_putc, "sicaklik: %f"set) 
if(input(yukari)&&(set<100))set=set+1:
if(input(asagi)&&(set>0))set=set-1:
Burda lcd ekranda çıkan sonuç sicaklik : 131.0
Değişken Float sicaklik; yani anlatmak istediğim 
Set değerini 0.5 oranında değiştirmek yukarı aşağı

ziyaretci

Alıntı yapılan: Zakkum2014 - 31 Ekim 2018, 19:25:26Lm35 veya ntc tipi
Printf(lcd_putc, "sicaklik: %f",set) 
if(input(yukari)&&(set<100))set=set+1:
if(input(asagi)&&(set>0))set=set-1:
Burda lcd ekranda çıkan sonuç sicaklik : 131.0
Değişken Float sicaklik; yani anlatmak istediğim
Set değerini 0.5 oranında değiştirmek yukarı aşağı

Demek istediğini pek anlayamadım. Buradan yapmak istediğin eylemi söyle ki bizde anlayalım. Bu bir menü ayarı mı olacak?

if(input(yukari)&&(set<100))set+=0.5;
if(input(asagi)&&(set>0))set-=0.5;
Printf(lcd_putc, "sicaklik: %f",set);

Belirsiz bir soru soruyorsun. Hani soru belirsiz. İlginç.

Genel bir cevap vereyim. Eğer o veriyi bir bilgisayara(MCU) aldıysan, hafızaya koyduysan o verinin içinden geçersin. Kısacası ne istersen yapabilirsin.

RaMu

#4
float set=50;
Printf(lcd_putc, "sicaklik: %f,set:%f") 
if(input(yukari)&&(set<100))set=set+0.5:
if(input(asagi)&&(set>0.5))set=set-0.5:

Gibi bir mantıkla olur.

Kod satırlarının sonunda neden iki nokta var?
printf yazım formatıda farklı geldi bana.
Yapamazsan CcsC için derlenir halinide yazarım.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Zakkum2014

#5
Evet bir menü içinde, bu bir bina içinde ısı ölçme ve havalandırma biraz kilima gibi ama değil sade bir tasarım set değerine ulaşınca röle kontrolü yapıyor aslında kodu %d  olarak yazarsak sorun yok da ben biraz takıntı yaptım, küsüratlı olsun istedim sizlere sorum o şekildeydi. Evet kodu telefon üzerinden yazarken hata iki nokta yazılmış siz yazınca fark ettim ccs c de zaten işlem sonucunda derleme ye izin vermez.

ziyaretci

#6
Yani sen sensörden gelen veri ile menüdeki değeri karşılaştırıp sonuca göre işlem yapacaksın. Gelen veriyi ADC yapıp karşılaştırma yapıyorsun. Ama bana ADC den tam sayı geliyor ama ben bu değeri float'a çevirip, menüdende onlalık ayar yapmak istiyorum diyorsun.

#device adc=8
unsigned int8 set=0; // adc verisi
Float menu_ayari=0, tek_hesap=0;  

Void main()
{
   For(;;)
   {
      if(buton1) //arttır
      {
        While(buton1);
        delay_ms(20);
        if(menu_ayari!=255.0)
          Menu_ayari+=0.5;
      }

      if(buton2) //azalt
      {
        While(buton2);
        delay_ms(20);
        if(menu_ayari!=0)
          Menu_ayari-=0.5;
      }

      Set = read_adc();

      Tek_hesap = (float)((1.0*set)/10);

      Printf(lcd_putc,"\fset: %0.2f", tek_hesap);

      if(menu_ayari < tek_hesap)
      {
        // blok1
      }
      Else
      {
         // blok 2
      }
   }
}

Zakkum2014