diff --git a/example/src/main.rs b/example/src/main.rs
index 6e71dd894baea94ab2557e82e176903fc6e7f66b..ed4da9390de366c50fa1439b5d11a9a1d95efbcb 100644
--- a/example/src/main.rs
+++ b/example/src/main.rs
@@ -9,6 +9,7 @@ fn main() {
     writeln!(UART, "Hello from Rust\r").unwrap();
     
     let display = Display::open();
+    let light = LightSensor::start();
     for t in 0..Display::W {
         display.clear(Color::yellow());
         display.print(160 - t, 10, b"Hello Rust\0", Color::white(), Color::black());
@@ -29,6 +30,7 @@ fn main() {
         if b.right_top() {
             display.print(80, 30, b"Reset\0", Color::red(), Color::black());
         }
+        writeln!(UART, "Light: {:?}\r", light.get());
         
         display.update();
     }
diff --git a/l0dable/src/lib.rs b/l0dable/src/lib.rs
index 84db08e6d1bd8e1f4d63975fe172fda69b5bf8c6..05f646fdc3a94ca650c593b6bd155a8961c75723 100644
--- a/l0dable/src/lib.rs
+++ b/l0dable/src/lib.rs
@@ -67,9 +67,10 @@ mod display;
 pub use display::{Display, Color, LineStyle};
 mod buttons;
 pub use buttons::Buttons;
-
 pub mod uart;
 pub const UART: uart::Uart = uart::Uart;
+mod light_sensor;
+pub use light_sensor::LightSensor;
 
 pub fn exit(ret: i32) -> ! {
     unsafe {
diff --git a/l0dable/src/light_sensor.rs b/l0dable/src/light_sensor.rs
new file mode 100644
index 0000000000000000000000000000000000000000..cfe2dfc6d21d8d1d8643bb9145af2d1cdb19d0ad
--- /dev/null
+++ b/l0dable/src/light_sensor.rs
@@ -0,0 +1,27 @@
+use super::bindings::*;
+
+pub struct LightSensor;
+
+impl LightSensor {
+    pub fn start() -> Self {
+        if unsafe { epic_light_sensor_run() } != 0 {
+            panic!("Cannot start light sensor");
+        }
+        LightSensor
+    }
+
+    pub fn get(&self) -> Option<u16> {
+        let mut result = 0;
+        if unsafe { epic_light_sensor_get(&mut result) } == 0 {
+            Some(result)
+        } else {
+            None
+        }
+    }
+}
+
+impl Drop for LightSensor {
+    fn drop(&mut self) {
+        unsafe { epic_light_sensor_stop(); }
+    }
+}