Bildirim
ekrana gelen verilerin ortalaması
Daha Fazla
Bu Konudaki Kullanıcılar:
Daha Az
2 Misafir - 2 Masaüstü
Giriş
Mesaj
-
-
Gelen verilerin istediklerinizi bir değişkende tutacaksınız daha sonra değişkenleri toplayıp 2 ye böleceksiniz. -
Yazdığınız kodları paylaşırsanız çözümler önerilebilir diğer türlü alacağınzı cevap;
10 tane değeri toplayın sonra 10'a bölün çıkan sonuç istediğiniz ortalama değer olacaktır. -
ccs c ile yazdım. ilk kod bu
#include <16f877A.h>
#device ADC=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(crystal=8MHz)
#use I2C(master, sda=PIN_d0, scl=PIN_d1, slow) //i2c ayarlari yapılıyor.
#define LCD_RS_PIN PIN_B4
#define LCD_RW_PIN PIN_B5
#define LCD_ENABLE_PIN PIN_B6
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#define LCD_DATA_PORT getenv("SFR:PORTD")
#include "MPU6050.C"
#include <lcd.c>
#include <math.h>
signed int8 A_data[6];
signed int8 temp_data[2];
signed int8 G_data[6];
signed int16 Xa=0,Ya=0,Za=0;
signed int16 temp=0;
signed int16 Xg=0,Yg=0,Zg=0;
void main()
{
set_tris_a(0x00); //(0b00000000);
delay_ms(2);
lcd_init();
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"BUHARI");
lcd_gotoxy(1,2);
printf(lcd_putc,"ELEKTRONIK");
delay_ms(100);
mpu6050_init();
delay_ms(100);
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"MPU6050 Ivme");
lcd_gotoxy(1,2);
printf(lcd_putc,"Sensoru");
printf(lcd_putc,"\f");
while(TRUE)
{
output_toggle(pin_a0);
signed int16 acc1,acc2,acc3;
A_data[0]=mpu6050_read(0x43);//(0x3B); //X eksen(LSB) ilk byte okunuyor
A_data[1]=mpu6050_read(0x44); //X eksen(MSB) son biti okunuyor
A_data[2]=mpu6050_read(0x45); //Y eksen(LSB) ilk biti okunuyor
A_data[3]=mpu6050_read(0x46); //Y eksen(MSB) son biti okunuyor
A_data[4]=mpu6050_read(0x47); //Z eksen(LSB) ilk biti okunuyor
A_data[5]=mpu6050_read(0x48); //Z eksen(MSB) son biti okunuyor
acc1=make16(A_data[0],A_data[1]);
acc2=make16(A_data[2],A_data[3]);
acc3=make16(A_data[4],A_data[5]);
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"xa%d",A_data[0]);
lcd_gotoxy(9,1);
printf(lcd_putc,"xb%d",A_data[1]);
lcd_gotoxy(1,2);
printf(lcd_putc,"ya%d",A_data[2]);
lcd_gotoxy(9,2);
printf(lcd_putc,"yb%d",A_data[3]);
delay_ms(300);
}
}
-
Aşağıdaki örneğe benzer bir mantık işinizi görecektir.
#define ORTALAMA_ADET 10 ile ortalama almak istediğiniz değeri seçin.
sonuçlar
ortalama_a1_sonuc
ortalama_a2_sonuc
ortalama_a3_sonuc
içerisine aktarılır, sizde bu değeri LCD de görüntüleyebilirsiniz. Kısa açıklamalar zaten kod içerisinde yapıldı. Syntax hataları olabilir belki, kodları derleme imkanım olmadı.
#include <16f877A.h>
#device ADC=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(crystal=8MHz)
#use I2C(master, sda=PIN_d0, scl=PIN_d1, slow) //i2c ayarlari yapılıyor.
#define LCD_RS_PIN PIN_B4
#define LCD_RW_PIN PIN_B5
#define LCD_ENABLE_PIN PIN_B6
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#define LCD_DATA_PORT getenv("SFR:PORTD")
#include "MPU6050.C"
#include <lcd.c>
#include <math.h>
signed int8 A_data[6];
signed int8 temp_data[2];
signed int8 G_data[6];
signed int16 Xa=0,Ya=0,Za=0;
signed int16 temp=0;
signed int16 Xg=0,Yg=0,Zg=0;
#define ORTALAMA_ADET 10
int ortalama_index = 0;
float ortalama_a1 = 0;
float ortalama_a2 = 0;
float ortalama_a3 = 0;
float ortalama_a1_sonuc = 0;
float ortalama_a2_sonuc = 0;
float ortalama_a3_sonuc = 0;
void main()
{
set_tris_a(0x00); //(0b00000000);
delay_ms(2);
lcd_init();
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"BUHARI");
lcd_gotoxy(1,2);
printf(lcd_putc,"ELEKTRONIK");
delay_ms(100);
mpu6050_init();
delay_ms(100);
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"MPU6050 Ivme");
lcd_gotoxy(1,2);
printf(lcd_putc,"Sensoru");
printf(lcd_putc,"\f");
while(TRUE)
{
output_toggle(pin_a0);
signed int16 acc1,acc2,acc3;
A_data[0]=mpu6050_read(0x43);//(0x3B); //X eksen(LSB) ilk byte okunuyor
A_data[1]=mpu6050_read(0x44); //X eksen(MSB) son biti okunuyor
A_data[2]=mpu6050_read(0x45); //Y eksen(LSB) ilk biti okunuyor
A_data[3]=mpu6050_read(0x46); //Y eksen(MSB) son biti okunuyor
A_data[4]=mpu6050_read(0x47); //Z eksen(LSB) ilk biti okunuyor
A_data[5]=mpu6050_read(0x48); //Z eksen(MSB) son biti okunuyor
acc1=make16(A_data[0],A_data[1]);
acc2=make16(A_data[2],A_data[3]);
acc3=make16(A_data[4],A_data[5]);
if (ortalama_index < ORTALAMA_ADET)
{
// Ortalama adet kadar değeri topla
ortalama_a1 += (float)acc1;
ortalama_a2 += (float)acc2;
ortalama_a3 += (float)acc3;
ortalama_index++;
}
else
{
// ortalama alınacak değere ulaşıldı.
// ortalamayı hesapla
ortalama_a1_sonuc = ortalama_a1 / (float)ORTALAMA_ADET;
ortalama_a2_sonuc = ortalama_a2 / (float)ORTALAMA_ADET;
ortalama_a3_sonuc = ortalama_a3 / (float)ORTALAMA_ADET;
// bir sonraki ölçüm için değişkenleri sıfırla
ortalama_a1 = 0;
ortalama_a2 = 0;
ortalama_a3 = 0;
ortalama_index = 0;
}
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"xa%d",A_data[0]);
//-------------
// lcd yazma örneği lcd de hangi koordinata yazılacağını belirleyiniz.
lcd_gotoxy(1,1); printf(lcd_putc,"ortalama a1 %f",ortalama_a1_sonuc;
lcd_gotoxy(1,1); printf(lcd_putc,"ortalama a2 %f",ortalama_a2_sonuc;
lcd_gotoxy(1,1); printf(lcd_putc,"ortalama a3 %f",ortalama_a3_sonuc;
//-------------
lcd_gotoxy(9,1);
printf(lcd_putc,"xb%d",A_data[1]);
lcd_gotoxy(1,2);
printf(lcd_putc,"ya%d",A_data[2]);
lcd_gotoxy(9,2);
printf(lcd_putc,"yb%d",A_data[3]);
delay_ms(300);
}
}
< Bu mesaj bu kişi tarafından değiştirildi rafet32 -- 18 Mart 2020; 14:1:32 >
-
Rafet Bey dediğinizi deneyeceğim şu anda malzemeler yanımda değil. Kısa zamanda dönüş yaparım. Teşekkürler -
-
Üç satırın sonudanda parantez eksiği var. " );" Tırnaklar olmadan satır sonlarına bunları ekleyin.
Not: 3 değeride lcd_gotoxy(1,1) ile belirtilen komumunda üst üste yazacak, sizin lcd yerleşiminize bu kısmı düzenlemeniz gerekecek.
//-------------
// lcd yazma örneği lcd de hangi koordinata yazılacağını belirleyiniz.
lcd_gotoxy(1,1); printf(lcd_putc,"ortalama a1 %f",ortalama_a1_sonuc);
lcd_gotoxy(1,1); printf(lcd_putc,"ortalama a2 %f",ortalama_a2_sonuc);
lcd_gotoxy(1,1); printf(lcd_putc,"ortalama a3 %f",ortalama_a3_sonuc);
//-------------
< Bu mesaj bu kişi tarafından değiştirildi rafet32 -- 25 Mart 2020; 19:9:35 >
Sayfa:
1
Ip işlemleri
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X