hArduino 0.5 → 0.6
raw patch · 4 files changed
+37/−33 lines, 4 filesdep −unixPVP ok
version bump matches the API change (PVP)
Dependencies removed: unix
API changes (from Hackage documentation)
Files
- CHANGES.md +8/−2
- System/Hardware/Arduino/Comm.hs +3/−5
- System/Hardware/Arduino/SamplePrograms/Distance.hs +2/−2
- hArduino.cabal +24/−24
CHANGES.md view
@@ -1,8 +1,14 @@ * Hackage: (http://hackage.haskell.org/package/hArduino) * GitHub: (http://leventerkok.github.com/hArduino) -* Latest Hackage released version: 0.5+* Latest Hackage released version: 0.6 +### Version 0.6, 2013-03-08++ * Make hArduino Windows friendly by removing dependence+ on the unix package. Thanks to Andriy Drozdyuk for pointing+ out the Windows compilation issue. (Tested on Windows XP.)+ ### Version 0.5, 2013-03-07 * New hardware components supported:@@ -27,7 +33,7 @@ * time: Measure the time taken by an Arduino action * timeOut: Run an action only for the given-time-out -### Version 0.4, 2013-02-05+### Version 0.4, 2013-03-05 * Bugfix: Remove spurious extra call to user program * Rework pin assignment logic, making use of analog/digital pins much more clearer.
System/Hardware/Arduino/Comm.hs view
@@ -9,19 +9,19 @@ -- Basic serial communication routines ------------------------------------------------------------------------------- +{-# LANGUAGE CPP #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE ScopedTypeVariables #-} module System.Hardware.Arduino.Comm where import Control.Monad (when, forever)-import Control.Concurrent (MVar, myThreadId, ThreadId, throwTo, newChan, newMVar, newEmptyMVar, putMVar, writeChan, readChan, forkIO, modifyMVar_, tryTakeMVar, killThread)+import Control.Concurrent (MVar, ThreadId, newChan, newMVar, newEmptyMVar, putMVar, writeChan, readChan, forkIO, modifyMVar_, tryTakeMVar, killThread) import Control.Exception (tryJust, AsyncException(UserInterrupt), handle, SomeException) import Control.Monad.State (runStateT, gets, liftIO, modify) import Data.Bits (testBit, (.&.)) import Data.List (intercalate, isInfixOf) import Data.Maybe (listToMaybe) import Data.Word (Word8)-import System.Posix.Signals (installHandler, keyboardSignal, Handler(Catch)) import System.Timeout (timeout) import System.IO (stderr, hPutStrLn) @@ -51,9 +51,7 @@ -> Arduino () -- ^ The Haskell controller program to run -> IO () withArduino verbose fp program =- do tid <- myThreadId- _ <- installHandler keyboardSignal (Catch (throwTo tid UserInterrupt)) Nothing- debugger <- mkDebugPrinter verbose+ do debugger <- mkDebugPrinter verbose debugger $ "Accessing arduino located at: " ++ show fp listenerTid <- newEmptyMVar let Arduino controller = do initOK <- initialize listenerTid
System/Hardware/Arduino/SamplePrograms/Distance.hs view
@@ -44,7 +44,7 @@ -- Wiring: Simply connect VCC and GND of HC-SR04 to Arduino as usual. The @Echo@ line on the sensor is connected -- to Arduino pin 2. The @Trig@ line is connected on the board to the @Echo@ line, i.e., they both connect to the -- same pin on the Arduino. We also have a led on pin 13 that we will light-up--- if the distance detected is less than 2 centimeters, indicating an impending crash!+-- if the distance detected is less than 5 centimeters, indicating an impending crash! -- -- <<http://github.com/LeventErkok/hArduino/raw/master/System/Hardware/Arduino/SamplePrograms/Schematics/Distance.png>> distance :: IO ()@@ -59,6 +59,6 @@ Nothing -> liftIO $ putStrLn "Distance: No measurement received." Just d -> do let c = microSecondsToCentimeters d liftIO $ putStrLn $ "Distance: " ++ showGFloat (Just 2) c " centimeters."- digitalWrite led (c < 2)+ digitalWrite led (c < 5) update = forever $ do measure delay 1000
hArduino.cabal view
@@ -1,5 +1,5 @@ Name: hArduino-Version: 0.5+Version: 0.6 Category: Hardware Synopsis: Control your Arduino board from Haskell. Description: hArduino library allows Haskell programs to control Arduino boards and@@ -25,26 +25,26 @@ location: git://github.com/LeventErkok/hArduino.git Library- default-language: Haskell2010- ghc-options : -Wall- Build-depends : base >= 4 && < 5, serialport >= 0.4.5, bytestring, mtl, unix, containers, time- Exposed-modules : System.Hardware.Arduino- , System.Hardware.Arduino.Parts- , System.Hardware.Arduino.Parts.LCD- , System.Hardware.Arduino.Parts.ShiftRegisters- , System.Hardware.Arduino.Parts.SevenSegmentCodes- , System.Hardware.Arduino.Parts.Servo- , System.Hardware.Arduino.SamplePrograms.Analog- , System.Hardware.Arduino.SamplePrograms.Blink- , System.Hardware.Arduino.SamplePrograms.Button- , System.Hardware.Arduino.SamplePrograms.Counter- , System.Hardware.Arduino.SamplePrograms.Distance- , System.Hardware.Arduino.SamplePrograms.LCD- , System.Hardware.Arduino.SamplePrograms.Pulse- , System.Hardware.Arduino.SamplePrograms.SevenSegment- , System.Hardware.Arduino.SamplePrograms.Servo- Other-modules : System.Hardware.Arduino.Comm- , System.Hardware.Arduino.Data- , System.Hardware.Arduino.Firmata- , System.Hardware.Arduino.Protocol- , System.Hardware.Arduino.Utils+ default-language : Haskell2010+ ghc-options : -Wall+ Build-depends : base >= 4 && < 5, serialport >= 0.4.5, bytestring, mtl, containers, time+ Exposed-modules : System.Hardware.Arduino+ , System.Hardware.Arduino.Parts+ , System.Hardware.Arduino.Parts.LCD+ , System.Hardware.Arduino.Parts.ShiftRegisters+ , System.Hardware.Arduino.Parts.SevenSegmentCodes+ , System.Hardware.Arduino.Parts.Servo+ , System.Hardware.Arduino.SamplePrograms.Analog+ , System.Hardware.Arduino.SamplePrograms.Blink+ , System.Hardware.Arduino.SamplePrograms.Button+ , System.Hardware.Arduino.SamplePrograms.Counter+ , System.Hardware.Arduino.SamplePrograms.Distance+ , System.Hardware.Arduino.SamplePrograms.LCD+ , System.Hardware.Arduino.SamplePrograms.Pulse+ , System.Hardware.Arduino.SamplePrograms.SevenSegment+ , System.Hardware.Arduino.SamplePrograms.Servo+ Other-modules : System.Hardware.Arduino.Comm+ , System.Hardware.Arduino.Data+ , System.Hardware.Arduino.Firmata+ , System.Hardware.Arduino.Protocol+ , System.Hardware.Arduino.Utils