rra
4 years ago
8 changed files with 192 additions and 0 deletions
@ -0,0 +1,13 @@ |
|||||
|
from gpiozero import MCP3008 |
||||
|
from time import sleep |
||||
|
|
||||
|
#remember to enable SPI in raspi-config > interfaces before you run this the first time |
||||
|
|
||||
|
#How to wire the MCP3008: https://learn.adafruit.com/raspberry-pi-analog-to-digital-converters/mcp3008 |
||||
|
#gpiozero documentation about MCP3008: https://gpiozero.readthedocs.io/en/stable/api_spi.html |
||||
|
|
||||
|
ldr = MCP3008(channel=0, device=0) |
||||
|
|
||||
|
while True: |
||||
|
print(ldr.value) |
||||
|
sleep(0.01) |
@ -0,0 +1,15 @@ |
|||||
|
from gpiozero import DistanceSensor |
||||
|
from time import sleep |
||||
|
|
||||
|
#https://gpiozero.readthedocs.io/en/stable/recipes.html#distance-sensor |
||||
|
|
||||
|
sensor = DistanceSensor( |
||||
|
echo=19, |
||||
|
trigger=26, |
||||
|
max_distance=4, |
||||
|
queue_len=5) |
||||
|
|
||||
|
while True: |
||||
|
print('distance', sensor.distance * 100) |
||||
|
sleep(0.5) |
||||
|
|
@ -0,0 +1,32 @@ |
|||||
|
#remember to enable SPI in raspi-config > interfaces before you run this the first time |
||||
|
|
||||
|
#How to wire the MCP3008: |
||||
|
#https://learn.adafruit.com/raspberry-pi-analog-to-digital-converters/mcp3008 |
||||
|
|
||||
|
#gpiozero about MCP3008: |
||||
|
#https://gpiozero.readthedocs.io/en/stable/api_spi.html |
||||
|
|
||||
|
#gpiozero tools to modify values: |
||||
|
#https://gpiozero.readthedocs.io/en/stable/_modules/gpiozero/tools.html |
||||
|
|
||||
|
from gpiozero import MCP3008, PWMLED |
||||
|
from gpiozero.tools import clamped, smoothed, scaled |
||||
|
from time import sleep |
||||
|
|
||||
|
ldr = MCP3008(channel=0, device=0) |
||||
|
|
||||
|
led = PWMLED(17) |
||||
|
|
||||
|
while True: |
||||
|
reading = smoothed(ldr,3) #smooth samples |
||||
|
|
||||
|
value = scaled(reading, 0,1.0,0.01,0.5) #scale samples |
||||
|
|
||||
|
brightness = clamped(value,0,1.0) #clamp samples |
||||
|
|
||||
|
for i in brightness: |
||||
|
if i < 0.15: |
||||
|
i = 0 |
||||
|
print(i) |
||||
|
led.value = i |
||||
|
|
@ -0,0 +1,28 @@ |
|||||
|
import sys |
||||
|
from gpiozero import PWMLED |
||||
|
from gpiozero.pins.pigpio import PiGPIOFactory |
||||
|
from signal import pause |
||||
|
from time import sleep |
||||
|
|
||||
|
#If you are working on MacOS or linux make an ssh tunnel first: |
||||
|
#ssh -L 8888:localhost:8888 kanelbulle |
||||
|
factory = PiGPIOFactory(host='localhost') |
||||
|
|
||||
|
#If you are working on Windows: |
||||
|
#first ask Roel to open a port in the interaction.tools firewall for you |
||||
|
#then |
||||
|
#factory = PiGPIOFactory(host='kanelbulle.interaction.tools', port=8889) |
||||
|
|
||||
|
led = PWMLED(17, pin_factory=factory) |
||||
|
|
||||
|
while True: |
||||
|
try: |
||||
|
for i in range(0,10): |
||||
|
a = float(i/10) |
||||
|
led.value = a |
||||
|
sleep(0.1) |
||||
|
print(a) |
||||
|
except KeyboardInterrupt: |
||||
|
led.close() |
||||
|
sys.exit() |
||||
|
|
@ -0,0 +1,21 @@ |
|||||
|
import sys |
||||
|
from gpiozero import PWMLED |
||||
|
from gpiozero.pins.pigpio import PiGPIOFactory |
||||
|
from signal import pause |
||||
|
from time import sleep |
||||
|
|
||||
|
#This code is meant to be run FROM a Pi connected to the interaction.tools network |
||||
|
#It allows you to read/write Pins from other PIs on the network |
||||
|
|
||||
|
bobPi = PiGPIOFactory(host='10.10.10.25') |
||||
|
alicePi = PiGPIOFactory(host='10.10.10.26') |
||||
|
|
||||
|
led = LED(17) |
||||
|
|
||||
|
button_alice = Button(17, pin_factory=bobPi) |
||||
|
button_bob = Button(17, pin_factory=alicePi) |
||||
|
|
||||
|
led.source = all_values(button_alice, button_bob) |
||||
|
|
||||
|
pause() |
||||
|
|
@ -0,0 +1,29 @@ |
|||||
|
from gpiozero import Servo |
||||
|
from time import sleep |
||||
|
|
||||
|
# https://gpiozero.readthedocs.io/en/stable/recipes.html#servo |
||||
|
|
||||
|
|
||||
|
#these pulse-width values come from the elektrobit product description |
||||
|
maxPW=2.1/1000 |
||||
|
minPW=0.9/1000 |
||||
|
|
||||
|
# these values are empirically determined and represent maxima |
||||
|
# 0.3 will turn slow in one direction, -0.5 slow in the other |
||||
|
left = 1 |
||||
|
right = -1 |
||||
|
stop = -0.2 |
||||
|
|
||||
|
servo = Servo( |
||||
|
17, |
||||
|
initial_value=None, |
||||
|
min_pulse_width=minPW, |
||||
|
max_pulse_width=maxPW) |
||||
|
|
||||
|
while True: |
||||
|
servo.value = left |
||||
|
sleep(1) |
||||
|
servo.value = right |
||||
|
sleep(1) |
||||
|
servo.value = stop |
||||
|
sleep(2) |
@ -0,0 +1,20 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<title>LEDS!</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
|
||||
|
<form action="/on/" method="post"> |
||||
|
<button name="forwardBtn" type="submit">On</button> |
||||
|
</form> |
||||
|
|
||||
|
<form action="/off/" method="post"> |
||||
|
<button name="forwardBtn" type="submit">Off</button> |
||||
|
</form> |
||||
|
|
||||
|
<p>{{led_status}} </p> |
||||
|
|
||||
|
</body> |
||||
|
</html> |
||||
|
|
@ -0,0 +1,34 @@ |
|||||
|
from flask import Flask, render_template, Response, request, redirect, url_for |
||||
|
from gpiozero import LED |
||||
|
|
||||
|
#This sketch allows you to control an LED from the browser. |
||||
|
#When you run the sketch navigate to yourpi.interaction.tools:8000 to try it |
||||
|
|
||||
|
led = LED(17) |
||||
|
|
||||
|
app = Flask(__name__) |
||||
|
|
||||
|
@app.route("/") |
||||
|
def index(): |
||||
|
return render_template('index.html', led_status="Press 'on' or 'off'") |
||||
|
|
||||
|
@app.route("/on/", methods=['POST']) |
||||
|
def turn_led_on(): |
||||
|
|
||||
|
led.on() |
||||
|
led_status = 'LED is on' |
||||
|
|
||||
|
#Return the page result |
||||
|
return render_template('index.html', led_status=led_status) |
||||
|
|
||||
|
@app.route("/off/", methods=['POST']) |
||||
|
def turn_led_off(): |
||||
|
|
||||
|
led.off() |
||||
|
led_status= 'LED is off' |
||||
|
|
||||
|
#Return the page result |
||||
|
return render_template('index.html', led_status=led_status) |
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
app.run(host='0.0.0.0', port=8000) |
Loading…
Reference in new issue