Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
@ DEVICE PIC16F628A
@ DEVICE INTRC_OSC_NOCLKOUT
@ DEVICE WDT_OFF
@ DEVICE PWRT_OFF
@ DEVICE MCLR_OFF
@ DEVICE BOD_OFF
@ DEVICE LVP_OFF
@ DEVICE CPD_OFF
@ DEVICE PROTECT_OFF
include "modedefs.bas"
DEFINE OSC 4
CMCON=7
TRISA = %00000000 'todo el puerto a como salida
TRISB = %00000001 'todo el puerto b como salida menor portb.0 es entrada
SYMBOL REL1 = PORTA.0
SYMBOL RX = PORTB.0 'RX ENTRADA
SYMBOL TX = PORTB.1 'TX SALIDA
B0 VAR BYTE
[COLOR="Red"]serout2 Tx,16780,[13] 'ponle esta linea tambien[/COLOR]
INICIO:
SerIn2 RX,16780,[WAIT("Activar"),SKIP 2,DEC B0]
IF B0 = 1 THEN
HIGH REL1
REL1 = 1
PAUSE 100
ENDIF
ENVIAR:
PAUSE 1000
serout2 Tx,16780,["AT+CMGF=1",13]
PAUSE 1000
serout2 Tx,16780,["AT+CMGS=",34,"092661649",34,13]
PAUSE 1000
SEROUT2 Tx,16780,["R1 activado ",#B0,26]
PAUSE 1000
GOTO INICIO
No fijate yo lo cambie a 16780 que es = 2400 baud , sin paridad , invertido
pero tienes que enviarle Activar, osea con la primera letra en mayuscula y con 2 espacios y luego enter y veras como si activa el rele 1, te dejo el esquema modificado.
Edit: por cierto si quieres cámbiale el tiempo
ENVIAR:
PAUSE 10000
a 1000 para que sea mas rápida la respuesta
se me ocurre que al hacer el primer envio cambia el puerto como salida o algo y el primer bit no lo manda bien... si me explico?...Lubeck a que se debe ese primer envio que es basura, ya que si lo vuelves activar si lo envía bien.
Lubeck a que se debe ese primer envio que es basura, ya que si lo vuelves activar si lo envía bien.
Amigo pull1988, ya me sospechaba algo asi mas me faltaba ese ultimo dato del arreglo de los últimos bit, gracias por el dato, y si activa el rele, pero a tu código ahora es que le falta para que sea una aplicación real, ya que si es un solo rele no habria problema pero si son mas, tendrías que enviar el dato del rele activado, como lo hice en la ultima linea, osea enviar lo que recibiste, o en tal caso verificar el pin del rele que este realmente activo, digamos que mandas activar el rele 1, en el receptor debes responder cual fue el dato recibido y si es correcto activas el rele correspondiente y luego indicas que fue activado.
Hola amigos, quisiera por favor alguien me ayudara intruyendome un poco sobre el siguiente tema que pongo a su consideracion:
Sucede que estoy por presentar mi proyecto de grado el cual consiste en automatizar mi departamento usando PICs; bueno basicamente lo que hace el PIC es recibir un SMS enviado desde cualquier movil y accionar diferentes cosas en base a reles, en otras palabras el PIC recibe un mensaje y este le manda una señal a un o varios reles y estos proceden abrise o cerrarse; el problema que se me ha presentado esque no puedo independizar los reles, osea si quiero activar el rele dos, primero debo activar el rele uno, porque en el codigo fuente esta primero la linea que contiene al rele uno, entonces quiero saber si hay la posiblidad de saltarme esas lineas de codigo para que no siga el orden logico o bien sea poner condicionantes para que si a determinada accion se active cualquier rele ya sea el uno el dos, el tres, etc.
Adjunto mi codigo fuente que este hecho en Basic, en microcode studio.
Cualquier ayuda m sería de gran utilidad.
Gracias
@ DEVICE PIC16F628A
@ DEVICE INTRC_OSC_NOCLKOUT
@ DEVICE WDT_OFF
@ DEVICE PWRT_OFF
@ DEVICE MCLR_ON
@ DEVICE BOD_OFF
@ DEVICE LVP_OFF
@ DEVICE CPD_OFF
@ DEVICE PROTECT_OFF
include "modedefs.bas"
DEFINE OSC 4
CMCON=7
TRISA = %00000000 'todo el puerto a como salida
TRISB = %00000001 'todo el puerto b como salida menor portb.0 es entrada
SYMBOL REL1 = PORTA.0
SYMBOL REL2 = PORTA.1
SYMBOL REL3 = PORTA.2
SYMBOL REL4 = PORTA.3
SYMBOL REL5 = PORTA.4
SYMBOL REL6 = PORTA.5
SYMBOL RX = PORTB.0 'RX ENTRADA
SYMBOL TX = PORTB.1 'TX SALIDA
B0 VAR BYTE
TX = 1
'serout2 Tx,16780,[13] 'ponle esta linea tambien
INICIO:
SerIn2 RX,16780,[WAIT("ACTIVAR"),SKIP 2,DEC B0]
SELECT CASE B0
CASE 0
serout2 Tx,16780,["ERROR DE COMANDO"]
GOTO INICIO
CASE 1
HIGH REL1
PAUSE 1000
GOTO ENVIA2
GOTO INICIO
CASE 2
HIGH REL2
PAUSE 1000
GOTO ENVIA2
GOTO INICIO
CASE 3
HIGH REL3
PAUSE 1000
GOTO ENVIA2
GOTO INICIO
CASE 4
HIGH REL4
PAUSE 1000
GOTO ENVIA2
GOTO INICIO
CASE 5
HIGH REL5
PAUSE 1000
GOTO ENVIA2
GOTO INICIO
end select
GOTO INICIO
ENVIA2:
serout2 Tx,16780,["AT+CMGF = ",#B0,13]
PAUSE 1000
serout2 Tx,16780,["AT+CMGS=",34,"092661649",34,13]
PAUSE 1000
SEROUT2 Tx,16780,["R1 activado ",#B0,26]
GOTO INICIO
@ DEVICE PIC16F628A
@ DEVICE INTRC_OSC_NOCLKOUT
@ DEVICE WDT_OFF
@ DEVICE PWRT_OFF
@ DEVICE MCLR_ON
@ DEVICE BOD_OFF
@ DEVICE LVP_OFF
@ DEVICE CPD_OFF
@ DEVICE PROTECT_OFF
DEFINE OSC 4
CMCON=7
TRISA = %00000000 'todo el puerto a como salida
TRISB = %00000001 'todo el puerto b como salida menor portb.0 es entrada
SYMBOL RX = PORTB.0 'RX ENTRADA
SYMBOL TX = PORTB.1 'TX SALIDA
B0 VAR BYTE
TX = 1
serout2 Tx,16780,[13] 'ponle esta linea tambien
INICIO:
SerIn2 RX,16780,[WAIT("ACTIVAR"),SKIP 2,DEC B0]
PortA=PortA+DCD B0
serout2 Tx,16780,["AT+CMGF = ",#B0,13]
PAUSE 1000
serout2 Tx,16780,["AT+CMGS=",34,"092661649",34,13]
PAUSE 1000
SEROUT2 Tx,16780,["R1 activado ",#B0,26]
GOTO INICIO