would love help from anyone?
im trying to convert the following code from running a servo, to turning a pin on for a second to trigger a relay that would trigger my gate. the idea is being used from this guys video and code for his sms servo based door opener
http://www.youtube.com/embed/eexlYrESdP8
I want to do the same sms opening but that's a later battle.
his code operates the servo currently but i want to have it turn the pin high for a second and then go low so that the gate is tricked into thinking someone pushed the manual open control button and proceeds to run its course.
i have other questions but i want to address them one at a time. this one is how to change the servo from being controlled to just the pin 24 toggled on then off after a second in the same places the servo would be opperated
his sms function uses www.twilio.com so when he send an "o" it will open and respond to him that its "opening" same for "c" close and respond "closing" i would also need an "L" for locked so i could control stopping the gate at what ever position its is in at the time of opening or closing. this is because there is a open/close/lock manual button at the gate that im trying to manipulate through the parallax spinneret
http://www.youtube.com/embed/eexlYrESdP8
I want to do the same sms opening but that's a later battle.
his code operates the servo currently but i want to have it turn the pin high for a second and then go low so that the gate is tricked into thinking someone pushed the manual open control button and proceeds to run its course.
i have other questions but i want to address them one at a time. this one is how to change the servo from being controlled to just the pin 24 toggled on then off after a second in the same places the servo would be opperated
his sms function uses www.twilio.com so when he send an "o" it will open and respond to him that its "opening" same for "c" close and respond "closing" i would also need an "L" for locked so i could control stopping the gate at what ever position its is in at the time of opening or closing. this is because there is a open/close/lock manual button at the gate that im trying to manipulate through the parallax spinneret
'
' NOTICE: Change the value for SetMAC, SetGetway, SetSubnet, and SetIP to match your network!!!
'
' Show how to get data from a form using the "GET" method
' Your inputs must be named "0" thru "9" for example
' Name: <INPUT NAME="0"><BR>
' City: <INPUT NAME="1"><BR>
'
' VarExists[0] will be 1 if input "0" was sent otherwise it will be zero (same for "1" thru "9")
' VarStr[0] will be a pointer to the string entered for the input (same for "1" thru "9")
' Unchecked checkboxes do NOT return the input, checked checkboxes return the string "on"
'
' The variable VarFilename is a pointer to the filename specified in the URL (without the "/" prefix)
'
' If you have more than 10 inputs, you should probably be using the POST method
'
CON
_clkmode = xtal1 + pll16x 'Use the PLL to multiple the external clock by 16
_xinfreq = 5_000_000 'An external clock of 5MHz. is used (80MHz. operation)
ServoCh1 = 24 'Pin that the servo is on
CON
CR = 13
LF = 10
QUOTE = 34
_bytebuffersize = 2048
VAR
'Configuration variables for the W5100
byte MAC[6] '6 element array contianing MAC or source hardware address ex. "02:00:00:01:23:45"
byte Gateway[4] '4 element array containing gateway address ex. "192.168.0.1"
byte Subnet[4] '4 element array contianing subnet mask ex. "255.255.255.0"
byte IP[4] '4 element array containing IP address ex. "192.168.0.13"
long localSocket '1 element for the socket number
'Variables to info for where to return the data to
byte destIP[4] '4 element array containing IP address ex. "192.168.0.16"
long destSocket '1 element for the socket number
'Misc variables
byte data[_bytebuffersize]
' Get variables 0 thru 9
long VarFilename ' pointer to string
byte VarExists[10]
long VarStr[10] ' pointer to string
' Status of the door
byte status
OBJ
ETHERNET : "Brilldea_W5100_Indirect_Driver_Ver006.spin"
''SERVO : "Servo32v7.spin"
PST : "Parallax Serial Terminal.spin"
PUB main
'Set up the servo, set it to neutral
''SERVO.Start
''SERVO.Ramp
''SERVO.SetRamp(ServoCh1,1500,200)
PST.Start(115_200)
'Start the W5100 driver on Parallax Web Server module
ETHERNET.StartINDIRECT(0, 8, 9, 12, 11, 10, 14, 15)
SetMAC($00, $08, $DC, $16, $F2, $04) ' !!! CHANGE TO MATCH YOUR NETWORK !!!
SetGateway(162, 228, 0, 1) ' !!! CHANGE TO MATCH YOUR NETWORK !!!
SetSubnet(255, 255, 255, 0) ' !!! CHANGE TO MATCH YOUR NETWORK !!!
SetIP(162, 228, 0, 120) ' !!! CHANGE TO MATCH YOUR NETWORK !!!
localSocket := 80
destSocket := 80
ETHERNET.SocketOpen(0, ETHERNET#_TCPPROTO, localSocket, destSocket, @destIP[0])
ETHERNET.SocketTCPlisten(0)
repeat
if !ETHERNET.SocketTCPestablished(0)
if ETHERNET.SocketStatus(0) == $00 OR ETHERNET.SocketStatus(0) == $1C
ResetSocket
'PST.Str(string("blah"))
' next
else
bytefill(@data, 0, _bytebuffersize)
WaitCnt(clkfreq / 100 + cnt) ' 10mSec
ETHERNET.rxTCP(0, @data)
if data[0] == "G" ' Assume a GET request
ParseURL
'Send the web page - hardcoded here
'status line
StringSend(0, string("HTTP/1.1 200 OK", CR, LF))
'optional header
StringSend(0, string("Server: Parallax Spinneret Web Server", CR))
StringSend(0, string("Connection: close", CR))
StringSend(0, string("Content-Type: text/html", CR, LF))
StringSend(0, string(CR, LF))
if (byte[VarStr[1]] <> 0)
if (byte[VarStr[1]] == "o")
status := "1"
StringSend(0, string("opening", CR))
''SERVO.SetRamp(ServoCh1,500,200)
elseif (byte[VarStr[1]] == "c")
status := "0"
StringSend(0, string("closing", CR))
''SERVO.SetRamp(ServoCh1,2300,200)
elseif (status == "1")
StringSend(0, string("open", CR))
elseif (status == "0")
StringSend(0, string("closed", CR))
StringSend(0, string(CR, LF))
ResetSocket
return 'end of main
PRI ResetSocket
ETHERNET.SocketTCPdisconnect(0)
ETHERNET.SocketClose(0)
ETHERNET.SocketOpen(0, ETHERNET#_TCPPROTO, localSocket, destSocket, @destIP[0])
ETHERNET.SocketTCPlisten(0)
return
PRI SetMAC(p0, p1, p2, p3, p4, p5)
MAC[0] := p0
MAC[1] := p1
MAC[2] := p2
MAC[3] := p3
MAC[4] := p4
MAC[5] := p5
ETHERNET.WriteMACaddress(true, @MAC[0])
return 'end of SetMAC
PRI SetGateway(p0, p1, p2, p3)
Gateway[0] := p0
Gateway[1] := p1
Gateway[2] := p2
Gateway[3] := p3
ETHERNET.WriteGatewayAddress(true, @Gateway[0])
return 'end of SetGateway
PRI SetSubnet(p0, p1, p2, p3)
Subnet[0] := p0
Subnet[1] := p1
Subnet[2] := p2
Subnet[3] := p3
ETHERNET.WriteSubnetMask(true, @SubNet[0])
return 'end of SetSubnet
PRI SetIP(p0, p1, p2, p3)
IP[0] := p0
IP[1] := p1
IP[2] := p2
IP[3] := p3
ETHERNET.WriteIPAddress(true, @IP[0])
return 'end of SetIP
PRI StringSend(_socket, _dataPtr)
if byte[_dataPtr] <> 0
ETHERNET.txTCP(_socket, _dataPtr, strsize(_dataPtr))
return 'end of StringSend
PRI ParseURL | char, inPlace, outPlace ' !!! NOTICE - THIS MODIFIES data[] !!!
inPlace := 4 ' skip "GET "
VarFileName := @data[5] ' Skip "GET /"
repeat char from 0 to 9
VarExists[char] := 0
VarStr[char] := @EmptyStr
repeat until (char == "?") or (char == " ")
char := data[inPlace++]
data[inPlace-1] := 0 ' String terminator for filename string
outPlace := inPlace
if char == "?"
repeat until char == " "
char := data[inPlace]
if (char =< "9") and (char => "0")
char := char - 48
VarExists[char] := 1
inPlace+=2 ' skip "x="
VarStr[char] := @data[outPlace]
char := data[inPlace]
if (char <> "&") and (char <> " ")
data[outPlace++] := char
repeat until (char == "&") or (char == " ")
inPlace++
char := data[inPlace]
if (char <> "&") and (char <> " ")
if char == "%"
inPlace++
char := data[inPlace++] - 48
if char > 9
char-=7
char := char << 4
data[outPlace]:=char
char := data[inPlace] - 48
if char > 9
char-=7
data[outPlace++]+=char
char := "x"
else
if char == "+"
data[outPlace++] := " "
else
data[outPlace++] := char
data[outPlace++] := 0 ' String terminator
inPlace++
return
DAT
EmptyStr BYTE 0

Comments
in addition to open i would need to change it to have a close button and a stop button.the open and close buttons would default low in the code and the stop would default high high because the manual pushbuttons controls would reflect the same open/close N.O. and stop N.C.
in his code i replaced the servo handlers that i wouldnt be using with this.
where it says PIN24.toggle used to say servo.start blah blah, and PIN25.toggle the same servo.start. because he used servos and i just want to light an led for a second basically.
if (byte[VarStr[1]] <> 0) if (byte[VarStr[1]] == "o") status := "1" StringSend(0, string("opening", CR)) PIN24.Toggle elseif (byte[VarStr[1]] == "c") status := "0" StringSend(0, string("closing", CR)) PIN25.Toggle elseif (status == "1") StringSend(0, string("open", CR)) elseif (status == "0")So i put the PIN.24.toggle which runs the object below and i think it would work but im not sure.
so....my guess is that would work and the same for PIN25.toggle and i would have to modify the code to allow a third option of PIN26.toggle (for stop)
im currently trying to figure out how he interfaced his code with the text message. he used Twilio.com to handle it so you text message the number you get from the site, it responds to im guessing some .php files i put on sd card that relays it to spinneret opening closing or stopping the gate as well as responding back to original text message with the status of the gate ie open, closed, locked, opening, closing......
i think my code may work, maybe not the correct way to do it but work still. but now i need to figure out the sms headache to even test it....
the lastthing is when im using the spinneret im using my cable modem IP and i think that is causing alot of issues because its not a Domain Name.