Open navigation menu
Close suggestions
Search
Search
en
Change Language
Upload
Sign in
Sign in
Download free for days
0 ratings
0% found this document useful (0 votes)
25 views
6 pages
Gyro Scope
Uploaded by
aliww1935
AI-enhanced title
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here
.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
Download
Save
Save GyroScope For Later
Share
0%
0% found this document useful, undefined
0%
, undefined
Print
Embed
Report
0 ratings
0% found this document useful (0 votes)
25 views
6 pages
Gyro Scope
Uploaded by
aliww1935
AI-enhanced title
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here
.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
Carousel Previous
Carousel Next
Download
Save
Save GyroScope For Later
Share
0%
0% found this document useful, undefined
0%
, undefined
Print
Embed
Report
Download
Save GyroScope For Later
You are on page 1
/ 6
Search
Fullscreen
//Include Library
#include "Wire.h" //I2C Library
#include "I2Cdev.h"
#include "MPU6050.h" // MPU6050 Library
#include "math.h" // Math Library to use MATHS Functions
#include <Adafruit_GFX.h> //
#include <Adafruit_SSD1306.h> //OLED library
#include <Fonts/FreeMonoBoldOblique12pt7b.h>
#include <Fonts/FreeSansBold12pt7b.h>
#include <Fonts/FreeMono12pt7b.h>
MPU6050 mpu; //Creating Object for MPU6050
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int push_button1 = 3;
int push_button2 = 4;
int buzzer = 5;
int battery_input = A0;
int16_t gyroX, gyroY, gyroZ, accX, accY, accZ, mpuTemp; // Variable to collect the
raw data from MPU6050 Sensor
float CgyroX, CgyroY, CgyroZ, CaccX, CaccY, CaccZ; // Calibrated DATA variables
float Xang, Yang; // Acceleration Angle Variable
float FNXang, FOXang=0, FNYang, FOYang=0; //FILTER -->NEW-->OLD-->X or Y --
>Acceleration ANGLE
float GXang=0, GYang=0; //Gyroscope Angle Variable
float ROLL, PITCH; //X-angle || Y-angle
float ROLL_REF=0,PITCH_REF=0;
float TEMP;
boolean set_gyro_angles = false, for_referance_data = false;
int receive_count; //
int Power;
int value1,value2;
int state=0,mode=0, ref_state=1;
int buzzer_value = 150;
float dt; // Delta T --> time gap between consecutive loops
unsigned long loop_timer; // Time Variable
void setup() {
Serial.begin(9600);
pinMode(A0,INPUT);
pinMode(push_button1,INPUT);
pinMode(push_button2,INPUT);
pinMode(buzzer,OUTPUT);
mpu.initialize(); //Initializing the MPU605
OFFSET();
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
display.setTextColor(WHITE);
LOGO_DISPLAY();
loop_timer = micros() + 4000;
}
void loop() {
RAW_DATA();
ACC_ANGLE_CALCULATION();
GYRO_ANGLE_CALCULATION();
COMPLIMENTARY_FILTER();
value1 = digitalRead(push_button1);
value2 = digitalRead(push_button2);
// print data on push button toggling
while(value1 == 1 && state==0) {
analogWrite(buzzer,buzzer_value);
delay(20);
value1=digitalRead(push_button1);
analogWrite(buzzer,0);
mode=1;
}
if(mode==1) {
display.invertDisplay(false);
display.setFont();
state=1;
ROLL_DISPLAY();
}
while(value1==1 && state==1 ) {
analogWrite(buzzer,buzzer_value);
delay(20);
value1=digitalRead(push_button1);
analogWrite(buzzer,0);
mode=2;
}
if(mode==2) {
state=2;
PITCH_DISPLAY();
}
while(value1==1 && state==2 ) {
analogWrite(buzzer,buzzer_value);
delay(20);
value1=digitalRead(push_button1);
analogWrite(buzzer,0);
mode=3;
}
if(mode==3) {
state = 3;
BOTH_ROLL_AND_PITCH_DISPLAY();
}
while(value1==1 && state==3 ) {
analogWrite(buzzer,buzzer_value);
delay(20);
value1=digitalRead(push_button1);
analogWrite(buzzer,0);
mode=4;
}
if(mode == 4) {
state =4;
TEMP_DISPLAY();
}
while(value1==1 && state==4) {
analogWrite(buzzer,buzzer_value);
delay(20);
value1=digitalRead(push_button1);
analogWrite(buzzer,0);
mode=1;
}
if(value2 == 1 && ref_state == 1) {
ROLL_REF = ROLL;
PITCH_REF = PITCH;
ref_state = 0;
while(value2 == 1) {
analogWrite(buzzer,buzzer_value);
delay(20);
value2=digitalRead(push_button2);
analogWrite(buzzer,0);
}
}
if(value2 == 1 && ref_state == 0) {
ROLL_REF = 0;
PITCH_REF = 0;
ref_state = 1;
while(value2==1) {
analogWrite(buzzer,buzzer_value);
delay(20);
value2=digitalRead(push_button2);
analogWrite(buzzer,0);
}
}
//set the frequency of void loop at 250Hz
while(loop_timer > micros());
loop_timer += 4000;
dt=0.004;
}
void OFFSET() {
mpu.setXAccelOffset(-1701);
mpu.setYAccelOffset(920);
mpu.setZAccelOffset(765);
mpu.setXGyroOffset(79);
mpu.setYGyroOffset(-20);
mpu.setZGyroOffset(-67);
}
void RAW_DATA() {
mpu.getMotion6(&accX, &accY, &accZ, &gyroX, &gyroY, &gyroZ);
}
//Function to calculate the angle from the RAW Accelerometer Date
void ACC_ANGLE_CALCULATION() {
//Angle Calculation --> Arc Tangent(X-gravity/Z-gravity)*(RADIAN TO DEGREE)
Yang = -atan2(accX,accZ)*RAD_TO_DEG;
Xang = atan2(accY,accZ)*RAD_TO_DEG;
}
//Low pass filter to filter the noise coming from the disturbance
void LOW_PASS_FILTER() {
// [NEW_FILTER_DATA = a*OLD_FILTER_DATA + b*ACTUAL DATA] and [a + b = 1]
FNXang = (0.96*FOXang + 0.04*Xang); //ACCELEROMETER_ROLL
FNYang = (0.96*FOYang + 0.04*Yang); //ACCELEROMETER_PITCH
}
//To update the all previous data with new data
void UPDATE() {
//Updating the old filter value with new filter value
FOXang = FNXang;
FOYang = FNYang;
}
void GYRO_ANGLE_CALCULATION() {
// Converting the Raw Gyro Data in the range of +-250°/s
CgyroX = gyroX/131.0;
CgyroY = gyroY/131.0;
//Angle Calculation --> θ = θ + ω*Δt
GXang = GXang + CgyroX*dt - 0.0039;
GYang = GYang + CgyroY*dt + 0.00205;
}
void COMPLIMENTARY_FILTER() {
/* Gyro angle have drift but noise free and Acc angle have noise but no angle
drift. Here we are making
complementary filters with GYRO AND ACC angles.
Gyro angle only works for a short period of time because Δt becomes zero if
the sensor gets some stationary
position and works as a HIGH PASS FILTER.
While Acc angle will come out in long period or stationary system */
if(set_gyro_angles){ //If the IMU is already started
GXang = 0.94*GXang + 0.06*Xang;
GYang = 0.94*GYang + 0.06*Yang;
ROLL = GXang - ROLL_REF;
PITCH = GYang - PITCH_REF;
}
else { //At first start
GXang = Xang; //Set the gyro pitch angle equal to the accelerometer pitch
angle
GYang = Yang; //Set the gyro roll angle equal to the accelerometer roll
angle
set_gyro_angles = true; //Set the IMU started flag
}
}
void CALEBRATED_DATA() {
//To Get the GYRO DATA in the range of +-250°/s
CgyroX = gyroX/131.0;
CgyroY = gyroY/131.0;
CgyroZ = gyroZ/131.0;
//To get the ACC. DATA in the range of +-2g
CaccX = accX/16384.0;
CaccY = accY/16384.0;
CaccZ = accZ/16384.0;
}
void BOTH_ROLL_AND_PITCH_DISPLAY() {
display.clearDisplay();
// display temperature
display.setTextSize(1);
display.setCursor(0,0);
display.print("ROLL ");
display.setTextSize(2);
display.setCursor(0,10);
display.print(ROLL);
// display humidity
display.setTextSize(1);
display.setCursor(0, 35);
display.print("PITCH ");
display.setTextSize(2);
display.setCursor(0, 45);
display.print(PITCH);
BATTERY_LEVEL();
display.display();
}
void PITCH_DISPLAY() {
display.clearDisplay();
display.setFont(&FreeMono12pt7b);
display.setTextSize(1);
display.setCursor(0,25); //(35,0)
display.print("PITCH:");
display.setFont(&FreeSansBold12pt7b);
display.setTextSize(1);
display.setCursor(0, 55);
display.print(PITCH);
display.setFont();
BATTERY_LEVEL();
display.display();
}
void ROLL_DISPLAY() {
display.clearDisplay();
display.setFont(&FreeMono12pt7b);
display.setTextSize(1);
display.setCursor(0,25); //(35,0)
display.print("ROLL:");
display.setFont(&FreeSansBold12pt7b);
display.setTextSize(1);
display.setCursor(0, 55);
display.print(ROLL);
display.setFont();
BATTERY_LEVEL();
display.display();
}
void TEMP_DISPLAY() {
mpuTemp = mpu.getTemperature();
TEMP = mpuTemp/340.+36.53;
display.clearDisplay();
display.setFont(&FreeMono12pt7b);
display.setTextSize(1);
display.setCursor(0,25); //(35,0)
display.print("TEMP:");
display.setFont(&FreeSansBold12pt7b);
display.setTextSize(1);
display.setCursor(0, 55);
display.print(TEMP);
display.print(" C");
display.setFont();
BATTERY_LEVEL();
display.display();
}
void BATTERY_LEVEL() {
analogRead(battery_input);
Power = map(analogRead(battery_input), 570,860,0,100);
display.setTextSize(1);
display.setCursor(100,0);
display.print(Power);
display.print("%");
//if(Power<20)
// {
// analogWrite(buzzer,buzzer_value);
// delay(500);
// analogWrite(buzzer,0);
// delay(200);
// }
}
void LOGO_DISPLAY() {
display.invertDisplay(true);
display.setFont(&FreeMonoBoldOblique12pt7b);
display.setTextSize(1);
display.setCursor(0,25);
display.print("Spirit");
display.setCursor(50,50);
display.print("Level");
display.display();
}
You might also like
Bantam Earth Paludarium Code
PDF
No ratings yet
Bantam Earth Paludarium Code
75 pages
Rs 007
PDF
No ratings yet
Rs 007
1 page
AACVPR Guidelines For AACVPR Guidelines For Pulmonary Rehabilitation Programs (4 Edition)
PDF
No ratings yet
AACVPR Guidelines For AACVPR Guidelines For Pulmonary Rehabilitation Programs (4 Edition)
37 pages
Self-BalanceRobot Code
PDF
No ratings yet
Self-BalanceRobot Code
19 pages
Ard Volt Amp Meter
PDF
No ratings yet
Ard Volt Amp Meter
19 pages
Project 2 ESE
PDF
No ratings yet
Project 2 ESE
3 pages
Aurduino 12345
PDF
No ratings yet
Aurduino 12345
4 pages
Code
PDF
No ratings yet
Code
15 pages
Code Version 6
PDF
No ratings yet
Code Version 6
10 pages
Anchal2-50 Merged Organized
PDF
No ratings yet
Anchal2-50 Merged Organized
10 pages
Automated Hydro 5 Pumps 5-21-23
PDF
No ratings yet
Automated Hydro 5 Pumps 5-21-23
9 pages
Arduino MPU6050
PDF
No ratings yet
Arduino MPU6050
3 pages
Code
PDF
No ratings yet
Code
5 pages
Roba Robot Code
PDF
No ratings yet
Roba Robot Code
9 pages
60 Projects
PDF
No ratings yet
60 Projects
60 pages
Arduino Sensors
PDF
No ratings yet
Arduino Sensors
7 pages
1.listing Program Ardino (Pitct Terbang Keatas)
PDF
No ratings yet
1.listing Program Ardino (Pitct Terbang Keatas)
7 pages
2 Axis Gimbal Brushless With l298n
PDF
No ratings yet
2 Axis Gimbal Brushless With l298n
9 pages
Lathe Leadscrew Arduino Code
PDF
No ratings yet
Lathe Leadscrew Arduino Code
6 pages
Ád
PDF
No ratings yet
Ád
9 pages
Basis Codes
PDF
No ratings yet
Basis Codes
15 pages
Arduino Colloidal Silver Controller UPDATE
PDF
No ratings yet
Arduino Colloidal Silver Controller UPDATE
8 pages
Electronoobs
PDF
No ratings yet
Electronoobs
5 pages
Proteus Professional Simulation
PDF
No ratings yet
Proteus Professional Simulation
6 pages
Robotics
PDF
No ratings yet
Robotics
10 pages
Embedded Project
PDF
No ratings yet
Embedded Project
8 pages
دوك imu تءارق للاخ نم هنم دكاتلاو ليدعتلا لازم يبي لدعم scoop
PDF
No ratings yet
دوك imu تءارق للاخ نم هنم دكاتلاو ليدعتلا لازم يبي لدعم scoop
33 pages
Tube Tester For Measuring Va
PDF
No ratings yet
Tube Tester For Measuring Va
11 pages
Activity Ni Pispis
PDF
No ratings yet
Activity Ni Pispis
36 pages
Microprocessor and Microcontroller Final Report: "Automatic Braking System"
PDF
No ratings yet
Microprocessor and Microcontroller Final Report: "Automatic Braking System"
17 pages
Sonar Codes
PDF
No ratings yet
Sonar Codes
6 pages
Code
PDF
No ratings yet
Code
45 pages
Control
PDF
No ratings yet
Control
2 pages
Mpu6050 Raw
PDF
No ratings yet
Mpu6050 Raw
2 pages
Project Drone
PDF
0% (1)
Project Drone
10 pages
Aryan's NCSC 2025
PDF
No ratings yet
Aryan's NCSC 2025
13 pages
Digital Petrol Pump Machine Code
PDF
No ratings yet
Digital Petrol Pump Machine Code
10 pages
m4 r5 o Level Iot Practical Classes Chapter 4 Diffrent Type of Sensors and Actuators
PDF
No ratings yet
m4 r5 o Level Iot Practical Classes Chapter 4 Diffrent Type of Sensors and Actuators
15 pages
Speedometer and Blinkers Arduino Code
PDF
No ratings yet
Speedometer and Blinkers Arduino Code
9 pages
Arduino Workshoop Loe
PDF
No ratings yet
Arduino Workshoop Loe
8 pages
Underground Cable Fault
PDF
No ratings yet
Underground Cable Fault
8 pages
Flight Controller
PDF
No ratings yet
Flight Controller
30 pages
PIDtempcontrol
PDF
No ratings yet
PIDtempcontrol
3 pages
ADXL335
PDF
No ratings yet
ADXL335
7 pages
This Instructable Will Show You How To Make A Portable Digital Optical Tachometer Using An Arduino Uno
PDF
No ratings yet
This Instructable Will Show You How To Make A Portable Digital Optical Tachometer Using An Arduino Uno
18 pages
BSM (Blind Spot Monitoring)
PDF
No ratings yet
BSM (Blind Spot Monitoring)
3 pages
ساخت مولتی متر توسط آردوینو
PDF
No ratings yet
ساخت مولتی متر توسط آردوینو
15 pages
Gyroscope LED Controller STM32F407 Discovery
PDF
No ratings yet
Gyroscope LED Controller STM32F407 Discovery
21 pages
New Microsoft Word Document
PDF
No ratings yet
New Microsoft Word Document
22 pages
Tài Liệu Văn Bản Mới
PDF
No ratings yet
Tài Liệu Văn Bản Mới
10 pages
AD9850 Waveform Generator
PDF
No ratings yet
AD9850 Waveform Generator
9 pages
Pemograman
PDF
No ratings yet
Pemograman
2 pages
Message
PDF
No ratings yet
Message
6 pages
SWR
PDF
No ratings yet
SWR
17 pages
Iot Lab Experiments
PDF
No ratings yet
Iot Lab Experiments
16 pages
PID Control MAX6675 Thermocouple Arduino Schematic With Rotary Encoder
PDF
100% (1)
PID Control MAX6675 Thermocouple Arduino Schematic With Rotary Encoder
13 pages
Lab Reports Inst and Control Lab
PDF
No ratings yet
Lab Reports Inst and Control Lab
12 pages
Code
PDF
No ratings yet
Code
6 pages
Nhom8 Doline Tranhvatcan
PDF
No ratings yet
Nhom8 Doline Tranhvatcan
7 pages
Untitled
PDF
No ratings yet
Untitled
5 pages
Notes 241112 162915
PDF
No ratings yet
Notes 241112 162915
2 pages
Projects With Microcontrollers And PICC
From Everand
Projects With Microcontrollers And PICC
Guillermo Perez Guillen
5/5 (1)
Ancient Egypt Bloom Activities
PDF
No ratings yet
Ancient Egypt Bloom Activities
1 page
Spec Trod Ens
PDF
No ratings yet
Spec Trod Ens
4 pages
Fairy Tale NATIONAL Mermaid Story
PDF
No ratings yet
Fairy Tale NATIONAL Mermaid Story
8 pages
Verbal Tenses Review 1st Term ANSWER KEY
PDF
No ratings yet
Verbal Tenses Review 1st Term ANSWER KEY
2 pages
2010 DG Challenger
PDF
No ratings yet
2010 DG Challenger
14 pages
University of Perpetual Help System DALTA
PDF
No ratings yet
University of Perpetual Help System DALTA
185 pages
PIAT-RNU Reliability Review
PDF
No ratings yet
PIAT-RNU Reliability Review
15 pages
Least Squares & Pseudo Inverse
PDF
No ratings yet
Least Squares & Pseudo Inverse
12 pages
(Ebook) Cause and Correlation in Biology: A User's Guide To Path Analysis, Structural Equations and Causal Inference by Bill Shipley ISBN 9780521529211, 0521529212 PDF Download
PDF
No ratings yet
(Ebook) Cause and Correlation in Biology: A User's Guide To Path Analysis, Structural Equations and Causal Inference by Bill Shipley ISBN 9780521529211, 0521529212 PDF Download
54 pages
Polysafe Strata Product Spec
PDF
No ratings yet
Polysafe Strata Product Spec
1 page
Law Enforcement Organization and Administration 1 1
PDF
100% (1)
Law Enforcement Organization and Administration 1 1
135 pages
Functional Level Strategy of Starbucks
PDF
No ratings yet
Functional Level Strategy of Starbucks
25 pages
ATHE Level 6 Diploma in Business Management (120 Credits)
PDF
0% (1)
ATHE Level 6 Diploma in Business Management (120 Credits)
4 pages
The Composite Steel Reinforced Concrete Column Under Axial and Seismic Loads: A Review
PDF
No ratings yet
The Composite Steel Reinforced Concrete Column Under Axial and Seismic Loads: A Review
19 pages
Cell Organelle Chart-1
PDF
No ratings yet
Cell Organelle Chart-1
4 pages
Traducción Del Libro Java-HOW TO PROGRAM - Ninth Edition-2012 - Paul & Harvel Deitel
PDF
No ratings yet
Traducción Del Libro Java-HOW TO PROGRAM - Ninth Edition-2012 - Paul & Harvel Deitel
2 pages
CUCOH 2013 Executive Application
PDF
No ratings yet
CUCOH 2013 Executive Application
4 pages
Banking Theory Law and Practice
PDF
No ratings yet
Banking Theory Law and Practice
17 pages
Panel Cybercat - 50
PDF
No ratings yet
Panel Cybercat - 50
6 pages
Guidelines For Filling-Up The Post Graduate Application Form
PDF
No ratings yet
Guidelines For Filling-Up The Post Graduate Application Form
2 pages
Monitoring Sheet MR Sia Opv Campaign Final 2023 Doc Grace
PDF
No ratings yet
Monitoring Sheet MR Sia Opv Campaign Final 2023 Doc Grace
12 pages
ATHLON Brochure
PDF
No ratings yet
ATHLON Brochure
75 pages
Group 2: Topic: Industry Analysis of Akij Food and Beverage
PDF
No ratings yet
Group 2: Topic: Industry Analysis of Akij Food and Beverage
39 pages
4ME Brochure Update V2657
PDF
No ratings yet
4ME Brochure Update V2657
12 pages
ACC4210 Module Handbook 2014
PDF
No ratings yet
ACC4210 Module Handbook 2014
11 pages
Unit One
PDF
No ratings yet
Unit One
14 pages
Memory Addressing and Instruction Formats
PDF
No ratings yet
Memory Addressing and Instruction Formats
9 pages
Food Ordering Management System Project
PDF
No ratings yet
Food Ordering Management System Project
6 pages