-------------------------------------------------------------------------------
-- |
-- Module      :  System.Hardware.Arduino.Examples.Blink
-- Copyright   :  (c) Levent Erkok
-- License     :  BSD3
-- Maintainer  :  erkokl@gmail.com
-- Stability   :  experimental
--
-- The /hello world/ of the arduino world, blinking the led.
-------------------------------------------------------------------------------

module System.Hardware.Arduino.Examples.Blink where

import Control.Monad           (forever)
import Control.Monad.Trans     (liftIO)
import System.Hardware.Arduino

-- | Blink the led connected to port 13 on the Arduino UNO board.
-- The blinking will synchronize with the printing of a dot on stdout.
--
-- Depending on your set-up, you will need to change the path to the
-- USB board. If you have problems, try changing the first argument
-- to 'True' in the call to 'withArduino', which will hopefully print
-- a useful diagnostic message.
blink :: IO ()
blink = withArduino False "/dev/cu.usbmodemfd131" $ do
           let led = pin 13
           setPinMode led OUTPUT
           forever $ do liftIO $ putStr "."
                        digitalWrite led True
                        delay 1000
                        digitalWrite led False
                        delay 1000