kadirakkus9
Üye
- Katılım
- 8 Eyl 2021
- Mesajlar
- 10
- Puanları
- 1
- Yaş
- 29
Merhaba Arkadaşlar
16F628A İle Hx711 Modülü İle Loadcell Verilerini Okuyorum. Aşağıda Çalışma Kodlarım İle Verileri Okuyabiliyorum. Ancak Programı Kapatıp Açtığımda Veriler Sıfırlanıyor.
Yani ;
Ağırlık Sensörü Üzerinde Diyelim 5Kg Ağırlık Var. Üzerinde Ağırlık Var İken Pici Kapatıyorum ve Tekrar Açıyorum. Bu Durumda Ağırlık Sensörü Verileri Sıfırlanmış Oluyor ve Üzerinde Bulunan 5KG Ağırlığı Görmüyor. Benim İstediğim Üzerinde 5kg Ağırlık Varsa Pici Kapatıp Açtığımız Zaman Üzerinde 5KG Ağırlığı Görmeye Devam Etsin İstiyorum. Bu Konuda Yardımcı Olabilir misiniz ?
#include <16f628a.h>
#fuses intrc_io,nocpd,noprotect,nomclr
#use delay(clock=4M)
#include<LCD420.c>
#define TeraziGiris pin_a1
#define TeraziCikis pin_a0
unsigned int32 OkunanAgirlik = 0, TeraziOkuGelenDeger = 0, Agirlik = 0;
unsigned int32 LoadCellOku(void)
{
unsigned int32 OkunanDeger;
unsigned int8 j;
output_bit(TeraziGiris, 1);
output_bit(TeraziCikis, 0);
OkunanDeger = 0;
while (input(TeraziGiris));
for (j = 0; j < 24; j++)
{
output_bit(TeraziCikis, 1);
OkunanDeger = OkunanDeger << 1;
output_bit(TeraziCikis, 0);
if (input(TeraziGiris))
{
OkunanDeger++;
}
}
output_bit(TeraziCikis, 1);
OkunanDeger = OkunanDeger ^ 0x800000;
output_bit(TeraziCikis, 0);
return OkunanDeger;
}
void main()
{
TeraziOkuGelenDeger = LoadCellOku(); //TERAZİYİ OKUYORUZ
delay_ms(50);
while(true)
{
delay_ms(10);
OkunanAgirlik = LoadCellOku();
if (TeraziOkuGelenDeger >= OkunanAgirlik)
{
unsigned int32 val1 = (TeraziOkuGelenDeger - OkunanAgirlik);
Agirlik = val1;
}
else
{
unsigned int32 val2 = (OkunanAgirlik - TeraziOkuGelenDeger);
Agirlik = val2;
}
printf(lcd_putc, "\f");
printf(lcd_putc, "BASKI : %ld", Agirlik/10000);
}
}
16F628A İle Hx711 Modülü İle Loadcell Verilerini Okuyorum. Aşağıda Çalışma Kodlarım İle Verileri Okuyabiliyorum. Ancak Programı Kapatıp Açtığımda Veriler Sıfırlanıyor.
Yani ;
Ağırlık Sensörü Üzerinde Diyelim 5Kg Ağırlık Var. Üzerinde Ağırlık Var İken Pici Kapatıyorum ve Tekrar Açıyorum. Bu Durumda Ağırlık Sensörü Verileri Sıfırlanmış Oluyor ve Üzerinde Bulunan 5KG Ağırlığı Görmüyor. Benim İstediğim Üzerinde 5kg Ağırlık Varsa Pici Kapatıp Açtığımız Zaman Üzerinde 5KG Ağırlığı Görmeye Devam Etsin İstiyorum. Bu Konuda Yardımcı Olabilir misiniz ?
#include <16f628a.h>
#fuses intrc_io,nocpd,noprotect,nomclr
#use delay(clock=4M)
#include<LCD420.c>
#define TeraziGiris pin_a1
#define TeraziCikis pin_a0
unsigned int32 OkunanAgirlik = 0, TeraziOkuGelenDeger = 0, Agirlik = 0;
unsigned int32 LoadCellOku(void)
{
unsigned int32 OkunanDeger;
unsigned int8 j;
output_bit(TeraziGiris, 1);
output_bit(TeraziCikis, 0);
OkunanDeger = 0;
while (input(TeraziGiris));
for (j = 0; j < 24; j++)
{
output_bit(TeraziCikis, 1);
OkunanDeger = OkunanDeger << 1;
output_bit(TeraziCikis, 0);
if (input(TeraziGiris))
{
OkunanDeger++;
}
}
output_bit(TeraziCikis, 1);
OkunanDeger = OkunanDeger ^ 0x800000;
output_bit(TeraziCikis, 0);
return OkunanDeger;
}
void main()
{
TeraziOkuGelenDeger = LoadCellOku(); //TERAZİYİ OKUYORUZ
delay_ms(50);
while(true)
{
delay_ms(10);
OkunanAgirlik = LoadCellOku();
if (TeraziOkuGelenDeger >= OkunanAgirlik)
{
unsigned int32 val1 = (TeraziOkuGelenDeger - OkunanAgirlik);
Agirlik = val1;
}
else
{
unsigned int32 val2 = (OkunanAgirlik - TeraziOkuGelenDeger);
Agirlik = val2;
}
printf(lcd_putc, "\f");
printf(lcd_putc, "BASKI : %ld", Agirlik/10000);
}
}