Gravity on Android

Hello folks, I need help for something. I got an android game in which gravity change depending how you tilt the phone. I managed to get it to tilt forward, backward, and to the side.
But I can’t get it to reverse.

As shown in the image below, when I turn the phone following the arrows, I want the gravity to slowly go in reverse. So we go from the up left picture, to the right down picture.

I tried with the accelerometer, I tried with the gyroscope, but so far I lucked out.
Anyone can help? Here is my code so far

using UnityEngine;
using System.Collections;

public class GravityGyro : MonoBehaviour {

	Vector3 grav_ini;

	float tempy;
	float tempx;
	float tempz;


	public float _speed;
	public int UpDown = 0;

	void Awake () {
		Input.gyro.enabled = true;
		grav_ini = Physics.gravity;
		tempy = 0 - (float)System.Math.Round(Input.acceleration.y,1);
		tempx = 0 - (float)System.Math.Round(Input.acceleration.x,1);
		tempz = 0 - (float)System.Math.Round(Input.acceleration.z,1);


	}

	public void ResetGravity(){
		//I have a button to reset gravity should I need it
		tempy = 0 - (float)System.Math.Round(Input.acceleration.y,1);
		tempx = 0 - (float)System.Math.Round(Input.acceleration.x,1);
		tempz = 0 - (float)System.Math.Round(Input.acceleration.z,1);

		Input.gyro.enabled = true;

	}

	// Update is called once per frame
	void Update () {


		//gravity tilt
// I tested the axis one by one to see which one I needed to use where, except for the one that command Physics.gravity.y which is the one I'm stuck on
		Physics.gravity = grav_ini + (new Vector3((float)System.Math.Round(tempx + Input.acceleration.x,1),(float)System.Math.Round(tempy + Input.acceleration.y,1),(float)System.Math.Round(tempy + Input.acceleration.y,1))*_speed); 


	}

}

nevermind, a friend at school helped me

using UnityEngine;
using System.Collections;

public class GravityGyro : MonoBehaviour {

	Vector3 grav_ini;

	float tempy;
	float tempx;
	float tempz;

	float gravgyroup;
	public float _toPlafond;

	public float _speed;

	void Awake () {
		Input.gyro.enabled = true;
		Physics.gravity = new Vector3 (0,-150,0);
		grav_ini = Physics.gravity;

		tempy = 0 - (float)System.Math.Round(Input.acceleration.y,1);
		tempx = 0 - (float)System.Math.Round(Input.acceleration.x,1);
		gravgyroup = 0;



	}

	public void ResetGravity(){
		Input.gyro.enabled = true;
		Physics.gravity = new Vector3 (0,-150,0);
		grav_ini = Physics.gravity;
		tempy = 0 - (float)System.Math.Round(Input.acceleration.y,1);
		tempx = 0 - (float)System.Math.Round(Input.acceleration.x,1);
		gravgyroup = 0;


	}

	// Update is called once per frame
	void Update () {

		Debug.Log (Physics.gravity.y);


		//gravity tilt
		Physics.gravity = grav_ini + (new Vector3((float)System.Math.Round(tempx + Input.acceleration.x,1),(gravgyroup - grav_ini.y)*_toPlafond/_speed,(float)System.Math.Round(tempy + Input.acceleration.y,1))*_speed); 

		gravgyroup = ((600/360) * (float)System.Math.Round(Input.gyro.attitude.eulerAngles.z)) -300;

	}

}