Estimados, estoy haciendo un código para zonas de descarga en una práctica de donde estudio, pero necesito activar una sirena durante un tiempo establecido, que se desactive aunque el lcd me indique que la zona está ocupada, con un tiempo de sirena de 3 segundos que suene y se desactive, para las dos zonas de descarga.
Esto es lo que tengo hasta ahora.
Código:
'****************************************************************
'* Name : zonadescarga.BAS *
'* Author : [greivin granados] *
'* Notice : Copyright (c) 2022 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 2/9/2022 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
cmcon=7 ; convierte todo el puerto A en digital
SENSOR1 VAR portA.1 ;ACTIVA ZONA1 DESCARGA O DESACTIVA
SENSOR2 var portA.0 ;CTIVA ZONA2 DESCARGA O DESACTIVA
APALAR VAR PORTA.4
ledROJO VAR portA.2 ;ACTIVA EL LEDROJO
ledVERDE var portA.3 ;ACTIVA EL LEDVERDE
SIRENA VAR PORTB.0 ;ACTIVA SIRENA
x Var BYTE ; PARA HACER LAS REPETICIONES
DEFINE LCD_DREG PORTB ; define pines del LCD B4 a B7
DEFINE LCD_DBIT 4 ; empezando desde el Puerto B4 hasta el B7
DEFINE LCD_RSREG PORTB ;define el puerto B para conectar el bit RS
DEFINE LCD_RSBIT 3 ;este es el puerto B3
DEFINE LCD_EREG PORTB ;define el puerto B para conectar el bit Enable
DEFINE LCD_EBIT 2 ;este es el puerto B2
ACTIVAR:
IF SENSOR1=1 AND SENSOR2=1 THEN ZONASOCUPADAS
if SENSOR1 = 1 then ZONAOCUPADA1
if SENSOR2 = 1 then ZONAOCUPADA2
PAUSE 300 ;retardo para esperar que funcione el LCD
LCDOUT $FE,1,"ZONA LIBRE 1" ;LIMPIAR PANTALLA Y SACAR EL TEXTO HOLA GRUPO
LCDOUT $FE, $C0,"ZONA LIBRE 2" ;PASAR AL COMIENZO DE LA SEGUNDA LINEA Y ESCRIBIR ELECTRONICA DIGITAL
HIGH LEDVERDE
PAUSE 300
LOW LEDVERDE
PAUSE 300
if SENSOR1 = 1 then ZONAOCUPADA1
if SENSOR2 = 1 then ZONAOCUPADA2
IF SENSOR1=1 AND SENSOR2=1 THEN ZONASOCUPADAS
GOTO ACTIVAR
ZONAOCUPADA1: ;retardo para esperar que funcione el LCD
LCDOUT $FE,1,"ZONA OCUPADA 1" ;LIMPIAR PANTALLA Y SACAR EL TEXTO HOLA GRUPO
LCDOUT $FE, $C0,"ZONA LIBRE 2"
PAUSE 300
HIGH LEDROJO
PAUSE 300
LOW LEDROJO
PAUSE 300
IF SENSOR1=1 AND SENSOR2=1 THEN ZONASOCUPADAS
IF SENSOR1 =0 THEN ACTIVAR
GOTO ZONAOCUPADA1
ZONAOCUPADA2:
PAUSE 300 ;retardo para esperar que funcione el LCD
LCDOUT $FE,1, "ZONA LIBRE 1" ;LIMPIAR PANTALLA Y SACAR EL TEXTO HOLA GRUPO
LCDOUT $FE, $C0,"ZONA OCUPADA 2"
PAUSE 300
HIGH LEDROJO
PAUSE 300
LOW LEDROJO
PAUSE 300
IF SENSOR1=1 AND SENSOR2=1 THEN ZONASOCUPADAS
IF SENSOR2 =0 THEN ACTIVAR
GOTO ZONAOCUPADA2
ZONASOCUPADAS:
PAUSE 300 ;retardo para esperar que funcione el LCD
LCDOUT $FE,1, "ZONA OCUPADA 1" ;LIMPIAR PANTALLA Y SACAR EL TEXTO HOLA GRUPO
LCDOUT $FE, $C0,"ZONA OCUPADA 2"
PAUSE 300
HIGH LEDROJO
PAUSE 300
LOW LEDROJO
PAUSE 300
IF SENSOR1 =0 THEN ACTIVAR
IF SENSOR2 =0 THEN ACTIVAR
GOTO ZONASOCUPADAS
encender:
for x = 0 to 1
if sensor1=1 then encender
IF apalar=1 THEN apagar
high sirena
pause 250
low sirena
PAUSE 250
next
goto apagar
apagar:
low sirena
goto activar
END
Adjuntos
Última edición por un moderador: