''' Brainstorm What do we want this to look like? -app (bluetooth/wifi) <--I think we should do app b/c otherwise not much to add, plus it'd be a cool social connecting thing -software for connecting phone to machine #someone want to do this? -each machine has its own name to aide with connecting -app interface #android? iOS? #someone should design -ways to order/mix drinks -based off a specific (mixed) drink name -from a list of individual ingredients and amounts -random -add drink recipe -should be specific to each phone/save to specific phone; can connect phone to different machines -other features -blacks out the drinks that can't be made based on what is in the machine the phone is connected to -favorite drinks? -can also have an existing database of drinks, take off of http://www.drinksmixer.com? -to remove clutter, only show the drinks that one can make, hide the rest -software that is machine specific -(see below) -other features -shakeDrink() -addIce() #should be in 0/initial slot -lights? -talking? XD or some interface on the machine? -some detection when drinks are running low? -since we have 3 axis to use, and I think we're only using two currently, perhaps we can mix multiple (2) drinks at the "same" time? -put them opposite each other -then would have added software stuff to send multiple orders at once if they are in the correct position and calculating how much to turn next of the two recipes -or put them on different rotating platforms, but then would need more axis machines These components shouldn't all be in the same place; I'm just starting things out for us on the same document Info we need from other groups: -number of slots #rack group; tell them to add slot numbers to aide with initializing the machine -amount to time ratio based off pouring mechanism #pouring mechanism group drinkMixer: #will need perhaps some queue if multiple people send to a machine at once/similar time drinkList #holds in a list the drink components in each of the slots; #how do we want people to be able to initialize the machine? Eventually there should also be hardware interface for ordering drinks not via the app? #or perhaps on the app can mess with the machine details if you have a password that's unique to the machine?, use that to initialize? currentPosition #where on the circle the cup is mixDrink(recipe): for drink in orderDrink(recipe.getDrinkList()): drinkNumber = drinkList.index(drink) moveTo(drinkNumber) pourDrink(recipe.getAmount(drink)) moveTo(0) #starting position orderDrink(list): #takes a list and orders the drinks based on drinkList (as in which drink to add first, second, etc.) pourDrink(amount): #converts amount into time holding cup up #moveZ(time) moveTo(drinkNumber): #calculates how many slots to rotate (counterclockwise?) from currentPosition to get to drinkNumber #rotate(numberOfSlots) moveZ(time): #moves cup up in z-axis for some amount of time, then back down #use gestalt for specific details rotate(numberOfSlots): #use gestalt for specific details drinkOrderApp: #backend stuff, not the interface recipeList favoriteDrinks makableDrinks(): #might not be a method, will need to change based on how the interface works I think #retrieve from machine drinkList #computes figures out which drinks from recipeList are makable based on drinkList #Hashing!! :D mixDrink(name of drink/recipe): #retrieve recipe #send to machine randomDrink(): #randomly chooses drinks and amounts?/creates a random recipe #send to machine addDrinkRecipe(): #should take inputs, something UI based/pressing buttons/typing class Recipe: def __init__(drinkName): self.drinkName = drinkName self.drinkList = [] #list self.amounts = {} #dictionary def addIngredient(drink, amount): drinkList.add(drink) amounts(drink) = amount getDrinkList(): return drinkList getAmount(drink): return amount[drink] ''' class drinkMixer: def __init__(): self.drinkList = #array/list of drinks