atmega328 code ..

i don't know what is wrong

this code already made in arduino sketch

but i have to use avrstudio

that's why make code avrstudio but what is wrong?

plz help me

/*

  • airbag.c
  • Created: 2020-05-14 오후 6:54:33
  • Author: KMJ
    */

#define num 20

#include <Wire.h>
#include <I2Cdev.h>
#include <Servo.h>

#define MPU6050_AXOFFSET 158
#define MPU6050_AYOFFSET 9
#define MPU6050_AZOFFSET -91
#define MPU6050_GXOFFSET 19
#define MPU6050_GYOFFSET -42
#define MPU6050_GZOFFSET -26

Servo servo;

long sampling_timer;
const int MPU_addr = 0x68; // I2C address of the MPU-6050
int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;
float GAcX, GAcY, GAcZ; // Convert accelerometer to gravity value
float Cal_GyX,Cal_GyY,Cal_GyZ;

float acc_roll, acc_pitch, acc_yaw; // Pitch, Roll & Yaw from Accelerometer

float angle_roll, angle_roll_pre, angle_pitch, angle_pitch_pre, angle_yaw; // Angle of Pitch, Roll, & Yaw
float alpha = 0.96; // Complementary constant

float sv_x[num], sv_y[num], sv_z[num], s_r[num];//, s_da_x[num], s_da_y[num];
float fv_x, fv_y, fv_z, fv_r;//, fv_da_x, fv_da_y;

int value = 0;

//////////////////////////////////////////////////////////////////////////////////////////

const float ts = 0.001*0.001;
unsigned long tCount = 0;
unsigned long tCountPre = 0;

#include <avr/io.h>

int main(void)
{
Wire.begin();

servo.attach(9);
init_MPU6050();

Serial.begin(115200);

while(1)
{

// Read raw data of MPU6050
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr, 14, true); // request a total of 14 registers
AcX = Wire.read() << 8 | Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY = Wire.read() << 8 | Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ = Wire.read() << 8 | Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
Tmp = Wire.read() << 8 | Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
GyX = Wire.read() << 8 | Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
GyY = Wire.read() << 8 | Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
GyZ = Wire.read() << 8 | Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)

AcX -= MPU6050_AXOFFSET;
AcY -= MPU6050_AYOFFSET;
AcZ -= MPU6050_AZOFFSET;
GyX -= MPU6050_GXOFFSET;
GyY -= MPU6050_GXOFFSET;
GyZ -= MPU6050_GXOFFSET;

// Convert accelerometer to gravity value

GAcX = (float) AcX / 4096.0;
GAcY = (float) AcY / 4096.0;
GAcZ = (float) AcZ / 4096.0;

// Calculate Pitch, Roll & Yaw from Accelerometer value
acc_pitch = atan ((GAcY - (float)MPU6050_AYOFFSET/4096.0) / sqrt(GAcX * GAcX + GAcZ * GAcZ)) * 57.29577951; // 180 / PI = 57.29577951
acc_roll = - atan ((GAcX - (float)MPU6050_AXOFFSET/4096.0) / sqrt(GAcY * GAcY + GAcZ * GAcZ)) * 57.29577951;
//acc_yaw = atan ((GAcZ - (float)MPU6050_AZOFFSET/4096.0) / sqrt(GAcX * GAcX + GAcZ * GAcZ)) * 57.29577951;
acc_yaw = atan (sqrt(GAcX * GAcX + GAcZ * GAcZ) / (GAcZ - (float)MPU6050_AZOFFSET/4096.0)) * 57.29577951;

angle_pitch = alpha * (((float)(GyY - MPU6050_GYOFFSET) * 0.000244140625) + angle_pitch) + (1 - alpha) * acc_pitch;
angle_roll = alpha * (((float)(GyX - MPU6050_GXOFFSET) * 0.000244140625) + angle_roll) + (1 - alpha) * acc_roll;
angle_yaw += (float)(GyZ - MPU6050_GZOFFSET) * 0.000244140625; // Accelerometer doesn't have yaw value

for (int i = 0; i < num - 1; i++)
{
sv_x = sv_x[i + 1];
sv_y = sv_y[i + 1];
sv_z = sv_z[i + 1];
s_r = s_r[i + 1];

}

sv_x[num - 1] = AcX;
sv_y[num - 1] = AcY;
sv_z[num - 1] = AcZ;
s_r[num - 1] = (sqrt(fv_z * fv_z + fv_y * fv_y));

for (int i = 0; i < num; i++)
{
fv_x += sv_x;
fv_y += sv_y;
fv_z += sv_z;
fv_r += s_r;
// fv_da_x += s_da_x;
// fv_da_y += s_da_y;
}
fv_x /= num;
fv_y /= num;
fv_z /= num;
fv_r /= num;
// fv_da_x /= num;
// fv_da_y /= num;

mpu6050_result_acc();

Serial.print(" result_acc = "); Serial.println((sqrt(fv_z * fv_z + fv_y * fv_y)));

// Sampling Timer

while (micros() - sampling_timer < 4000); //
sampling_timer = micros(); //Reset the sampling timer
//TODO:: Please write your application code
}
}

void mpu6050_result_acc()
{
if (( sqrt(fv_z * fv_z + fv_y * fv_y) > 25000 ))
{ value = 60; servo.write(value); }
}
/*
void mpu6050_angle_yaw()
{
if (( angle_yaw > 15000 ))
{ value = 60; servo.write(value); }

if (( angle_yaw < -15000 ))
{ value = 60; servo.write(value); }
}

void mpu6050_acc_y()
{
if (( fv_y > 15000 ))
{ value = 60; servo.write(value); }

if (( fv_y < -15000 ))
{ value = 60; servo.write(value); }
}

void mpu6050_result_angle()
{
if ((fv_xcos(angle_roll)+fv_ysin(angle_pitch))> 500 )
{ value = 60; servo.write(value); }
}

*/

void init_MPU6050() {
//MPU6050 Initializing & Reset
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); // PWR_MGMT_1 register
Wire.write(0); // set to zero (wakes up the MPU-6050)
Wire.endTransmission(true);

//MPU6050 Clock Type
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); // PWR_MGMT_1 register
Wire.write(0x03); // Selection Clock 'PLL with Z axis gyroscope reference'
Wire.endTransmission(true);

//MPU6050 Gyroscope Configuration Setting
Wire.beginTransmission(MPU_addr);
Wire.write(0x1B); // Gyroscope Configuration register
Wire.write(0x00); // FS_SEL=0, Full Scale Range = +/- 250 [degree/sec]
//Wire.write(0x08); // FS_SEL=1, Full Scale Range = +/- 500 [degree/sec]
//Wire.write(0x10); // FS_SEL=2, Full Scale Range = +/- 1000 [degree/sec]
//Wire.write(0x18); // FS_SEL=3, Full Scale Range = +/- 2000 [degree/sec]
Wire.endTransmission(true);

//MPU6050 Accelerometer Configuration Setting
Wire.beginTransmission(MPU_addr);
Wire.write(0x1C); // Accelerometer Configuration register
Wire.write(0x00); // AFS_SEL=0, Full Scale Range = +/- 2 [g]
//Wire.write(0x08); // AFS_SEL=1, Full Scale Range = +/- 4 [g]
//Wire.write(0x10); // AFS_SEL=2, Full Scale Range = +/- 8 [g]
//Wire.write(0x18); // AFS_SEL=3, Full Scale Range = +/- 10 [g]
Wire.endTransmission(true);

//MPU6050 DLPF(Digital Low Pass Filter)
Wire.beginTransmission(MPU_addr);
Wire.write(0x1A); // DLPF_CFG register
Wire.write(0x00); // Accel BW 260Hz, Delay 0ms / Gyro BW 256Hz, Delay 0.98ms, Fs 8KHz
//Wire.write(0x01); // Accel BW 184Hz, Delay 2ms / Gyro BW 188Hz, Delay 1.9ms, Fs 1KHz
//Wire.write(0x02); // Accel BW 94Hz, Delay 3ms / Gyro BW 98Hz, Delay 2.8ms, Fs 1KHz
//Wire.write(0x03); // Accel BW 44Hz, Delay 4.9ms / Gyro BW 42Hz, Delay 4.8ms, Fs 1KHz
//Wire.write(0x04); // Accel BW 21Hz, Delay 8.5ms / Gyro BW 20Hz, Delay 8.3ms, Fs 1KHz
//Wire.write(0x05); // Accel BW 10Hz, Delay 13.8ms / Gyro BW 10Hz, Delay 13.4ms, Fs 1KHz
//Wire.write(0x06); // Accel BW 5Hz, Delay 19ms / Gyro BW 5Hz, Delay 18.6ms, Fs 1KHz
Wire.endTransmission(true);
}

Do we get a clue?
What does "wrong" mean in this context?

Can we expect code tags?

u mean this one?

airbag_test2.c (10.2 KB)

I meant "What does "wrong" mean in this context?"

That would be a clue.

i have a error

hm..

Error 1 Wire.h: No such file or directory C:\Users\Ryzen\Desktop- _- ;;\avrstudio\200514_avrtest\airbag_test2\airbag_test2\airbag_test2.c 10 18 airbag_test2

this one is error messege

what should i do..

Avrstudio doesn't know where the Arduino libraries are.

so how to use arduino library header file in avrstudio..

how to change arduino code to avr code

#define num 20

#include <Wire.h>
#include <I2Cdev.h>
#include <Servo.h>

#define MPU6050_AXOFFSET 158
#define MPU6050_AYOFFSET 9
#define MPU6050_AZOFFSET -91
#define MPU6050_GXOFFSET 19
#define MPU6050_GYOFFSET -42
#define MPU6050_GZOFFSET -26

Servo servo;

long sampling_timer;
const int MPU_addr = 0x68; // I2C address of the MPU-6050
int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;
float GAcX, GAcY, GAcZ; // Convert accelerometer to gravity value
float Cal_GyX,Cal_GyY,Cal_GyZ;

float acc_roll, acc_pitch, acc_yaw; // Pitch, Roll & Yaw from Accelerometer

float angle_roll, angle_roll_pre, angle_pitch, angle_pitch_pre, angle_yaw; // Angle of Pitch, Roll, & Yaw
float alpha = 0.96; // Complementary constant

float sv_x[num], sv_y[num], sv_z[num], s_r[num];//, s_da_x[num], s_da_y[num];
float fv_x, fv_y, fv_z, fv_r;//, fv_da_x, fv_da_y;

int value = 0;

//////////////////////////////////////////////////////////////////////////////////////////

const float ts = 0.001*0.001;
unsigned long tCount = 0;
unsigned long tCountPre = 0;

void setup() {
Wire.begin();

servo.attach(9);
init_MPU6050();

Serial.begin(115200);
}

void mpu6050_result_acc()
{
if (( sqrt(fv_z * fv_z + fv_y * fv_y) > 25000 ))
{ value = 60; servo.write(value); }
}

void loop() {

// Read raw data of MPU6050
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr, 14, true); // request a total of 14 registers
AcX = Wire.read() << 8 | Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY = Wire.read() << 8 | Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ = Wire.read() << 8 | Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
Tmp = Wire.read() << 8 | Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
GyX = Wire.read() << 8 | Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
GyY = Wire.read() << 8 | Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
GyZ = Wire.read() << 8 | Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)

AcX -= MPU6050_AXOFFSET;
AcY -= MPU6050_AYOFFSET;
AcZ -= MPU6050_AZOFFSET;
GyX -= MPU6050_GXOFFSET;
GyY -= MPU6050_GXOFFSET;
GyZ -= MPU6050_GXOFFSET;

// Convert accelerometer to gravity value

GAcX = (float) AcX / 4096.0;
GAcY = (float) AcY / 4096.0;
GAcZ = (float) AcZ / 4096.0;

// Calculate Pitch, Roll & Yaw from Accelerometer value
acc_pitch = atan ((GAcY - (float)MPU6050_AYOFFSET/4096.0) / sqrt(GAcX * GAcX + GAcZ * GAcZ)) * 57.29577951; // 180 / PI = 57.29577951
acc_roll = - atan ((GAcX - (float)MPU6050_AXOFFSET/4096.0) / sqrt(GAcY * GAcY + GAcZ * GAcZ)) * 57.29577951;
//acc_yaw = atan ((GAcZ - (float)MPU6050_AZOFFSET/4096.0) / sqrt(GAcX * GAcX + GAcZ * GAcZ)) * 57.29577951;
acc_yaw = atan (sqrt(GAcX * GAcX + GAcZ * GAcZ) / (GAcZ - (float)MPU6050_AZOFFSET/4096.0)) * 57.29577951;

// Calculate Pitch, Roll & Yaw from Gyroscope value reflected cumulative time factor
// Cal_GyX += (float)(GyX - MPU6050_GXOFFSET) * 0.000244140625; // 2^15 / 2000 = 16.384, 250Hz, 1 /(250Hz * 16.384LSB)
// Cal_GyY += (float)(GyY - MPU6050_GYOFFSET) * 0.000244140625; // 2^15 / 2000 = 16.384, 250Hz, 1 /(250Hz * 16.384LSB)
// Cal_GyZ += (float)(GyZ - MPU6050_GZOFFSET) * 0.000244140625; // 2^15 / 2000 = 16.384, 250Hz, 1 /(250Hz * 16.384LSB)

angle_pitch = alpha * (((float)(GyY - MPU6050_GYOFFSET) * 0.000244140625) + angle_pitch) + (1 - alpha) * acc_pitch;
angle_roll = alpha * (((float)(GyX - MPU6050_GXOFFSET) * 0.000244140625) + angle_roll) + (1 - alpha) * acc_roll;
angle_yaw += (float)(GyZ - MPU6050_GZOFFSET) * 0.000244140625; // Accelerometer doesn't have yaw value

for (int i = 0; i < num - 1; i++)
{
sv_x = sv_x[i + 1];
sv_y = sv_y[i + 1];
sv_z = sv_z[i + 1];
s_r = s_r[i + 1];
// s_da_x = s_da_x[i + 1];
// s_da_y = s_da_y[i + 1];
* }*
* sv_x[num - 1] = AcX;
sv_y[num - 1] = AcY;
sv_z[num - 1] = AcZ;
s_r[num - 1] = (sqrt(fv_z * fv_z + fv_y * fv_y));
// s_da_x[num - 1] = dot_ap_x;
// s_da_y[num - 1] = dot_ap_y;
_ for (int i = 0; i < num; i++)
{_

fv_x += sv_x;
fv_y += sv_y;
fv_z += sv_z;
fv_r += s_r;
_ }_
fv_x /= num;
fv_y /= num;
fv_z /= num;
fv_r /= num;
mpu6050_result_acc();*

Serial.print(" result_acc = "); Serial.println((sqrt(fv_z * fv_z + fv_y * fv_y)));

* while (micros() - sampling_timer < 4000); //
sampling_timer = micros(); //Reset the sampling timer*

}
void init_MPU6050() {
* //MPU6050 Initializing & Reset*
* Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); // PWR_MGMT_1 register*

* Wire.write(0); // set to zero (wakes up the MPU-6050)*
* Wire.endTransmission(true);*
* //MPU6050 Clock Type*
* Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); // PWR_MGMT_1 register*

* Wire.write(0x03); // Selection Clock 'PLL with Z axis gyroscope reference'*
* Wire.endTransmission(true);*
* //MPU6050 Gyroscope Configuration Setting*
* Wire.beginTransmission(MPU_addr);
_ Wire.write(0x1B); // Gyroscope Configuration register*
* Wire.write(0x00); // FS_SEL=0, Full Scale Range = +/- 250 [degree/sec]
//Wire.write(0x08); // FS_SEL=1, Full Scale Range = +/- 500 [degree/sec]
//Wire.write(0x10); // FS_SEL=2, Full Scale Range = +/- 1000 [degree/sec]
//Wire.write(0x18); // FS_SEL=3, Full Scale Range = +/- 2000 [degree/sec]*

* Wire.endTransmission(true);
//MPU6050 Accelerometer Configuration Setting*

* Wire.beginTransmission(MPU_addr);*
* Wire.write(0x1C); // Accelerometer Configuration register*
* Wire.write(0x00); // AFS_SEL=0, Full Scale Range = +/- 2 [g]
//Wire.write(0x08); // AFS_SEL=1, Full Scale Range = +/- 4 [g]
//Wire.write(0x10); // AFS_SEL=2, Full Scale Range = +/- 8 [g]
//Wire.write(0x18); // AFS_SEL=3, Full Scale Range = +/- 10 [g]*

* Wire.endTransmission(true);
//MPU6050 DLPF(Digital Low Pass Filter)_

Wire.beginTransmission(MPU_addr);
Wire.write(0x1A); // DLPF_CFG register*

* Wire.write(0x00); // Accel BW 260Hz, Delay 0ms / Gyro BW 256Hz, Delay 0.98ms, Fs 8KHz*
* //Wire.write(0x01); // Accel BW 184Hz, Delay 2ms / Gyro BW 188Hz, Delay 1.9ms, Fs 1KHz*
* //Wire.write(0x02); // Accel BW 94Hz, Delay 3ms / Gyro BW 98Hz, Delay 2.8ms, Fs 1KHz*
* //Wire.write(0x03); // Accel BW 44Hz, Delay 4.9ms / Gyro BW 42Hz, Delay 4.8ms, Fs 1KHz*
* //Wire.write(0x04); // Accel BW 21Hz, Delay 8.5ms / Gyro BW 20Hz, Delay 8.3ms, Fs 1KHz*
* //Wire.write(0x05); // Accel BW 10Hz, Delay 13.8ms / Gyro BW 10Hz, Delay 13.4ms, Fs 1KHz*
* //Wire.write(0x06); // Accel BW 5Hz, Delay 19ms / Gyro BW 5Hz, Delay 18.6ms, Fs 1KHz*
* Wire.endTransmission(true);*
}

Is there a forum for AVR Studio? Maybe here: https://www.avrfreaks.net/forum

What do you mean by "avr code"?

What development environment do you want to use to compile this code ?
Why not use the Arduino IDE ? If you don't, you may have trouble finding equivalent libraries e.g Servo.h

use avrstudio5

but make code in arduino sketch

avrcode meaning how to use this code in avrstudio ㅠㅠ

my code made in arduino sketch

Duplicate post here. Do not cross post.

@kmjll2l

See how much of peoples time you wasted with two topics the same.
Continued cross posting could result in a time out from the forum.

TOPIC MERGED.

Could you take a few moments to Learn How To Use The Forum.
Other general help and troubleshooting advice can be found here.
It will help you get the best out of the forum.