PPTEA
PPTEA TIMER LOGIX I ,timer multifunzione

VISUALIZZA L'ALBUM

Pag: (2)   [1]   2    (Ultimo)


FinePagina

ecologix1971

Avatar
GigaWatt


MODERATORE
Msg:4165

Stato:



Inviato il: 21/03/2015 20:47:14

ciao a tutti,
quello che posto e' un timer ciclico basato sulla configurazione del pptea con display a 6 fili, memoria esterna da 8k (24c64), ds1307, buzzer ed lm35dz.
http://www.energialternativa.info/public/newforum/ForumEA/D/2015-03-21_20.18.21.jpg

CARATTERISTICHE


il PPTEA TIMER LOGIX I e' un timer con possibilita' di modificare i tempi di accenzione e spegnimento del carico nonche' il numero di cicli da effettuare.
per ciclo e' inteso una fase di on ed una fase di off.
http://www.energialternativa.info/public/newforum/ForumEA/D/21032015423.jpg

e' possibile inoltre inserire varie opzioni tra cui:

- RANDOM
- NON STOP
- REVERSE
- SOUND EFFECT
- TIME SLOT

http://www.energialternativa.info/public/newforum/ForumEA/D/Creatore%20di%20collage%20di%20foto_isYOkH.png

e' presente la data e l'ora attuale, regolabile in esecuzione del codice, quindi senza necessta' del pc.

i tempi e le varie opzioni vengono memorizzati all'interno delle ultime celle del pic, mentre il codice vero e proprio (circa 5400 token),
risiede nella memoria esterna (8k).

e' possibile uscire dal timer durante l'esecuzione e tornare al menu' iniziale.

impostando il tempo di off=0 il timer diviene a ciclo continuo.

alla fine del conteggio viene eseguita una melodia composta da 35 note musicali.

durante il funzionamento e' possibile visualizzare:

- STATO DEL CARICO (ON OPPURE OFF)
- TEMPO TRASCORSO
- TEMPO RIMANENTE
- OPZIONI INSERITE
- DATA E ORA
- TEMPERATURA
- FASCIA ORARIA

http://www.energialternativa.info/public/newforum/ForumEA/D/Creatore%20di%20collage%20di%20foto_EmNnkM.png

http://www.energialternativa.info/public/newforum/ForumEA/D/Creatore%20di%20collage%20di%20foto_FOaGOY.png




DESCRIZIONE DELLE VARIE OPZIONI

- RANDOM (simbolo "R")

questa opzione, permette di estrarre dei valori casuali che vengono assegnati al tempo di accenzione, spegnimeno e numero di cicli.

al momento che la funzione viene disinserita, ritornano i valori precedentemente impostati.

i valori casuali non vengono memorizzati all'interno del pic, ma sono soltato eseguiti.

esempio:

ON=05 OFF=01 NUMERO CICLI=03

in questo caso il timer effetuera' 3 cicli in totale i cui tempi di on ed off saranno estratti casualmente ad ogni ciclo.

se abbinata alla funzione "NON STOP", la cosa si ripete all'infinito.

-NON STOP (simbolo "A")

tale funzione permette di utilizzare il timer in modo ciclico, finito il primo ciclo ricomincia da capo, rispettando i tempi di accenzione e spegnimento impostati.

- REVERSE (simbolo "r")

per default il timer parte con il carico disattivato (partenza con il tempo di off).

con questa funzione inserita e' possibile invertire la situazione e partire quindi con il carico attivato (partenza con tempo di on)

- SOUND EFFECT (simbolo "S")

il codice durante il funzionamento emette vari beep ed una melodia di fine ciclo.

con questa opzione si puo' disattivare l'audio.

- TIME SLOT (simbolo "T")

questa opzione permette di eseguire tutte le impostazioni in una determinata fascia oraria.

se viene avviato il timer con una fascia oraria inserita, questa viene visualizzata e c'e' la possibilita' di controllare l'ora attuale mediante il tasto nero (bit5)

IMPOSTAZIONE DEI VALORI

per impostare i valori del tempo di accenzione, spegnimento, numero cicli ed eventuali settaggi dell'orario e della fascia oraria di funzionamento, si utilizzano i tasti nel seguente modo.

innanzitutto viene visualizzato il valore in memoria, se questo va bene si puo' semplicemente confermare con il tasto rosso (biT3), altrimenti si preme una volta il tasto nero (bit5) e la prima cifra comincia a lampeggiare.

a questo punto sempre con lo stesso tasto (nero), si avanza il numero delle decine fino ad arrivare al numero massimo impostato nel codice riferito al campo da impostare.

esempio se si inserisce il tempo di accenzione, spegnimento e numero di cicli, il valore massimo sara' 99.

se invece si inserisce l'ora, il valore massimo sara' 23 , 59 per i minuti, 31 per i giorni, 12 per i mesi.

una volta scelta la cifra che identifica le decine, si passa alle unita procedendo nello stesso modo.

confermata anche questa cifra, si preme ancora una volta il tasto rosso ed il parametro e' settato.

Il circuito puo' essere alimentato direttamente a 12 vdc oppure tramite usb 5vdc.

dietro al display e' presente il rele' (bobina a 5vdc) su cui collegare il carico.

il led rosso posto sotto al display indica visivamente lo stato del carico.

questo e' il codice:



'PRAGMA EXTENDED32K_EEPROM ' MEMORIA ESTERNA 24C256

PRAGMA EXTENDED8K_EEPROM ' MEMORIA ESTERNA 24C64



'SETIO=&B100000000000101001 'DISPLAY 2 WIRE UN CADS,2 INGRESSI E RESTO USCITE

SETIO=&B000000000000101001 'DISPLAY 6 WIRE UN CADS,2 INGRESSI E RESTO USCITE


'-------------------------------------------------
' LOGIX TIMER 4_3_7 DEMO VERSION
'-------------------------------------------------

' STARTED: 02_01_2015
' FINISHED:
' FIRMWARE 4_2_4
' MEMORY 8K _24C64
' MEMORY OCCUPED > 5358 TOKEN
' BASED ON: TIMER 2015_1
' UPGRADE : 18_03_2015

'
'-----------------------------------------------------------------
' DEFINIZIONE VARIABILI/COSTANTI USATE : 60
'-----------------------------------------------------------------

' A.....................................NUMERO PROGRESSIVO NOTE MUSICALI
' CAMP............................CAMPIONE DI TEMPERATURA
' CYCLE...........................NUMERO PROGRESSIVO CICLI
' _COUNT........................NUMERO PROGRESSIVO CONTEGGI MAX 2
' DAY................................GIORNO
' DELAY............................VARIABILE USATA PER LO SPEGNIMENTO DELL'ILLUMINZAIONE DISPLAY
' DISPL..............................ILLUMINAZIONE DISPLAY 0=SPENTO 1=ACCESO
' DIGIT..............................VARIABILE USATA PER IMPOSTARE I DATI A DUE CIFRE
' HOUR.............................ORA
' LOAD.............................CARICO 0=OFF 1=ON
' MAX................................VALORE MASSIMO IMPOSTABILE
' MED_TEMP....................MEDIA TEMPERATURA
' MIN.................................VALORE MINIMO IMPOSTABILE
' MINUTE..........................MINUTI
' MINUTI.......................... TEMPO DI ATTIVAZIONE CONTANTORE ON ED OFF ESEMPIO :MINUTI=10 (10 MIN ON & 10 MIN OFF)
' MONTH...........................MESE
' M1...................................POSIZIONE DEL MENU DI SETUP
' M2...................................POSIZIONE DEL MENU TIME_DATE
' NEW_SET.......................NUOVO ORARIO IMPOSTATO
' NOTA..............................NOTA MUSICALE
' NON_STOP.....................STATO FUNZIONE NON STOP 1=ATTIVA 0=DISATTIVA
' NOW................................MINUTI TOTALI DALLA MEZZANOTTE
' NUM_CAMP...................NUMERO CAMPIONAMENTI
' NUM_NOTE....................NUMERO NOTE DA SUONARE
' N_CYCLES.....................NUMERO DI CICLI IMPOSTATI
' N_DIGIT..........................PRIMA O SECONDA CIFRA NEL SETTAGGIO DEI VALORI
' ON_TIME.........................IMPOSTAZIONE TEMPO CARICO ATTIVO
' OFF_TIME........................IMPOSTAZIONE TEMPO CARICO DISATTIVO
' OPTIONS..........................USATA PER LA VISUALIZZAZIONE DELLA TIME_LOT IN ESECUZIONE TIMER
' POS....................................POSIZIONE CURSORE NEL SETTAGGIO DEI VALORI
' RAMDOM.........................STATO FUNZIONE RANDOM 1=ATTIVA 0=DISATTIVA
' REVERSE..........................STATO FUNZIONE REVERSE 1=ATTIVA 0=DISATTIVA
' SEC_SUBTOT..................NUMERO SECONDI DIM OGNI CICLO DA SOMMARE AL TOTALE
' SEC_TRASC....................SECONDI TRASCORSI
' SEC_RIMAN....................SECONDI RIMANENTI
' SEC_TOT.........................SECONDI TOTALI
' SMS..................................NUMERO PROGRESSIVO PER INDICARE I MESSAGGI DELLA SECONDA RIGA
' SMS_1..............................MESSAGGIO 1
' SMS_2..............................MESSAGGIO 2
' SMS_3..............................MESSAGGIO 3
' SMS_4..............................MESSAGGIO 4
' SMS_5..............................MESSAGGIO 5
' SMS_6..............................MESSAGGIO 6
' SOUND_EFFECT.............STATO FUNZIONE SOUND EFFECT 1=ATTIVA 0=DISATTIVA
' START_HOUR..................ORA PARTENZA TIME SLOT
' START_MINUTE..............MINUTI PARTENZA TIME SLOT
' STATO..............................MESSAGGIO "ON>" OPPURE "OFF>"
' STATUS............................VARIABILE USATA PER VISUALIZZARE MESAGGI "NO" O "YES" NELLE VARIE OPZIONI
' STOP_HOUR....................ORA FINE TIME SLOT
' STOP_MINUTE................MINUTI FINE TIME SLOT
' STR_N_CYCLES..............MESSAGGIO N_CYCLES NEL SET UP
' STR_N_CYCLE................ICONA "A"=AUTOMATICO CICLI INFINITI OPPURE "-" NUMERO CICLI DEFINITI
' STR_RAMDOM................ICONA RANDOM "R" O "-" NELLA VISUALIZZAZIONE OPZIONI
' STR_REVERSE.................ICONA "R"=REVERSE OPPURE "-" DI DEFAULT NELLA VISAULIZZAZIONE DELLE OPZIONI
' STR_SOUND_EFFECT....ICONA "S"=SOUND ON 0 "-" SOUND OFF NELLA VISUALIZZAZIONE DELLE OPZIONI
' STR_TIME_SLOT.............ICONA "T" PER IDENTIFICARE SE C'E' LA TIME SLOT INSERITA OPPURE "-" SE DISINSERITA
' STR_VALUE.....................TRASFORMA IL VALORE DA SETTARE IN STRINGA
' _SET_TIME_SLOT...........USATA PER IL SETTAGGIO DEL TIME SLOT
' TEMP.................................TEMPERATURA ISTANTANEA
' TIME_DATE......................STATO TIME DATE 1=YES 0=NO
' TIME_SLOT......................TIME SLOT INSERITA=1 DISINSERITA=0
' TIME_SLOT_WORK........ASSUME VALORE 0 (ORARIO FUORI DALLA TIME_SLOT) O 1 (ORARIO DENTRO LA TIME_SLOT)
' TOT_TEMP.......................SOMMA TEMPERATURA
' VALUE..............................VARIABILE USATA PER IMPOSTARE VALORI A DUE CIFRE
' VALUE_MAX...................VALORE MASSIMO IMPOSTABILE X TEMPI E CICLI
' X........................................VALORE MOMENTANTANO PER SETTARI LA PRIMA E LA SECONDA CIFRA
' YEAR................................ANNO




          
'-------------------------------------------------------------
' DEFINIZIONE BIT
'-------------------------------------------------------------


' BIT 6 = OUT (USATO PER IL CARICO)
' BIT 4 = ILLUMINAZIONE DISPLAY
' BIT 3 = IN = TASTO 2
' BIT 5 = IN = TASTO 1


'--------------------------------------------------------------
' VISUALIZZAZIONE DEI MESSAGGI SUL DISPLAY
'--------------------------------------------------------------
'
' SMS_1 SMS_2 SMS_3 ES.1 01:56 ON> 08:04 ES.2 02.00 OFF> 00.00
' SMS_4 SMS_6 SMS_5 21.4c RArS T---- ON:02 1/5 OF:04




DIM DIGIT(2) AS WORD


'-------------------------------------------------------------------------------------------------------
'NOTE MUSICALI
'-------------------------------------------------------------------------------------------------------

DATA _MI5,_SOL5,_SOL5,_SOL5,_FA5,_MI5,_SOL5, PAUSE
DATA _SOL5,_LA5,_FA5,_LA5,_DO6,_LA5,_SOL5, PAUSE
DATA _SOL5,_LA5,_FA5,_LA5,_DO6,_SI5,_LA5,_SOL5, PAUSE,_LA5, _SOL5,_MI5, PAUSE
DATA _MI5,_SOL5,_SOL5,_SOL5,_LA5,_SI5, _DO6

'-----------------------------------------------------------------------------------------------------
'COSTANTI
'-----------------------------------------------------------------------------------------------------

'CONSTANT NUM_CAMP=150 'RILEVAMENTO TEMPERATURA
'CONSTANT NUM_NOTE=35 'NOTE MUSICALI DI FINE CICLO
CONSTANT VALUE_MAX=99 'VALORE MAX IMPOSTABILE PER ON_TIME, OFF_TIME, N_CYCLES

'------------------------------------------------------------------------------------------------------
'RECUPERO DATI ED OPZIONI IN MEMORIA: ON_TIME, OFF_TIME, N_CYCLES, ECC.
'------------------------------------------------------------------------------------------------------

GOSUB :BASE_VALUES_ALL
GOSUB :INTRODUCTION

'------------------------------------------------------------------------------------------------------
:INITIAL_PARAMETERS
'------------------------------------------------------------------------------------------------------

GOSUB :RESET_SOME_PARAMETERS
GOSUB :SOUND_EFFECT_STATUS
GOSUB :REVERSE_STATUS
GOSUB :LOAD_STATUS
GOSUB :RANDOM_STATUS
GOSUB :NON_STOP_STATUS
GOSUB :TIME_SLOT_STATUS

'-------------------------------------------------------------------------------------------------------
:INITIAL_FASE
'-------------------------------------------------------------------------------------------------------

LCDCLEAR
SMS_4=
""
M1=0
WAITMS 500
GOTO :INITIAL_CHOICE
LCDCLEAR

'--------------------------------------------------------------------------------------------------------
:PRE_START
'--------------------------------------------------------------------------------------------------------

GOSUB :LIGHT_ON

'--------------------------------------------------------------------------------------------------------
:READY_TO_START
'--------------------------------------------------------------------------------------------------------

GOSUB :RESET_SOME_PARAMETERS
GOSUB :CHECK_OPTIONS

IF TIMER > (DELAY+5) THEN GOSUB :LIGHT_OFF
IF TIME_SLOT=1 THEN GOSUB :CHECK_TIME_SLOT_WORKING
IF TIME_SLOT=1 AND TIME_SLOT_WORK=0 THEN :TIME_SLOT_WORK_MESSAGE


LCDCLEAR
PWMDC=0
GOSUB :LIGHT_ON
GOSUB :SHORT_SOUND
'GOSUB :BACK_TIME

'-------------------------------------------------------------------------------------------------------
:NEW_CYCLE
'-------------------------------------------------------------------------------------------------------

IF OFF_TIME=0 THEN :ONLY_ON_TIME
OUTBIT(6)=LOAD
GOTO EFAULT_MODE

'-------------------------------------------------------------------------------------------------------
:ONLY_ON_TIME
'-------------------------------------------------------------------------------------------------------

OUTBIT(6)=1

'-------------------------------------------------------------------------------------------------------
EFAULT_MODE
'-------------------------------------------------------------------------------------------------------

OUTBIT(4)=DISPL
GOSUB :LOAD_STATUS
'SEC_SUBTOT+=SEC_TRASC 'SECONDI SUB TOTALI

'-------------------------------------------------------------------------------------------------------
:COUNTER
'-------------------------------------------------------------------------------------------------------

IF DISPL=0 THEN :START_COUNTING
'IF TIMER>3 THEN GOSUB :LIGHT_OFF
IF TIMER>(DELAY+5) THEN GOSUB :LIGHT_OFF

'-------------------------------------------------------------------------------------------------------
:START_COUNTING
'-------------------------------------------------------------------------------------------------------

SEC_TRASC=
INT(TIMER) 'SECONDI TRASCORSI
  SEC_RIMAN=(MINUTI*60)-SEC_TRASC
'SECONDI RIMANENTI
'SEC_TOT=SEC_SUBTOT+SEC_TRASC 'SECONDI TOTALI
   SMS_3=
RIGHT("0"&SEC_RIMAN/60 MOD 100,2)&":"&RIGHT("0"&SEC_RIMAN MOD 60,2)
    SMS_1=
RIGHT("0"&SEC_TRASC/60 MOD 100,2)&":"&RIGHT("0"&SEC_TRASC MOD 60,2)
    
GOSUB :CHECK_SECOND_LINE
    
IF INPBIT(5)=1 THEN GOSUB :CHANGE_SECOND_LINE
   
GOSUB :RECORD_TEMP_VALUES
  
IF INPBIT(3)<>1 THEN :BACK_FROM_CHOICE_EXIT
 
GOSUB :EXIT
GOTO :READY_TO_EXIT

'--------------------------------------------------------------------------------------------------------
:BACK_FROM_CHOICE_EXIT
'--------------------------------------------------------------------------------------------------------

GOSUB :SHOWING
IF TIME_SLOT=1 THEN GOSUB :CHECK_TIME_SLOT_WORKING
IF TIME_SLOT=1 AND TIME_SLOT_WORK=0 THEN :TIME_SLOT_WORK_MESSAGE
IF SEC_RIMAN>0 THEN :COUNTER

'--------------------------------------------------------------------------------------------------------
:END_COUNT
'--------------------------------------------------------------------------------------------------------

GOSUB :SHORT_SOUND
GOSUB :LIGHT_ON
 
PWMDC=0
   DELAY=
TIMER
    LOAD=(LOAD+1)
MOD 2
     CYCLE=CYCLE+.5
     
IF CYCLE=100 THEN GOSUB :_RESET_CYCLE
     _COUNT=(_COUNT+1)
MOD 2
    
IF RANDOM=1 AND _COUNT=0 THEN GOSUB :RANDOM_VALUES_PART_2
   
IF NON_STOP=1 THEN :NEW_CYCLE
 
IF CYCLE=N_CYCLES THEN :CYCLES_TERMINATED
GOTO :NEW_CYCLE

'--------------------------------------------
:_RESET_CYCLE
'--------------------------------------------

CLR CYCLE
RETURN

'--------------------------------------------
:LOAD_STATUS
'--------------------------------------------

IF LOAD=0 THEN GOSUB :LOAD_OFF
IF LOAD=1 THEN GOSUB :LOAD_ON
RETURN

'-------------------------------------------
:LOAD_OFF
'-------------------------------------------

SMS_2=
"OFF>"
MINUTI=OFF_TIME
RETURN

'-------------------------------------------
:LOAD_ON
'-------------------------------------------

SMS_2=
" ON>"
MINUTI=ON_TIME
RETURN

'-------------------------------------------
:MICRO_SOUND
'-------------------------------------------

IF SOUND_EFFECT=0 THEN RETURN
FRQ_DO6,150
RETURN

'-------------------------------------------
:SHORT_SOUND
'-------------------------------------------

IF SOUND_EFFECT=0 THEN RETURN
FRQ_DO6,300
RETURN

'--------------------------------------------
:LONG_SOUND
'--------------------------------------------

IF SOUND_EFFECT=0 THEN RETURN
FRQ_DO6,450
RETURN

'--------------------------------------------
:LIGHT_OFF
'--------------------------------------------

CLR DELAY
DISPL=0
OUTBIT(4)=DISPL
RETURN

'--------------------------------------------
:LIGHT_ON
'--------------------------------------------

DELAY=
TIMER
DISPL=1
OUTBIT(4)=DISPL
RETURN

'-----------------------------------------------------------------------------
:RECORD_TEMP_VALUES
'-----------------------------------------------------------------------------

'CAMP=(CAMP+1) MOD NUM_CAMP
CAMP=(CAMP+1)
MOD 150
TEMP=
CADS1*CAD_TO_TEMP
TOT_TEMP+=TEMP
'IF CAMP=(NUM_CAMP-1) THEN GOSUB :UPDATE_TEMP
IF CAMP=(150-1) THEN GOSUB :UPDATE_TEMP
RETURN

'----------------------------
:UPDATE_TEMP
'----------------------------

GOSUB :MICRO_SOUND
GOSUB :LIGHT_ON
'MED_TEMP=TOT_TEMP/NUM_CAMP
MED_TEMP=TOT_TEMP/150
WAITS 1
CLR TOT_TEMP
RETURN

'-----------------------------------------------------------------------------
:INITIAL_CHOICE
'-----------------------------------------------------------------------------

PWMDC=0
GOSUB :LIGHT_ON
LCDPOS=&H11
LCDWRITE="START"
LCDPOS=&H1C
LCDWRITE="SETUP"
LCDPOS=&H26
LCDWRITE="CHOOSE"

'--------------------------------
:WAIT_INITIAL_CHOICE
'--------------------------------

IF TIMER> (DELAY+5) THEN GOSUB :LIGHT_OFF
IF INPBIT(5)=1 THEN :PRE_START
IF INPBIT(3)=1 THEN :SETUP
GOTO :WAIT_INITIAL_CHOICE

'-------------------------------------------------------------------------------
:SHOWING
'-------------------------------------------------------------------------------

LCDPOS=&H11
LCDWRITE=""&SMS_1
LCDPOS=&H17
LCDWRITE=""&SMS_2
LCDPOS=&H1C
LCDWRITE=""&SMS_3
LCDPOS=&H21
LCDWRITE=SMS_4
LCDPOS=&H2C
LCDWRITE=SMS_5
LCDPOS=&H27
LCDWRITE=SMS_6
RETURN

'--------------------------------------------------------------------------------
:CYCLES_TERMINATED
'--------------------------------------------------------------------------------

OUTBIT(6)=0
GOSUB :LIGHT_ON
WAITS 2
LCDCLEAR
PWMDC=0
GOSUB :CYCLES_TERMINATED_MESSAGE
IF SOUND_EFFECT = 0 THEN :READY_FOR_PRESS
GOTO :SING_SONG

'--------------------------------------------------------------------------------
:CYCLES_TERMINATED_MESSAGE
'--------------------------------------------------------------------------------

LCDCLEAR
LCDPOS=&H16
LCDWRITE="CYCLES"
LCDPOS=&H24
LCDWRITE="TERMINATED"
RETURN

'----------------------------------------------------------------------------------
:SING_SONG
'----------------------------------------------------------------------------------

GOSUB :LIGHT_ON
READ NOTA
FRQ NOTA, 150
X++
'IF A<(NUM_NOTE+1) THEN :SING_SONG
IF X<(35+1) THEN :SING_SONG
CLR X
RESTORE

'---------------------------------------------------------------------------------
:READY_FOR_PRESS
'---------------------------------------------------------------------------------

WAITS 2
LCDCLEAR
LCDPOS=&H11
LCDWRITE="PRESS ANY BUTTON"
LCDPOS=&H24
LCDWRITE="TO RESTART"

'----------------------------------------------------------------------------------
:WAIT_FOR_RESTART
'----------------------------------------------------------------------------------

IF TIMER>(DELAY+5) THEN GOSUB :LIGHT_OFF
IF INPBIT(5)=1 OR INPBIT(3)=1 THEN :INITIAL_PARAMETERS
IF TIME_SLOT=1 THEN GOSUB :CHECK_TIME_SLOT_WORKING
IF TIME_SLOT=1 AND TIME_SLOT_WORK=0 THEN :TIME_SLOT_WORK_MESSAGE
GOTO :WAIT_FOR_RESTART

'-----------------------------------------------------------------------------------
:FORWARD
'-----------------------------------------------------------------------------------

CLR X
OUTBIT(4)=0
GOTO :INITIAL_PARAMETERS

'-----------------------------------------------------------------------------------
:INTRODUCTION
'-----------------------------------------------------------------------------------

LCDCLEAR
GOSUB :LONG_SOUND
GOSUB :LIGHT_ON
LCDPOS=&H12
LCDWRITE="TIMER LOGIX I"
'LCDWRITE=" TIMER 4_3_7"
LCDPOS=&H21
'LCDWRITE="BY ECOLOGIX"
LCDWRITE="POWERED BY PPTEA"

WAITS 3
PWMDC=0
RETURN

'------------------------------------------------------------------------------------------------------------
:SETUP 'START SETUP MENU
'------------------------------------------------------------------------------------------------------------

GOSUB :SHORT_SOUND
GOSUB :LIGHT_ON
WAITMS 500
LCDCLEAR

'----------------------------
:SETUP_MESSAGE
'----------------------------

SMS_2=
"SETUP"
SMS_1=
""
SMS_3=
""
SMS_4=
""
SMS_5=
""
SMS_6=
""

'--------------------------------------------------------------------------------------------------
:SETUP_MENU
'--------------------------------------------------------------------------------------------------

GOSUB :SHOWING

IF M1=0 AND RANDOM=1 THEN GOSUB :RANDOM_VALUES_ALL
IF M1=0 AND RANDOM=0 THEN GOSUB :BASE_VALUES
IF M1=1 THEN :ON_TIME
IF M1=2 THEN :OFF_TIME
IF M1=3 THEN :CYCLE_NUMBER
IF M1=0 THEN :RANDOM
IF M1=4 THEN :NON_STOP
IF M1=5 THEN :REVERSE
IF M1=6 THEN :SOUND_EFFECT
IF M1=7 THEN :SET_TIME_DATE

IF M1=8 AND TIME_DATE=0 THEN :FORWARD_MENU_SETUP_STEP_2
IF M1=8 AND TIME_DATE=1 THEN :SETUP_TIME_DATE_MESSAGE

IF M1=9 THEN :TIME_SLOT

IF M1=10 AND TIME_SLOT=0 THEN :FORWARD_MENU_SETUP_STEP_2
IF M1=10 AND TIME_SLOT=1 THEN :SET_TIME_SLOT

IF M1=11 AND _SET_TIME_SLOT=0 THEN :FORWARD_MENU_SETUP_STEP_2
IF M1=11 AND _SET_TIME_SLOT=1 THEN :SETUP_TIME_SLOT_MESSAGE




'--------------------------------------------------------
:FINISH_SETUP_MENU 'FINE
'--------------------------------------------------------

IF INPBIT(3)=1 THEN :FORWARD_MENU_SETUP
GOTO :SETUP_MENU

'--------------------------------------------------------
:FORWARD_MENU_SETUP
'--------------------------------------------------------

GOSUB :LIGHT_ON
GOSUB :SHORT_SOUND

'---------------------------------------------------------
:FORWARD_MENU_SETUP_STEP_2
'---------------------------------------------------------

M1++
IF M1=12 THEN GOSUB :SAVE_RECORDS
IF M1=12 THEN :INITIAL_FASE
GOTO :SETUP_MENU

'---------------------------------------------------------------------------
:SAVE_RECORDS
'---------------------------------------------------------------------------

CLR X
IF RANDOM=1 THEN :SAVE_RECORDS_PART_2
EEXTERNAL=0
CELL=240
WEEPROM=ON_TIME
CELL=241
WEEPROM=OFF_TIME
CELL=242
WEEPROM=N_CYCLES

'----------------------------------------------------------------------------
:SAVE_RECORDS_PART_2
'----------------------------------------------------------------------------

EEXTERNAL=0
CELL=243
WEEPROM=SOUND_EFFECT
CELL=244
WEEPROM=RANDOM
CELL=245
WEEPROM=NON_STOP
CELL=246
WEEPROM=REVERSE
CELL=247
WEEPROM=TIME_SLOT
CELL=248
WEEPROM=START_HOUR
CELL=249
WEEPROM=START_MINUTE
CELL=250
WEEPROM=STOP_HOUR
CELL=251
WEEPROM=STOP_MINUTE

EEXTERNAL=1

RETURN


'-------------------------------------------------------------------------------
:ON_TIME
'-------------------------------------------------------------------------------

SMS_4=
"ON TIME = "&RIGHT("0"&ON_TIME,2)&" "
IF INPBIT(5)=1 THEN :SET_ON_TIME
GOTO :FINISH_SETUP_MENU

'---------------------
:SET_ON_TIME
'---------------------

GOSUB :LIGHT_ON
VALUE=ON_TIME
MAX=100
MIN=1
GOSUB :SET_NUMBER
ON_TIME=VALUE
ON_TIME=ON_TIME/1
GOTO :ON_TIME

'----------------------------------------------------------------------------------
:OFF_TIME
'----------------------------------------------------------------------------------

SMS_4=
"OFF TIME= "&RIGHT("0"&OFF_TIME,2)&" "
IF INPBIT(5)=1 THEN :SET_OFF_TIME
GOTO :FINISH_SETUP_MENU

'--------------------
:SET_OFF_TIME
'--------------------

GOSUB :LIGHT_ON
VALUE=OFF_TIME
MAX=100
MIN=0
GOSUB :SET_NUMBER
OFF_TIME=VALUE
OFF_TIME=OFF_TIME/1
GOTO :OFF_TIME

'-------------------------------------------------------------------------------------------
:CYCLE_NUMBER
'-------------------------------------------------------------------------------------------

SMS_4=
"N.CYCLES= "&RIGHT("0"&N_CYCLES,2)&" "
IF INPBIT(5)=1 THEN :SET_N_CYCLES
GOTO :FINISH_SETUP_MENU

'-----------------------
:SET_N_CYCLES
'-----------------------

GOSUB :LIGHT_ON
VALUE=N_CYCLES
MAX=100
MIN=1
GOSUB :SET_NUMBER
N_CYCLES=VALUE
N_CYCLES=N_CYCLES/1
GOTO :CYCLE_NUMBER

'-------------------------------------
:SETUP_TIME_DATE_MESSAGE
'-------------------------------------

GOSUB :BACK_TIME
LCDCLEAR

SMS_1=
"SET TIME DATE"
SMS_2=
""
SMS_3=
""
SMS_4=
""
SMS_5=
""
SMS_6=
""


'-------------------------------------
:SETUP_TIME_DATE_MENU
'-------------------------------------


GOSUB :SHOWING

IF M2=0 THEN AY
IF M2=1 THEN :MONTH
IF M2=2 THEN :YEAR
IF M2=3 THEN :HOUR
IF M2=4 THEN :MINUTE

'--------------------------------------------
:FINISH_SETUP_TIME_DATE_MENU
'--------------------------------------------

IF INPBIT(3)=1 THEN :FORWARD_SETUP_TIME_DATE_MENU
GOTO :SETUP_TIME_DATE_MENU

'-------------------------------------------------
:FORWARD_SETUP_TIME_DATE_MENU
'-------------------------------------------------


GOSUB :LIGHT_ON
GOSUB :SHORT_SOUND
M2++
IF M2=5 THEN :NEW_TIME_DATE
GOTO :SETUP_TIME_DATE_MENU

'-----------------------
:NEW_TIME_DATE
'-----------------------

CLR M2, TIME_DATE
SETDATE=DAY & "/" & MONTH & "/" & YEAR & " " & HOUR & ":" & MINUTE & ":00 1"
'RETURN
GOTO :SETUP

'-----------------------------------
AY
'-----------------------------------

SMS_4=
"DAY = "&RIGHT("0"&DAY,2)&" "
IF INPBIT(5)=1 THEN :SET_DAY
GOTO :FINISH_SETUP_TIME_DATE_MENU

'---------------
:SET_DAY
'---------------

GOSUB :LIGHT_ON
VALUE=DAY
MAX=32
MIN=1
GOSUB :SET_NUMBER
DAY=VALUE
GOTO AY

'-----------------------------------
:MONTH
'-----------------------------------

SMS_4=
"MONTH = "&RIGHT("0"&MONTH,2)&" "
IF INPBIT(5)=1 THEN :SET_MONTH
GOTO :FINISH_SETUP_TIME_DATE_MENU

'-------------------
:SET_MONTH
'-------------------

GOSUB :LIGHT_ON
VALUE=MONTH
MAX=13
MIN=1
GOSUB :SET_NUMBER
MONTH=VALUE
GOTO :MONTH


'-----------------------------------
:YEAR
'-----------------------------------

SMS_4=
"YEAR = "&RIGHT("0"&YEAR,2)&" "
IF INPBIT(5)=1 THEN :SET_YEAR
GOTO :FINISH_SETUP_TIME_DATE_MENU

'----------------
:SET_YEAR
'----------------

GOSUB :LIGHT_ON
VALUE=YEAR
MAX=100
MIN=1
GOSUB :SET_NUMBER
YEAR=VALUE
GOTO :YEAR

'-----------------------------------
:HOUR
'-----------------------------------

SMS_4=
"HOUR = "&RIGHT("0"&HOUR,2)&" "
IF INPBIT(5)=1 THEN :SET_HOUR
GOTO :FINISH_SETUP_TIME_DATE_MENU

'--------------
:SET_HOUR
'--------------

GOSUB :LIGHT_ON
VALUE=HOUR
MAX=24
MIN=0
GOSUB :SET_NUMBER
HOUR=VALUE
GOTO :HOUR

'-----------------------------------
:MINUTE
'-----------------------------------

SMS_4=
"MINUTE = "&RIGHT("0"&MINUTE,2)&" "
IF INPBIT(5)=1 THEN :SET_MINUTE
GOTO :FINISH_SETUP_TIME_DATE_MENU

'-----------------
:SET_MINUTE
'-----------------

GOSUB :LIGHT_ON
VALUE=MINUTE
MAX=60
MIN=0
GOSUB :SET_NUMBER
MINUTE=VALUE
GOTO :MINUTE

'-------------------------------------
:SETUP_TIME_SLOT_MESSAGE
'-------------------------------------

'GOSUB :BACK_TIME_SLOT
LCDCLEAR

SMS_1=
" SET TIME SLOT"
SMS_2=
""
SMS_3=
""
SMS_4=
""
SMS_5=
""
SMS_6=
""


'-------------------------------------
:SETUP_TIME_SLOT_MENU
'-------------------------------------


GOSUB :SHOWING
IF M2=0 THEN :START_HOUR
IF M2=1 THEN :START_MINUTE
IF M2=2 THEN :STOP_HOUR
IF M2=3 THEN :STOP_MINUTE

'--------------------------------------------
:FINISH_SETUP_TIME_SLOT_MENU
'--------------------------------------------

IF INPBIT(3)=1 THEN :FORWARD_SETUP_TIME_SLOT_MENU
GOTO :SETUP_TIME_SLOT_MENU

'------------------------------------------------
:FORWARD_SETUP_TIME_SLOT_MENU
'------------------------------------------------

GOSUB :LIGHT_ON
GOSUB :SHORT_SOUND
M2++
IF M2=4 THEN :NEW_TIME_SLOT
GOTO :SETUP_TIME_SLOT_MENU

'--------------------------------
:NEW_TIME_SLOT
'--------------------------------

CLR M2, _SET_TIME_SLOT



'RETURN
GOTO :SETUP

'--------------------------------------------------
:START_HOUR
'--------------------------------------------------

SMS_4=
"START H.: "&RIGHT("0"&START_HOUR,2)&" "
IF INPBIT(5)=1 THEN :SET_START_HOUR
GOTO :FINISH_SETUP_TIME_SLOT_MENU

'------------------------
:SET_START_HOUR
'------------------------

GOSUB :LIGHT_ON
VALUE=START_HOUR
MAX=24
MIN=0
GOSUB :SET_NUMBER
START_HOUR=VALUE
START_HOUR=START_HOUR/1
GOTO :START_HOUR

'--------------------------------------------------
:START_MINUTE
'--------------------------------------------------
SMS_4=
"START M.: "&RIGHT("0"&START_MINUTE,2)&" "
IF INPBIT(5)=1 THEN :SET_START_MINUTE
GOTO :FINISH_SETUP_TIME_SLOT_MENU

'----------------------------
:SET_START_MINUTE
'----------------------------

GOSUB :LIGHT_ON
VALUE=START_MINUTE
MAX=60
MIN=0
GOSUB :SET_NUMBER
START_MINUTE=VALUE
START_MINUTE=START_MINUTE/1
GOTO :START_MINUTE


'--------------------------------------------------
:STOP_HOUR
'--------------------------------------------------

SMS_4=
"STOP H.: "&RIGHT("0"&STOP_HOUR,2)&" "
IF INPBIT(5)=1 THEN :SET_STOP_HOUR
GOTO :FINISH_SETUP_TIME_SLOT_MENU

'-----------------------
:SET_STOP_HOUR
'-----------------------

GOSUB :LIGHT_ON
VALUE=STOP_HOUR
MAX=24
MIN=0
GOSUB :SET_NUMBER
STOP_HOUR=VALUE
STOP_HOUR=STOP_HOUR/1
GOTO :STOP_HOUR

'--------------------------------------------------
:STOP_MINUTE
'--------------------------------------------------
SMS_4=
"STOP M.: "&RIGHT("0"&STOP_MINUTE,2)&" "
IF INPBIT(5)=1 THEN :SET_STOP_MINUTE
GOTO :FINISH_SETUP_TIME_SLOT_MENU

'-------------------------
:SET_STOP_MINUTE
'-------------------------

GOSUB :LIGHT_ON
VALUE=STOP_MINUTE
MAX=60
MIN=0
GOSUB :SET_NUMBER
STOP_MINUTE=VALUE
STOP_MINUTE=STOP_MINUTE/1
GOTO :STOP_MINUTE
END

'-----------------------------------------------------
--

:RANDOM
'-------------------------------------------------------

GOSUB :RANDOM_STATUS
SMS_4=
"RANDOM= "&STATUS
IF INPBIT(5)=1 THEN :SET_RANDOM
GOTO :FINISH_SETUP_MENU

'--------------------
:SET_RANDOM
'--------------------

GOSUB :LIGHT_ON
RANDOM=(RANDOM + 1)
MOD 2

GOTO :FINISH_SETUP_MENU

'-------------------------
:RANDOM_STATUS
'-------------------------

IF RANDOM=0 THEN GOSUB :NO_RANDOM
IF RANDOM=1 THEN GOSUB :YES_RANDOM
RETURN

'--------------------------
:YES_RANDOM
'--------------------------

STATUS=
"YES"
STR_RANDOM=
"R"
GOSUB :RANDOM_VALUES_PART_1
GOSUB :RANDOM_VALUES_PART_2

RETURN

'---------------------------
:NO_RANDOM
'---------------------------

STATUS=
"NO "
STR_RANDOM=
"-"
GOSUB :BASE_VALUES
RETURN

'------------------------------
:RANDOM_VALUES_ALL
'------------------------------

GOSUB :RANDOM_VALUES_PART_1
GOSUB :RANDOM_VALUES_PART_2
RETURN

'-------------------------
:BASE_VALUES_ALL
'-------------------------

EEXTERNAL=0
SOUND_EFFECT=
REEPROM
CELL=244
RANDOM=
REEPROM
CELL=245
NON_STOP=
REEPROM
CELL=246
REVERSE=
REEPROM
CELL=247
TIME_SLOT=
REEPROM
CELL=248
START_HOUR=
REEPROM
CELL=249
START_MINUTE=
REEPROM
CELL=250
STOP_HOUR=
REEPROM
CELL=251
STOP_MINUTE=
REEPROM


'---------------------
:BASE_VALUES
'---------------------

EEXTERNAL=0
CELL=240
ON_TIME=
REEPROM
CELL=241
OFF_TIME=
REEPROM
CELL=242
N_CYCLES=
REEPROM
CELL=243


'------------------------------------------------------------------------------------------------------
'CHECK_MIN_OR_MAX_VALUES
'------------------------------------------------------------------------------------------------------

IF ON_TIME<1 OR ON_TIME>VALUE_MAX THEN GOSUB :MIN_VALUE_ON_TIME
IF OFF_TIME <0 OR OFF_TIME>VALUE_MAX THEN GOSUB :MIN_VALUE_OFF_TIME
IF N_CYCLES <1 OR N_CYCLES>VALUE_MAX THEN GOSUB :MIN_VALUE_N_CYCLES
IF SOUND_EFFECT>1 THEN GOSUB :MAX_VALUE_SOUND_EFFECT
IF RANDOM>1 THEN GOSUB :MAX_VALUE_RANDOM
IF NON_STOP>1 THEN GOSUB :MAX_VALUE_NON_STOP
IF REVERSE>1 THEN GOSUB :MAX_VALUE_REVERSE
IF START_HOUR>23 THEN GOSUB :MIN_VALUE_START_HOUR
IF START_MINUTE>59 THEN GOSUB :MIN_VALUE_START_MINUTE
IF STOP_HOUR>23 THEN GOSUB :MIN_VALUE_START_MINUTE
IF STOP_MINUTE>59 THEN GOSUB :MIN_VALUE_STOP_MINUTE
IF TIME_SLOT>1 THEN GOSUB :MIN_VALUE_TIME_SLOT


EEXTERNAL=1

RETURN

'------------------------------
:MIN_VALUE_ON_TIME
'------------------------------

ON_TIME=1
RETURN

'-------------------------------
:MIN_VALUE_OFF_TIME
'-------------------------------

OFF_TIME=0
RETURN

'-------------------------------
:MIN_VALUE_N_CYCLES
'-------------------------------

N_CYCLES=1
RETURN

'--------------------------------------
:MAX_VALUE_SOUND_EFFECT
'--------------------------------------

SOUND_EFFECT=1
RETURN

'--------------------------------------
:MAX_VALUE_RANDOM
'--------------------------------------

RANDOM=1
RETURN

'--------------------------------------
:MAX_VALUE_NON_STOP
'--------------------------------------

NON_STOP=1
RETURN

'-------------------------------------
:MAX_VALUE_REVERSE
'-------------------------------------

REVERSE=1
RETURN

'-------------------------------------
:RANDOM_VALUES_PART_1
'-------------------------------------

N_CYCLES=
Rnd
N_CYCLES/=3000
N_CYCLES++
RETURN

'-------------------------------------
:RANDOM_VALUES_PART_2
'-------------------------------------

ON_TIME=
Rnd
ON_TIME/=3000
ON_TIME++
OFF_TIME=
Rnd
OFF_TIME/=3000
OFF_TIME++


RETURN

'---------------------------------
:MIN_VALUE_START_HOUR
'---------------------------------

CLR START_HOUR
RETURN

'-------------------------------------
:MIN_VALUE_START_MINUTE
'-------------------------------------

CLR START_MINUTE
RETURN

'------------------------------------
:MIN_VALUE_STOP_HOUR
'------------------------------------

CLR STOP_HOUR
RETURN

'------------------------------------
:MIN_VALUE_STOP_MINUTE
'------------------------------------

CLR STOP_MINUTE
RETURN

'------------------------------------
:MIN_VALUE_TIME_SLOT
'------------------------------------

TIME_SLOT=1
RETURN

'-----------------------------------------------------------------------------------------
:NON_STOP
'-----------------------------------------------------------------------------------------

GOSUB :NON_STOP_STATUS
SMS_4=
"NON STOP= "&STATUS
IF INPBIT(5)=1 THEN :SET_NON_STOP
GOTO :FINISH_SETUP_MENU

'-----------------------
:SET_NON_STOP
'-----------------------

GOSUB :LIGHT_ON
NON_STOP=(NON_STOP + 1)
MOD 2

GOTO :FINISH_SETUP_MENU

'----------------------------
:NON_STOP_STATUS
'----------------------------

IF NON_STOP=0 THEN GOSUB :NO_NON_STOP
IF NON_STOP=1 THEN GOSUB :YES_NON_STOP
RETURN

'--------------------------
:YES_NON_STOP
'--------------------------

STATUS=
"YES"
STR_N_CYCLES=
"A "
STR_N_CYCLES_2=
"A"
RETURN

'--------------------------
:NO_NON_STOP
'--------------------------

STATUS=
"NO "
STR_N_CYCLES=N_CYCLES
STR_N_CYCLES_2=
"-"

RETURN

'----------------------------------------------------------------------------------------------
:REVERSE
'----------------------------------------------------------------------------------------------

GOSUB :REVERSE_STATUS
SMS_4=
"REVERSE= "&STATUS
IF INPBIT(5)=1 THEN :SET_REVERSE
GOTO :FINISH_SETUP_MENU

'---------------------
:SET_REVERSE
'---------------------

GOSUB :LIGHT_ON
REVERSE=(REVERSE + 1)
MOD 2

GOTO :FINISH_SETUP_MENU

'--------------------------
:REVERSE_STATUS
'--------------------------

IF REVERSE=0 THEN GOSUB :NO_REVERSE
IF REVERSE=1 THEN GOSUB :YES_REVERSE
RETURN

'-----------------------
:YES_REVERSE
'-----------------------

STATUS=
"YES "
STR_REVERSE=
"r"
LOAD=1
RETURN

:NO_REVERSE

STATUS=
"NO "
STR_REVERSE=
"-"
LOAD=0
RETURN

'-----------------------------------------------------------------------------------------------------------------------
:SOUND_EFFECT
'-----------------------------------------------------------------------------------------------------------------------

GOSUB :SOUND_EFFECT_STATUS
SMS_4=
"SOUND EFFECT="&STATUS
IF INPBIT(5)=1 THEN :SET_SOUND_EFFECT
GOTO :FINISH_SETUP_MENU

'--------------------------------------------------------------------------------------
:SET_SOUND_EFFECT
'--------------------------------------------------------------------------------------

GOSUB :LIGHT_ON
SOUND_EFFECT=(SOUND_EFFECT + 1)
MOD 2
GOTO :FINISH_SETUP_MENU

'--------------------------------------------------------------------------------------
:SOUND_EFFECT_STATUS
'--------------------------------------------------------------------------------------

IF SOUND_EFFECT=0 THEN GOSUB :NO_SOUND_EFFECT
IF SOUND_EFFECT=1 THEN GOSUB :YES_SOUND_EFFECT
RETURN

'--------------------------------------------------------------------------------------
:YES_SOUND_EFFECT
'--------------------------------------------------------------------------------------

STATUS=
"YES "
SOUND_EFFECT=1
STR_SOUND_EFFECT=
"S"
RETURN

'---------------------------------------------------------------------------------------
:NO_SOUND_EFFECT
'---------------------------------------------------------------------------------------

STATUS=
"NO "
SOUND_EFFECT=0
STR_SOUND_EFFECT=
"-"
RETURN

'-------------------------------------------------------------------------------------------------
:TIME_SLOT
'-------------------------------------------------------------------------------------------------

GOSUB :TIME_SLOT_STATUS
SMS_4=
"TIME SLOT = "&STATUS
IF INPBIT(5)=1 THEN :TIME_SLOT_NEXT
GOTO :FINISH_SETUP_MENU

'---------------------------------------------------------------------------
:TIME_SLOT_NEXT
'---------------------------------------------------------------------------

GOSUB :LIGHT_ON
TIME_SLOT=(TIME_SLOT + 1)
MOD 2

GOTO :FINISH_SETUP_MENU

'--------------------------------------------------------------------------
:TIME_SLOT_STATUS
'--------------------------------------------------------------------------

IF TIME_SLOT=0 THEN GOSUB :NO_TIME_SLOT
IF TIME_SLOT=1 THEN GOSUB :YES_TIME_SLOT
RETURN

'--------------------------------------------------------------------------
:YES_TIME_SLOT
'--------------------------------------------------------------------------

STATUS=
"YES "
STR_TIME_SLOT=
"T"
RETURN

'--------------------------------------------------------------------------
:NO_TIME_SLOT
'--------------------------------------------------------------------------

STATUS=
"NO "
STR_TIME_SLOT=
"-"

RETURN

'-------------------------------------------------------------------------------------------------------------
:SET_TIME_SLOT
'-------------------------------------------------------------------------------------------------------------

GOSUB :SET_TIME_SLOT_STATUS
SMS_4=
"SET T.SLOT = "&STR_SET_TIME_SLOT
IF INPBIT(5)=1 THEN :SET_TIME_SLOT_NEXT
GOTO :FINISH_SETUP_MENU

'-----------------------------------------------------------------------------------
:SET_TIME_SLOT_NEXT
'-----------------------------------------------------------------------------------

GOSUB :LIGHT_ON
_SET_TIME_SLOT = (_SET_TIME_SLOT + 1)
MOD 2


GOTO :FINISH_SETUP_MENU

'-----------------------------------------------------------------------------------
:SET_TIME_SLOT_STATUS
'-----------------------------------------------------------------------------------

IF _SET_TIME_SLOT=0 THEN GOSUB :NO_SET_TIME_SLOT
IF _SET_TIME_SLOT=1 THEN GOSUB :YES_SET_TIME_SLOT
RETURN

'-----------------------------------------------------------------------------------
:YES_SET_TIME_SLOT
'-----------------------------------------------------------------------------------

STR_SET_TIME_SLOT=
"YES"
RETURN

'-----------------------------------------------------------------------------------
:NO_SET_TIME_SLOT
'-----------------------------------------------------------------------------------

STR_SET_TIME_SLOT=
"NO "
RETURN
END

'-------------------------------------------------------------------------------------------------------------
:SET_TIME_DATE 'SEVEN STEP OF MENU
'-------------------------------------------------------------------------------------------------------------

GOSUB :TIME_DATE_STATUS
SMS_4=
"SET TIME = "&STATUS
IF INPBIT(5)=1 THEN :SET_TIME_DATE_NEXT
GOTO :FINISH_SETUP_MENU

'---------------------------------------------------------------------------------
:SET_TIME_DATE_NEXT
'---------------------------------------------------------------------------------

GOSUB :LIGHT_ON
TIME_DATE=(TIME_DATE + 1)
MOD 2

GOTO :FINISH_SETUP_MENU

'---------------------------------------------------------------------------------
:TIME_DATE_STATUS
'---------------------------------------------------------------------------------

IF TIME_DATE=0 THEN GOSUB :NO_TIME_DATE
IF TIME_DATE=1 THEN GOSUB :YES_TIME_DATE
RETURN

'---------------------------------------------------------------------------------
:YES_TIME_DATE
'---------------------------------------------------------------------------------

STATUS=
"YES "
RETURN

'---------------------------------------------------------------------------------
:NO_TIME_DATE
'---------------------------------------------------------------------------------

STATUS=
"NO "
RETURN
END

'---------------------------------------------------------------------------------
'STOP MENU SETUP
'---------------------------------------------------------------------------------

'---------------------------------------------------------------------------------
:EXIT
'---------------------------------------------------------------------------------

GOSUB :LIGHT_ON
GOSUB :SHORT_SOUND
LCDCLEAR
LCDPOS=&H11
LCDWRITE="DO YOU WANT EXIT"
LCDPOS=&H21
LCDWRITE=""
WAITS 1
RETURN

'---------------------------------------------------------------------------------
:READY_TO_EXIT
'---------------------------------------------------------------------------------

IF INPBIT(5)=1 THEN :INITIAL_PARAMETERS
IF INPBIT(3)=1 THEN :READY_TO_RETURN_TO_COUNT
GOTO :READY_TO_EXIT

'---------------------------------------------------------------------------------
:READY_TO_RETURN_TO_COUNT
'---------------------------------------------------------------------------------

LCDCLEAR
GOTO :BACK_FROM_CHOICE_EXIT

'---------------------------------------------------------------------------------
:CHANGE_SECOND_LINE
'---------------------------------------------------------------------------------


GOSUB :LIGHT_ON
SMS_6=
" "
SMS++
SMS=(SMS
MOD OPTIONS)
RETURN

'---------------------------------------------------------------------------------
:CHECK_SECOND_LINE
'---------------------------------------------------------------------------------

IF SMS=0 THEN GOSUB :SHOW_TEMPERATURE_OPTIONS
IF SMS=1 THEN GOSUB :SHOW_TIME_ON_N_CYCLES_TIME_OFF
IF SMS=2 THEN GOSUB :INSTANT_TIME
IF SMS=3 THEN GOSUB :SHOW_TIME_SLOT
RETURN


'---------------------------------------------------------------------------------
:SHOW_TEMPERATURE_OPTIONS
'---------------------------------------------------------------------------------

'SMS_5=RIGHT("0"&SEC_TOT/3600 MOD 99,2)&":"&RIGHT("0"&SEC_TOT/60 MOD 60,2)
SMS_5=STR_TIME_SLOT&
"----"
SMS_6=STR_RANDOM&STR_N_CYCLES_2&STR_REVERSE&STR_SOUND_EFFECT
SMS_4=
""&LEFT(MED_TEMP,4)&"c"
RETURN

'---------------------------------------------------------------------------------
:SHOW_TIME_ON_N_CYCLES_TIME_OFF
'---------------------------------------------------------------------------------

SMS_4=
"ON:"&RIGHT("0"&ON_TIME,2)
SMS_5=
"OF:"&RIGHT("0"&OFF_TIME,2)
SMS_6=
INT(CYCLE)&"/"&STR_N_CYCLES
RETURN

'---------------------------------------------------------------------------------
:INSTANT_TIME
'---------------------------------------------------------------------------------

SMS_4=
MID(DATE,1,5)&" "
SMS_6=
"20"&MID(DATE,7,2)&" "
SMS_5=
MID(DATE,10,5)
RETURN

'---------------------------------------------------------------------------------
:SET_NUMBER
'---------------------------------------------------------------------------------

GOSUB IVIDE_VALUE

'---------------------------------------------------------------------------------
:FIRST_DIGIT_POSITION
'---------------------------------------------------------------------------------

N_DIGIT=1
POS=&H2B
'FIRST DIGIT POSITION

'---------------------------------------------------------------------------------
:START_SETTING
'---------------------------------------------------------------------------------

X=DIGIT(N_DIGIT)


'---------------------------------------------------------------------------------
:READY_FOR_SET
'---------------------------------------------------------------------------------

DIGIT(N_DIGIT)=X
WAITMS 100
IF INPBIT(5)=1 THEN GOSUB :ADD_VALUE
WAITMS 100
IF INPBIT(3)=1 THEN :NEXT_DIGIT
WAITMS 100

'----------------------------------------------------------------------------------
:FLASHING
'----------------------------------------------------------------------------------

WAITMS 100
VALUE=
""&DIGIT(1)&DIGIT(2)
IF VALUE>=MAX THEN :RESET_VALUE
IF VALUETHEN :RESET_VALUE
LCDPOS=POS
LCDWRITE=" "
WAITMS 100
LCDPOS=&H2B
LCDWRITE=""&VALUE
GOTO :READY_FOR_SET

'-----------------------------------------------------------------------------------
:ADD_VALUE
'-----------------------------------------------------------------------------------

X++
IF X=10 THEN :RESET_DIGIT
RETURN

'-----------------------------------------------------------------------------------
:RESET_VALUE
'-----------------------------------------------------------------------------------

CLR X
VALUE=MIN
N_DIGIT=1
POS=&H2B
GOSUB IVIDE_VALUE
GOTO :FIRST_DIGIT_POSITION

'------------------------------------------------------------------------------------
:RESET_DIGIT
'------------------------------------------------------------------------------------

CLR X
RETURN

'------------------------------------------------------------------------------------
:NEXT_DIGIT
'------------------------------------------------------------------------------------

WAITMS 100
N_DIGIT++
IF N_DIGIT=(3) THEN RETURN
CLR X
N_DIGIT=2
POS=&H2C
'SECOND DIGIT POSITION
GOTO :START_SETTING

'------------------------------------------------------------------------------------
IVIDE_VALUE
'------------------------------------------------------------------------------------

STR_VALUE=
RIGHT("0"&VALUE,2)
DIGIT(1)=
LEFT(STR_VALUE,1)
DIGIT(2)=
RIGHT(STR_VALUE,1)

RETURN

'-------------------------------------------------------------------------------------
:BACK_TIME
'-------------------------------------------------------------------------------------

DAY=
MID(DATE,1,2)
MONTH=
MID(DATE,4,2)
YEAR=
MID(DATE,7,2)
HOUR=
MID(DATE,10,2)
MINUTE=
MID(DATE,13,2)

RETURN

'---------------------------------------------------------------------------------
:CHECK_TIME_SLOT_WORKING
'---------------------------------------------------------------------------------

NOW= ((
MID(DATE,10,2)*60)+MID(DATE,13,2))

IF (STOP_HOUR*60)+STOP_MINUTE <= (START_HOUR*60)+START_MINUTE THEN :START_UNDER_STOP

IF NOW <= ((STOP_HOUR*60)+STOP_MINUTE) AND NOW >= ((START_HOUR*60)+START_MINUTE) THEN :TIME_SLOT_WORK_YES
GOTO :TIME_SLOT_WORK_NO

'-----------------------------------
:START_UNDER_STOP
'-----------------------------------

IF NOW <= (STOP_HOUR*60)+STOP_MINUTE OR NOW >= (START_HOUR*60)+START_MINUTE THEN :TIME_SLOT_WORK_YES

'IF ((MID(DATE,10,2)*60)+MID(DATE,13,2)) <= ((STOP_HOUR*60)+STOP_MINUTE) AND ((MID(DATE,10,2)*60)+MID(DATE,13,2)) >= ((START_HOUR*60)+START_MINUTE) THEN :TIME_SLOT_WORK_YES

'----------------------------------------------------------------------------------
:TIME_SLOT_WORK_NO
'----------------------------------------------------------------------------------

TIME_SLOT_WORK=0
LOAD=0
OUTBIT(6)=0


'----------------------------------------------------------------------------------
:FORWARD_TIME_SLOT_WORKING
'----------------------------------------------------------------------------------

IF TIME_SLOT_WORK=0 THEN RETURN
IF TIME_SLOT_WORK=1 THEN RETURN
GOTO :FORWARD_TIME_SLOT_WORKING

'-----------------------------------------------------------------------------------
:TIME_SLOT_WORK_YES
'-----------------------------------------------------------------------------------

TIME_SLOT_WORK=1
GOTO :FORWARD_TIME_SLOT_WORKING

'------------------------------------------------------------------------------------
:TIME_SLOT_WORK_MESSAGE
'------------------------------------------------------------------------------------


SMS_1=
" WORK "
SMS_2=
"TIME "
SMS_3=
"SLOT "
GOSUB :CHECK_SECOND_LINE_MAIN_SCREEN
GOSUB :SHOWING
'WAITMS 250
IF INPBIT(5)=1 THEN GOSUB :CHANGE_SECOND_LINE_MAIN_SCREEN
IF INPBIT(3)<>1 THEN :READY_TO_START
GOSUB :EXIT

'--------------------------------------------------------------------------------------
:CHOOSE_FOR_EXIT
'--------------------------------------------------------------------------------------

IF INPBIT(3)=1 THEN :READY_TO_START
IF INPBIT(5)=1 THEN :FORWARD_TO_EXIT
GOTO :CHOOSE_FOR_EXIT

'---------------------------------------------------------------------------------------
:FORWARD_TO_EXIT
'---------------------------------------------------------------------------------------

GOTO :INITIAL_PARAMETERS

'---------------------------------------------------------------------------------------
:RESET_SOME_PARAMETERS
'---------------------------------------------------------------------------------------

CLR CYCLE
CLR _COUNT
OUTBIT(6)=0
MED_TEMP=
"----"
RETURN

'----------------------------------------------------------------------------------------
:CHANGE_SECOND_LINE_MAIN_SCREEN
'----------------------------------------------------------------------------------------

GOSUB :LIGHT_ON
SMS_6=
" "
SMS++
SMS=(SMS
MOD 2)
RETURN

'-----------------------------------------------------------------------------------------
:CHECK_SECOND_LINE_MAIN_SCREEN
'-----------------------------------------------------------------------------------------

IF SMS=0 THEN GOSUB :SHOW_TIME_SLOT
IF SMS=1 THEN GOSUB :INSTANT_TIME
IF SMS<0 OR SMS>1 THEN GOSUB :RESET_SMS
RETURN

'------------------------------------------------------------------------------------------
:SHOW_TIME_SLOT
'------------------------------------------------------------------------------------------

SMS_4=
RIGHT("0"&START_HOUR,2)&":"&RIGHT("0"&START_MINUTE,2)&" "
SMS_6=
"---> "
SMS_5=
RIGHT("0"&STOP_HOUR,2)&":"&RIGHT("0"&STOP_MINUTE,2)
RETURN

'------------------------------------------------------------------------------------------
:RESET_SMS
'------------------------------------------------------------------------------------------

CLR SMS
RETURN

'------------------------------------------------------------------------------------------
:CHECK_OPTIONS
'------------------------------------------------------------------------------------------

OPTIONS=3
IF TIME_SLOT=1 THEN GOSUB :SET_NUMBER_OPTIONS_TO_SHOW
RETURN

'------------------------------------------------------------------------------------------
:SET_NUMBER_OPTIONS_TO_SHOW
'------------------------------------------------------------------------------------------

OPTIONS=4
RETURN

END






http://www.energialternativa.info/public/newforum/ForumEA/D/Creatore%20di%20collage%20di%20foto_JtSAPR.png

http://www.energialternativa.info/public/newforum/ForumEA/D/Creatore%20di%20collage%20di%20foto_L2FkAH.png

http://www.energialternativa.info/public/newforum/ForumEA/D/Creatore%20di%20collage%20di%20foto_tMeEjO.png

ciao a tutti
Ecologix






















































































---------------



 

MarKoZaKKa

Avatar
GigaWatt


Utente
Msg:1886

Stato:



Inviato il: 25/03/2015 11:53:28

Ma che bello!!! Sono incasinato con lavoro/vita, ma questo codice mi torn(er)a utile!!!



---------------
Tecnico qualificato in clownerie
Windsurfer a tempo perso
Slalomaro senza speranze
...

 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 25/03/2015 18:41:01

Cavolo che lavorone .... bellissimo ...
In fiera me lo gusto per benino

 

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 28/03/2015 11:35:08

waaaaaooooooo
PS:mi sono permesso (indegnamente) di colorare il codice...



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripet...

 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 28/03/2015 11:50:04

Domenica lo riporti ? ....gnam gnam gnam

 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 28/03/2015 11:51:25

Ma le faccine nel codice servono per coprire quale parola ?

 

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 28/03/2015 14:43:41

servono per disorientare il lettore....
Quanto prima il team SW risolverà questo problema...lo hanno promesso!!!



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripet...

 

ecologix1971

Avatar
GigaWatt


MODERATORE
Msg:4165

Stato:



Inviato il: 16/05/2015 08:20:06

Al momento svolge un lavoro semplicissimo, toglie energia dalle prese di casa 90 minuti dopo essere andati a dormire, disattivando uno dei miei inverter...svolgendo la funzione sleep timer per tutta casa.
naturalmente il frigo ed il congelatore hanno il loro inverter dedicato acceso 24h/24h.



---------------



 

PinoTux

Avatar
GigaWatt


AMMINISTRATORE
Msg:3509

Stato:



Inviato il: 16/05/2015 23:51:11

Con le faccine possiamo dire che è un EA-visual-BASIC, per intanto cominciamo con le label che comiciano con la D maiuscola...

Non sarebbe una cattiva idea avere la possibilità di poter scaricare il file *.eab senza dover fare un copia /incolla del testo con la possibilità di portarsi dietro zozzerie di tabulazioni e/o caRaTterI strani...

anche per il fatto che certe istruzioni non riesco a capirle, sono rimasto al basic del C64...



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"

http://iv3gfn.al...

 

ecologix1971

Avatar
GigaWatt


MODERATORE
Msg:4165

Stato:



Inviato il: 17/05/2015 11:45:46

Basterebbe postarlo come allegato giusto?



---------------



 

PinoTux

Avatar
GigaWatt


AMMINISTRATORE
Msg:3509

Stato:



Inviato il: 17/05/2015 22:18:53

Si può utilizzare CODE per visualizzarlo, e/o come allegato, selezioni il file sul tuo PC ma non hai nessun riscontro, fa tutto da solo in automatico, premi il tasto per inviare la risposta e te lo trovi bello e pronto per scaricarlo come mamma (in questo caso Bolle)l'ha fatto...
-TOP CODE-

-BOTTOM CODE-


Scarica allegato

ecocalendario.eab ( Numero download: 284 )



Modificato da PinoTux - 17/05/2015, 22:30:18


---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"

http://iv3gfn.al...

 

PinoTux

Avatar
GigaWatt


AMMINISTRATORE
Msg:3509

Stato:



Inviato il: 17/05/2015 22:28:07

Quindi, come fai tu, va benissimo per studiarselo, è molto più leggibile, poi come allegato puoi metterci di tutto...



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"

http://iv3gfn.al...

 

ecologix1971

Avatar
GigaWatt


MODERATORE
Msg:4165

Stato:



Inviato il: 18/05/2015 08:21:39

Dovrebbe essere questo

Scarica allegato

LOGIX TIMER 4_3_7 DEMO VERSION.eab ( Numero download: 233 )



---------------



 

PinoTux

Avatar
GigaWatt


AMMINISTRATORE
Msg:3509

Stato:



Inviato il: 18/05/2015 15:47:45

Non so perché, ma il file scaricato ha l'estensione .htm o .php, dipende se clicchi su "Scarica allegato" oppure se usi il "Salva destinazione con nome" e comunque il titolo non corrisponde...
Rinominando il file come .eab il contenuto sembra ok, verifica se ti succede la stessa cosa...

Bug?



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"

http://iv3gfn.al...

 

ecologix1971

Avatar
GigaWatt


MODERATORE
Msg:4165

Stato:



Inviato il: 18/05/2015 21:22:49

Ciao pino, al momento ho provato con il tablet (android) e cliccando su scarica allegato me lo mette nei download con estensione .eab



---------------



 
 InizioPagina
 

Pag: (2)   [1]   2    (Ultimo)

Versione Completa!

Home page     TOP100-SOLAR    Home page forum