#!/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']
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)