Paso 7: Código de vuelta
Código de vueltaCON
Flavor1 = 0
Flavor2 = 1
Flavor3 = 2
Foto2 = 3
Foto4 = 4
Inicio = 5
Cancelar = 6
Servo1 = 8
Servo2 = 21
Servo3 = 18
Servo4 = 11
MotorPos = 24
MotorNeg = 25
Limitador = 16
LCD_Pin = 15
LCD_Baud = 19_200
LCD_Lines = 2
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
OBJ
servo: "Servo32v5.spin"
PST: "Terminal Serial Parallax"
LCD: "debug_lcd"
VAR
byte de sabor
byte de tiro
BAR principal
servo.Start
servo.set (Servo1, 1350)
servo.set (Servo2, 570)
servo.set (Servo3, 980)
servo.set (Servo4, 1000)
LCD.init (LCD_Pin, LCD_Baud, LCD_Lines)
LCD.cursor(0)
LCD.cls
LCD.gotoxy(0,0)
LCD.cls
LCD.str (string ("Café Magic", 13 "Por Roy Eid", 13))
waitcnt (clkfreq * 2 + cnt)
dira [MotorPos] ~ ~
dira [MotorNeg] ~ ~
Sabor: = 0
Tiro: = 0
flava
PUB cagado
repetir
Si ina [Foto2] == 1
LCD.gotoxy (9, 1)
LCD.str(string("2"))
Tiro: = 1
Comandante
Si ina [Foto4] == 1
LCD.gotoxy (9, 1)
LCD.str(string("4"))
Tiro: = 2
Comandante
Si ina [cancelar] == 1
LCD.cls
LCD.str (string ("Cancelado por", 13, "usuario"))
waitcnt (clkfreq + cnt)
flava
PUB flava
LCD.cls
LCD.str (string ("sabor:", 13, "tiros :"))
repetir
Si ina [Flavor1] == 1
LCD.gotoxy (9, 0)
LCD.str(string("1"))
Sabor: = 1
Shat
Si ina [Flavor2] == 1
LCD.gotoxy (9, 0)
LCD.str(string("2"))
Sabor: = 2
Shat
Si ina [Flavor3] == 1
LCD.gotoxy (9, 0)
LCD.str(string("3"))
Sabor: = 3
Shat
Comandante de PUB
repetir
Si ina [Inicio] == 1
LCD.cls
LCD.str(string("Dispensing..."))
Dispense
Si ina [cancelar] == 1
LCD.cls
LCD.str (string ("Cancelado por", 13, "usuario"))
waitcnt (clkfreq + cnt)
flava
PUB dispensar
servo.set (Servo4, 1600)
waitcnt (clkfreq * 1 + cnt)
caso de sabor
1:
servo.set (Servo1, 1800)
Si tiro == 1
waitcnt (clkfreq * 2 + cnt)
servo.set (Servo1, 1350)
waitcnt (clkfreq * 1 + cnt)
compacto
Si tiro == 2
waitcnt (clkfreq * 4 + cnt)
servo.set (Servo1, 1350)
waitcnt (clkfreq * 1 + cnt)
compacto
2:
servo.set (Servo2, 1000)
Si tiro == 1
waitcnt (clkfreq * 2 + cnt)
servo.set (Servo2, 570)
waitcnt (clkfreq * 1 + cnt)
compacto
Si tiro == 2
waitcnt (clkfreq * 4 + cnt)
servo.set (Servo2, 570)
waitcnt (clkfreq * 1 + cnt)
compacto
3:
servo.set (Servo3, 550)
Si tiro == 1
waitcnt (clkfreq * 2 + cnt)
servo.set (Servo3, 980)
waitcnt (clkfreq * 1 + cnt)
compacto
Si tiro == 2
waitcnt (clkfreq * 4 + cnt)
servo.set (Servo3, 980)
waitcnt (clkfreq * 1 + cnt)
compacto
PUB compacto
servo.set (Servo4, 1000)
waitcnt (clkfreq * 2 + cnt)
repetir 2
Si ina [limitador] == 0
hasta
Si ina [limitador] == 1
abajo
hasta
LCD.cls
LCD.str(string("done!"))
waitcnt (clkfreq * 2 + cnt)
flava
PUB para arriba
repetir
LCD.gotoxy(0,0)
LCD.str(string("Compacting..."))
Outa [MotorNeg]: = 1
Outa [MotorPos]: = 0
Si ina [limitador] == 1
Outa [MotorNeg]: = 0
Outa [MotorPos]: = 0
dejar de fumar
PUB abajo
LCD.cls
LCD.str(string("Compacting..."))
repetir 100
Outa [MotorPos]: = 1
Outa [MotorNeg]: = 0
waitcnt (clkfreq/500 + cnt)
Outa [MotorNeg]: = 0
Outa [MotorPos]: = 0
waitcnt (clkfreq/500 + cnt)