Пример #1
0
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import board
import busio
import requests
import time
from firebase import Firebase

# I2C setup
from adafruit_cap1188.i2c import CAP1188_I2C
i2c = busio.I2C(board.SCL, board.SDA)
cap = CAP1188_I2C(i2c)

# API
config =  # CONFIGURATION OBJECT FROM FIREBASE

firebase = Firebase(config)
db = firebase.database()
current_quiz = db.child("activeQuizID").get().val()
quizzes = db.child("quizzes").get()
quiz = quizzes.val()[current_quiz]

while True:
    for i in range(1, 9):

        # cap[i].raw_value == 127 when near to touch. cap[i].value true/false but larger distance triggers it
        if cap[i].raw_value == 127:

            quizzes = db.child("quizzes").get()
            questions = quizzes.val()[current_quiz]['questions']
Пример #2
0
    def __init__(self):
        self.host = "localhost"
        self.port = ":3000"
        self.apiPath = "/api/v1/"
        self.last_raw_vol = 0
        self.last_raw_fad = 0
        self.vol_raw_range = [0, 65472]
        self.vol_real_range = [100, 0]
        self.bouncetime = 500
        self.dim_amount = 50
        self.xsetRun = False
        self.seekRun = 0
        self.seeking = False
        self.vstate = {
            'status': None,
            'seek': 0,
            'duration': None,
            'random': None,
            'repeat': None,
            'volume': None,
            'mute': False,
            'dim': False
        }

        # Setup CAP1188 Board
        self.i2c = busio.I2C(board.SCL, board.SDA)
        self.cap = CAP1188_I2C(self.i2c)
        self.cap._write_register(0x1F, 65)

        # Setup MCP3008
        self.mcp = MCP.MCP3008(
            busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI),
            digitalio.DigitalInOut(board.D8))

        # Setup TB6612FNG Motor Controller
        self.pin_in1 = 24
        self.pin_in2 = 23
        self.pin_pwm = 18
        self.pin_en = 25
        GPIO.setup(self.pin_in1, GPIO.OUT)
        GPIO.setup(self.pin_in2, GPIO.OUT)
        GPIO.setup(self.pin_pwm, GPIO.OUT)
        GPIO.setup(self.pin_en, GPIO.OUT)
        self.pwm = GPIO.PWM(self.pin_pwm, 100)
        self.pwm.start(45)
        GPIO.output(self.pin_en, GPIO.HIGH)
        self.motorOff()

        # Setup buttons & Toggle Switch
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)  # Toggle Dim
        GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)  # Toggle Mute
        GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Repeat Button
        GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Previous Button
        GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Play/Pause Button
        GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Next Button
        GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Random Button

        # Set interupts and callbacks for momentary buttons.
        GPIO.add_event_detect(17,
                              GPIO.FALLING,
                              callback=self.btn_repeat,
                              bouncetime=self.bouncetime)
        GPIO.add_event_detect(27,
                              GPIO.FALLING,
                              callback=self.btn_prev,
                              bouncetime=self.bouncetime)
        GPIO.add_event_detect(22,
                              GPIO.FALLING,
                              callback=self.btn_playpause,
                              bouncetime=self.bouncetime)
        GPIO.add_event_detect(5,
                              GPIO.FALLING,
                              callback=self.btn_next,
                              bouncetime=self.bouncetime)
        GPIO.add_event_detect(6,
                              GPIO.FALLING,
                              callback=self.btn_random,
                              bouncetime=self.bouncetime)