-- | Programming the Arduino Nano with Copilot.

{-# LANGUAGE DataKinds #-}

module Copilot.Arduino.Nano (
	module Copilot.Arduino
	-- * Pins
	, pin2
	, pin3
	, pin4
	, pin5
	, pin6
	, pin7
	, pin8
	, pin9
	, pin10
	, pin11
	, pin12
	, pin13
	, a0
	, a1
	, a2
	, a3
	, a4
	, a5
	, a6
	, a7
	, sizeOfEEPROM
) where

import Copilot.Arduino
import Copilot.Arduino.Internals

pin2, pin4, pin7, pin8, pin12, pin13 :: Pin '[ 'DigitalIO ]
pin3, pin5, pin6, pin9, pin10, pin11 :: Pin '[ 'DigitalIO, 'PWM ]
pin2 :: Pin '[ 'DigitalIO]
pin2 = PinId -> Pin '[ 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
2)
pin3 :: Pin '[ 'DigitalIO, 'PWM]
pin3 = PinId -> Pin '[ 'DigitalIO, 'PWM]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
3)
pin4 :: Pin '[ 'DigitalIO]
pin4 = PinId -> Pin '[ 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
4)
pin5 :: Pin '[ 'DigitalIO, 'PWM]
pin5 = PinId -> Pin '[ 'DigitalIO, 'PWM]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
5)
pin6 :: Pin '[ 'DigitalIO, 'PWM]
pin6 = PinId -> Pin '[ 'DigitalIO, 'PWM]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
6)
pin7 :: Pin '[ 'DigitalIO]
pin7 = PinId -> Pin '[ 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
7)
pin8 :: Pin '[ 'DigitalIO]
pin8 = PinId -> Pin '[ 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
8)
pin9 :: Pin '[ 'DigitalIO, 'PWM]
pin9 = PinId -> Pin '[ 'DigitalIO, 'PWM]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
9)
pin10 :: Pin '[ 'DigitalIO, 'PWM]
pin10 = PinId -> Pin '[ 'DigitalIO, 'PWM]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
10)
pin11 :: Pin '[ 'DigitalIO, 'PWM]
pin11 = PinId -> Pin '[ 'DigitalIO, 'PWM]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
11)
pin12 :: Pin '[ 'DigitalIO]
pin12 = PinId -> Pin '[ 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
12)
-- | This pin is connected to the `led`
pin13 :: Pin '[ 'DigitalIO]
pin13 = PinId -> Pin '[ 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
13)

a0, a1, a2, a3, a4, a5 :: Pin '[ 'AnalogInput, 'DigitalIO ]
a0 :: Pin '[ 'AnalogInput, 'DigitalIO]
a0 = PinId -> Pin '[ 'AnalogInput, 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
14)
a1 :: Pin '[ 'AnalogInput, 'DigitalIO]
a1 = PinId -> Pin '[ 'AnalogInput, 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
15)
a2 :: Pin '[ 'AnalogInput, 'DigitalIO]
a2 = PinId -> Pin '[ 'AnalogInput, 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
16)
a3 :: Pin '[ 'AnalogInput, 'DigitalIO]
a3 = PinId -> Pin '[ 'AnalogInput, 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
17)
a4 :: Pin '[ 'AnalogInput, 'DigitalIO]
a4 = PinId -> Pin '[ 'AnalogInput, 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
18)
a5 :: Pin '[ 'AnalogInput, 'DigitalIO]
a5 = PinId -> Pin '[ 'AnalogInput, 'DigitalIO]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
19)

-- | Limited to analog input.
a6, a7 :: Pin '[ 'AnalogInput ]
a6 :: Pin '[ 'AnalogInput]
a6 = PinId -> Pin '[ 'AnalogInput]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
20)
a7 :: Pin '[ 'AnalogInput]
a7 = PinId -> Pin '[ 'AnalogInput]
forall k (t :: k). PinId -> Pin t
Pin (Int16 -> PinId
PinId Int16
21)

-- | Different versions of Arduino Nano have different EEPROM sizes.
-- This is a safe value that will work on all versions.
sizeOfEEPROM :: Word16
sizeOfEEPROM :: Word16
sizeOfEEPROM = Word16
512