da
rusty » 23 ott 2012, 17:09
Facciamo le cose fatte bene: lo schema elettrico va postato in fidocad, cosi' che tutti possano aprirlo e modificarlo agevolmente (l'immagine che hai postato in imageshack sinceramente è troppo piccola, non si vedono bene i componenti, anche volendolo ridisegnare non riesco a leggerlo), e intanto posto, come avresti dovuto fare, il sorgente.
Da quello che ho capito a te non interessa molto il tipo di linguaggio utilizzato, dunque se qualcuno volesse rifarlo in assembly o in c e ti postasse l'hex pronto per la programmazione non farebbe alcuna differenza.
Codice sorgente:
- Codice: Seleziona tutto
'****************************************************************
'* Name : CARPUTER5.BAS *
'* Author : Daniels118 *
'* Notice : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 27/04/2012 *
'* Version : 1.0 *
'* Notes : Apertura/chiusura automatica e manuale di un *
'* : in un'auto *
'****************************************************************
'@DEVICE XT_OSC ' sets programmer to external oscillator - low power, HS would be for faster xtals.
DEFINE OSC 8 ' for 8 MHz osc
TRISA = %11111100
TRISB = %11001111
'----- INGRESSI -----
pOpen var porta.2 'pulsante apertura
pClose var porta.3 'pulsante chiusura
fcServo var portb.2 'finecorsa chiusura
pKey var porta.4 'pulsante chiave
tSpeed var portb.3 'velocità
'----- USCITE ----
vccServo var porta.0 'alimentazione servo
sigServo var portb.4 'segnale servo
vccMonitor var porta.1 'alimentazione monitor
vccBuzzer var portb.5 'alimentazione buzzer
'------- VARIABILI ---------
servoState var BYTE 'stato servo (acceso/spento)
curPos var WORD 'posizione corrente servo
dstPos var WORD 'posizione destinazione servo
maxPos var WORD 'posizione massima apertura
minPos var WORD 'posizione minima apertura
posOpen var WORD 'posizione apertura
posClose var WORD 'posizione chiusura
speed var BYTE 'velocità
lKey var BYTE 'accensione chiave
state var BYTE 'stato (aperto/chiuso)
i var byte
'------- INIT ---------
init:
low vccservo
low vccmonitor
low vccbuzzer
low sigservo
servoState = 0
maxpos = 360
minpos = 110
posOpen = 110
posClose = 370
dstPos = posclose
curPos = dstPos
PULSOUT sigSERVO, curpos
state = 0
lkey = 0
PAUSE 1000
'------ MAIN LOOP ---------
mainloop:
gosub getspeed
if pKey = 1 then
if lkey = 0 then gosub openmonitor
if popen = 1 and pclose = 1 then
if state = 1 then
gosub closemonitor
else
gosub openmonitor
endif
elseif popen = 1 and dstpos < maxpos then
dstpos = dstpos + 15
gosub moveservo
while pOpen = 1 '
wend '
elseif pclose = 1 and dstpos > minpos then
dstpos = dstpos - 15
gosub moveservo
while pClose = 1 '
wend '
else '
pause speed '
PULSOUT sigSERVO, curpos '
endif
else
if State = 1 then gosub closemonitor
ENDIF
lKey = pkey
GOTO mainloop
'---------- APRE IL MONITOR ---------
openMonitor:
High vccmonitor
dstPos = posOpen
gosub moveServo
state = 1
'gosub servoOff
RETURN
'---------- CHIUDE IL MONITOR ---------
closeMonitor:
low vccmonitor
posOpen = dstPos
dstPos = posclose
gosub moveServo
state = 0
gosub servoOff
RETURN
'---------- ATTIVA L'ALIMENTAZIONE DEL SERVO ---------
servoOn:
if servoState = 0 then
servoState = 1
high vccServo
for i = 0 to 20
PULSOUT sigSERVO, curpos
pause 19
next i
endif
return
'---------- TOGLIE L'ALIMENTAZIONE DEL SERVO ---------
servoOff:
if servoState = 1 then
'for i = 0 to 250
'if pOpen = 1 or pClose = 1 or pKey = 0 then return
'pause 20
'next i
low vccServo
servoState = 0
endif
return
'---------- LEGGE VELOCITA' ---------
getSpeed:
speed = 8
RETURN
'------ MUOVE SERVOCOMANDO --------
moveServo:
if curPos < dstPos then
gosub servoOn
repeat
PAUSE SPEED
curPos = curPos + 1
PULSOUT sigSERVO, curpos
until curPos = dstPos
elseif curPos > dstPos and fcservo = 0 then
gosub servoOn
repeat
PAUSE SPEED
curPos = curPos - 1
PULSOUT sigSERVO, curpos
if fcServo = 1 then dstPos = curPos
until curPos = dstPos
endif
RETURN
end
A te postare lo schema elettrico, leggibile pero', e soprattutto specifica bene cosa vorresti togliere e cosa vorresti aggiungere e dove; postare un'immagine su imageshack lascia il tempo che trova.
Il mio motto è
aiutami ad aiutarti, ovvero mettimi in condizione di avere tutte le informazioni per poter capire cosa vuoi ottenere esattamente.
Se per esempio mi posti un link ad una immagine scrivendo anche
carlo201983 ha scritto:.. anche se un po' vecchiotto infatti i trimmer non ci sono + ed i pulsanti sono 2 comunque rende l'idea
non so' che farmene, ridisegna come vorresti che fosse, o perlomeno cosa vorresti ottenere, spiega nei minimi dettagli.
Saluti