juniper: a functional reactive programming language for ... · juniper: a functional reactive...
TRANSCRIPT
![Page 1: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/1.jpg)
Juniper: A Functional Reactive Programming Language for the
Arduino
Caleb HelblingTufts University
Samuel Z. GuyerTufts University
Workshop on Functional Art, Music, Modelling and Design (FARM)
September 2016
Hands-on Sound Visualization ProjectPlease go to
http://www.juniper-lang.org/
![Page 2: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/2.jpg)
![Page 3: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/3.jpg)
Parts ListNano microcontroller
Sound sensor100 ohm resistor8 LED Bargraph
Bridged 8 pin header8 pin jumper wire3 pin jumper wireMicro-usb cable
![Page 4: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/4.jpg)
Internal Breadboard Layout
![Page 5: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/5.jpg)
Putting the “work” back in workshop
GND3V3 A1
D2 – D9
![Page 6: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/6.jpg)
![Page 7: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/7.jpg)
module SoundBaropen(Prelude)
let microphonePin = 15let barPins = [9, 8, 7, 6, 5, 4, 3, 2]let numBarPins = 8
fun setup() = (Io:setPinMode(microphonePin, Io:input());for i in 0 to numBarPins - 1 do
Io:setPinMode(barPins[i], Io:output())end
)
...
![Page 8: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/8.jpg)
...
fun drawBar(level : uint16) = (for i in 0 to level do
Io:digWrite(barPins[i], Io:high())end;for i in level + 1 to numBarPins - 1 do
Io:digWrite(barPins[i], Io:low())end
)
...
![Page 9: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/9.jpg)
...let state = ref List:replicate<uint16; 5>(0, 0)fun main() = (
setup();while true do (
let micSig = Io:digIn(microphonePin);let barSig = Signal:map(
fn (digVal) ->case digVal of| Io:low() => 7u16| Io:high() => 0u16end
end,micSig);
let pastBarSig = Signal:record(barSig, state);let meanBarSig = Signal:map(List:average, pastBarSig);Signal:sink(drawBar, meanBarSig)
) end)
![Page 10: Juniper: A Functional Reactive Programming Language for ... · Juniper: A Functional Reactive Programming Language for the Arduino Caleb Helbling Tufts University Samuel Z. Guyer](https://reader035.vdocuments.net/reader035/viewer/2022062219/5f02d8c37e708231d4064d7b/html5/thumbnails/10.jpg)
Thank you!
http://www.juniper-lang.org/