diff --git a/rkanoid/src/main.rs b/rkanoid/src/main.rs
index a047ef0ac3d5ae575a54cad7de8bba1501dba691..182e81caf2ee86a857022139377cd9090ab9d290 100644
--- a/rkanoid/src/main.rs
+++ b/rkanoid/src/main.rs
@@ -165,6 +165,8 @@ enum GameResult {
 fn game(level: u16, mut score: u32) -> GameResult {
     let start_time = Seconds::time();
     let display = Display::open();
+    let accel = BHI160::<Accelerometer>::start().unwrap();
+    let mut accel_x = 0;
 
     let mut paddle = Display::W / 2;
     let paddle_size = 18 - (2 * level).min(14);
@@ -173,17 +175,25 @@ fn game(level: u16, mut score: u32) -> GameResult {
     let mut ball_direction = Direction::UR;
     let mut blocks = Blocks::generate((0x3F + 0x10 * level).min(0xff) as u8);
     for tick in 0.. {
+        for data in &accel.read().unwrap() {
+            accel_x = (17.0 * data.get_x()) as i32;
+        }
         let input = Buttons::read();
         let old_paddle = paddle;
         if input.left_bottom() {
-            paddle -= PADDLE_SPEED;
-            paddle = paddle.max(paddle_size);
+            paddle = paddle.saturating_sub(PADDLE_SPEED);
         }
         if input.right_bottom() {
             paddle += PADDLE_SPEED;
-            paddle = paddle.min(Display::W - paddle_size)
         }
-        let paddle_moving = paddle != old_paddle;
+        if accel_x < 0 {
+            paddle = paddle.saturating_sub(-accel_x as u16);
+        } else if accel_x > 0 {
+            paddle += accel_x as u16;
+        }
+        paddle = paddle
+            .max(paddle_size)
+            .min(Display::W - paddle_size);
         if input.left_top() {
             exit(0);
         }
@@ -210,10 +220,10 @@ fn game(level: u16, mut score: u32) -> GameResult {
                 ball_x >= paddle - paddle_size &&
                 ball_x <= paddle + paddle_size {
                     // Bounce on paddle
-                    if paddle_moving && input.left_bottom() {
+                    if paddle < old_paddle {
                         ball_direction = Direction::UL;
                         vibra::vibrate(50);
-                    } else if paddle_moving && input.right_bottom() {
+                    } else if paddle > old_paddle {
                         ball_direction = Direction::UR;
                         vibra::vibrate(50);
                     } else {