arduino-copilot-1.7.6: Arduino programming in haskell using the Copilot stream DSL
Safe HaskellSafe-Inferred
LanguageHaskell2010

Copilot.Arduino.Internals

Description

You should not need to import this module unless you're adding support for a new model of Arduino, or an Arduino library.

Synopsis

Documentation

class ShowCType t where Source #

Methods

showCType :: Proxy t -> String Source #

Instances

Instances details
ShowCType Int16 Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Int32 Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Int64 Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Int8 Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Word16 Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Word32 Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Word64 Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Word8 Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Bool Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Double Source # 
Instance details

Defined in Copilot.Arduino.Internals

ShowCType Float Source # 
Instance details

Defined in Copilot.Arduino.Internals

type ADC = Int16 Source #

Value read from an Arduino's ADC. Ranges from 0-1023.

newtype Arduino Source #

Indicates that you're programming an arduino, and not some other kind of hardware. The similar library zephyr-copilot allows programming other embedded boards in a very similar style to this one.

Constructors

Arduino Int16 

Instances

Instances details
Show Arduino Source # 
Instance details

Defined in Copilot.Arduino.Internals

Eq Arduino Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

(==) :: Arduino -> Arduino -> Bool #

(/=) :: Arduino -> Arduino -> Bool #

Ord Arduino Source # 
Instance details

Defined in Copilot.Arduino.Internals

Context Arduino Source # 
Instance details

Defined in Copilot.Arduino.Internals

Input Arduino ClockMicros Word32 Source # 
Instance details

Defined in Copilot.Arduino

Input Arduino ClockMillis Word32 Source # 
Instance details

Defined in Copilot.Arduino

Input Arduino RandomInput Word32 Source # 
Instance details

Defined in Copilot.Arduino.Library.Random

Input Arduino SerialDevice Int8 Source # 
Instance details

Defined in Copilot.Arduino.Library.Serial.Device

Output Arduino Delay MicroSeconds Source # 
Instance details

Defined in Copilot.Arduino.Internals

Output Arduino Delay MilliSeconds Source # 
Instance details

Defined in Copilot.Arduino.Internals

Output Arduino SerialDevice [FormatOutput] Source # 
Instance details

Defined in Copilot.Arduino.Library.Serial.Device

Output Arduino RandomSeed (Event () (Stream ADC)) Source # 
Instance details

Defined in Copilot.Arduino.Library.Random

Methods

(=:) :: RandomSeed -> Event () (Stream ADC) -> GenSketch Arduino () #

Output Arduino RandomSeed (Event () (Stream Word8)) Source # 
Instance details

Defined in Copilot.Arduino.Library.Random

Output Arduino SerialDevice (Event () [FormatOutput]) Source # 
Instance details

Defined in Copilot.Arduino.Library.Serial.Device

(ShowCType t, EEPROMable t) => Input Arduino (RangeReads t) t Source # 
Instance details

Defined in Copilot.Arduino.Library.EEPROMex

Methods

input' :: RangeReads t -> [t] -> GenSketch Arduino (Behavior t) #

EEPROMable t => Output Arduino (Range t) (RangeWrites t) Source # 
Instance details

Defined in Copilot.Arduino.Library.EEPROMex

Methods

(=:) :: Range t -> RangeWrites t -> GenSketch Arduino () #

EEPROMable t => Output Arduino (Location t) (Event () (Stream t)) Source # 
Instance details

Defined in Copilot.Arduino.Library.EEPROMex

Methods

(=:) :: Location t -> Event () (Stream t) -> GenSketch Arduino () #

EEPROMable t => Output Arduino (Range t) (Event () (RangeWrites t)) Source # 
Instance details

Defined in Copilot.Arduino.Library.EEPROMex

Methods

(=:) :: Range t -> Event () (RangeWrites t) -> GenSketch Arduino () #

IsAnalogInputPin t => Input Arduino (Pin t) ADC Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

input' :: Pin t -> [ADC] -> GenSketch Arduino (Behavior ADC) #

IsDigitalIOPin t => Input Arduino (Pin t) Bool Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

input' :: Pin t -> [Bool] -> GenSketch Arduino (Behavior Bool) #

IsPWMPin t => Output Arduino (Pin t) (Event 'PWM (Stream Word8)) Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

(=:) :: Pin t -> Event 'PWM (Stream Word8) -> GenSketch Arduino () #

IsDigitalIOPin t => Output Arduino (Pin t) (Event () (Stream Bool)) Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

(=:) :: Pin t -> Event () (Stream Bool) -> GenSketch Arduino () #

newtype Pin t Source #

A pin on the Arduino board.

For definitions of pins like pin12, load a module such as Copilot.Arduino.Uno, which provides the pins of a particular board.

A type-level list indicates how a Pin can be used, so the haskell compiler will detect impossible uses of pins.

Constructors

Pin Arduino 

Instances

Instances details
IsAnalogInputPin t => Input Arduino (Pin t) ADC Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

input' :: Pin t -> [ADC] -> GenSketch Arduino (Behavior ADC) #

IsDigitalIOPin t => Input Arduino (Pin t) Bool Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

input' :: Pin t -> [Bool] -> GenSketch Arduino (Behavior Bool) #

IsPWMPin t => Output Arduino (Pin t) (Event 'PWM (Stream Word8)) Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

(=:) :: Pin t -> Event 'PWM (Stream Word8) -> GenSketch Arduino () #

IsDigitalIOPin t => Output Arduino (Pin t) (Event () (Stream Bool)) Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

(=:) :: Pin t -> Event () (Stream Bool) -> GenSketch Arduino () #

Show (Pin t) Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

showsPrec :: Int -> Pin t -> ShowS #

show :: Pin t -> String #

showList :: [Pin t] -> ShowS #

Eq (Pin t) Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

(==) :: Pin t -> Pin t -> Bool #

(/=) :: Pin t -> Pin t -> Bool #

Ord (Pin t) Source # 
Instance details

Defined in Copilot.Arduino.Internals

Methods

compare :: Pin t -> Pin t -> Ordering #

(<) :: Pin t -> Pin t -> Bool #

(<=) :: Pin t -> Pin t -> Bool #

(>) :: Pin t -> Pin t -> Bool #

(>=) :: Pin t -> Pin t -> Bool #

max :: Pin t -> Pin t -> Pin t #

min :: Pin t -> Pin t -> Pin t #

type Framework = GenFramework Arduino Source #

The framework of a sketch.

type Sketch = GenSketch Arduino Source #

An Arduino sketch, implemented using Copilot.

It's best to think of the Sketch as a description of the state of the board at any point in time.

Under the hood, the Sketch is run in a loop. On each iteration, it first reads inputs and then updates outputs as needed.

While it is a monad, a Sketch's outputs are not updated in any particular order, because Copilot does not guarantee any order.