Se sei già registrato           oppure    

Orario: 19/03/2024 10:26:59  

 

Energia Alternativa ed Energia Fai Da Te > PPTEA

VISUALIZZA L'ALBUM

Pagine: (2)   [1]   2    (Ultimo Msg)


PPTEA TIMER LOGIX I, timer multifunzione
FinePagina

ecologix1971

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi: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


Gruppo:Utente
Messaggi: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


Gruppo:Utente
Messaggi:4656

Stato:



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

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

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi: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 è ripetibile non esiste (by qqcreafis).

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



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

Domenica lo riporti ? ....gnam gnam gnam

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



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

Ma le faccine nel codice servono per coprire quale parola ?

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi: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 è ripetibile non esiste (by qqcreafis).

 

ecologix1971

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi: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


Gruppo:AMMINISTRATORE
Messaggi: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.altervista.org/
http://pptea.altervista.org/

 

ecologix1971

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:4165

Stato:



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

Basterebbe postarlo come allegato giusto?

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi: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...

PRAGMA ADVANCED
' ----------------------------------------------------------------------------
' OROLOGIO SVEGLIA TEMPERATURA Ver 1.0
' PERMETTE LA MODIFICA DELL'ORARIO E DELLA SVEGLIA
' MEDIANTE L'UTILIZZO DI UN SOLO PULSANTE
' PPTEA CONFIGURAZIONE STAND_ALONE
' DALLA VERSIONE PPTEA 4.0.4
' Autore :NonSoloBolleDiAcqua
' ----------------------------------------------------------------------------
' DICHIARAZIONE COSTANTI
PRAGMA EXTENDED16K_EEPROM
CONSTANT POS_GIORNO_DISPLAY=&H21
CONSTANT POS_ORA_DISPLAY=&H19
CONSTANT POS_SVEGLIA= &H17
CONSTANT POS_TEMPERATURA_DISPLAY=&H2B
CONSTANT SIMB_GRADI_CENTIGRADI=223
CONSTANT NUM_ELEMENTI_MEDIA=30
CONSTANT ATTESA_REFRESH=1 ' VISUALIZZO I DATI OGNI SECONDO
CONSTANT PULSANTE_SET=5
CONSTANT NUMERO_VOCI_MENU=4
CONSTANT CELLA_STATO_SVEGLIA=100
CONSTANT CELLA_ORA_SVEGLIA=101
CONSTANT CELLA_MINUTI_SVEGLIA=102
CONSTANT DELAY_PRESSIONE_PULSANTI=200
CONSTANT MAX_TEMPO_SUONO_SVEGLIA=180 ' la sveglia suona al massimo per 3 minuti...poi si disattiva
CONSTANT LUCE_DISPLAY=4 ' BIT 4 è connesso alla retroillumiinazione del Display
' -------------------------------------------------------
' -------------------------------------------------------
' PRESENTAZIONE INIZIALE
SETIO=&H00EF ' Setto il bit dell'illuminazione
'TEMP="XX.X"
OUTBIT(LUCE_DISPLAY)=1
LCDWRITE="PPTEA BY BOLLE"
LCDPOS=&H21
LCDWRITE="ECO-CALENDARIO"
BEEP
WAITS 1
OUTBIT(LUCE_DISPLAY)=0
LCDCLEAR
CELL=CELLA_STATO_SVEGLIA
SV=REEPROM
CELL=CELLA_ORA_SVEGLIA
ORASV=REEPROM
IF ORASV<23 AND ORASV>= 0 THEN :296
ORASV=0
:296 ORASV=RIGHT( "0" &INT(ORASV),2)
CELL=CELLA_MINUTI_SVEGLIA
MINUTISV=REEPROM
IF MINUTISV<60 AND MINUTISV>= 0 THEN :301
MINUTISV=0
:301 MINUTISV=RIGHT( "0" &INT(MINUTISV),2)
GOSUB :SET_STR_SVEGLIA
:MAIN ' INIZIO PROGRAMMA
'GOSUB :MENU
'------- PRESENTAZIONE DATI DISPLAY LCD
FDATE=0
STR_DATE=DATE
SECOLD=SEC
LCDPOS=POS_GIORNO_DISPLAY
LCDWRITE=LEFT(STR_DATE, 8) ' VISUALIZZO IL GIORNO
'GOTO 460
'LCDWRITE="*" & LEFT(STR_DATE, 8) ' VISUALIZZO SVEGLIA ED IL GIORNO
LCDPOS=POS_ORA_DISPLAY
LCDWRITE=RIGHT(STR_DATE, 8) ' VISUALIZZO L'ORA
LCDPOS=POS_TEMPERATURA_DISPLAY
LCDWRITE=LEFT(TEMP&"",4) & CHR(SIMB_GRADI_CENTIGRADI) & "C" ' VISUALIZZO LA TEMPERATURA
LCDPOS=POS_SVEGLIA
IF SV THEN :510
LCDWRITE=" "
GOTO :531
:510 LCDWRITE="*"
' CHECK SVEGLIA -------------
IF MID(STR_DATE,10,2)<>ORASV THEN :531
IF MID(STR_DATE,13,2)=MINUTISV THEN :SUONA_SVEGLIA
'FINE CHECK SVEGLIA -------------
:531 FDATE=4
:532 SEC=DATE
GOSUB :CHECK_PULSANTE
'IF !INPBIT(PULSANTE_SET) THEN 540
'OUTBIT(LUCE_DISPLAY)=1
IF SEC=SECOLD THEN :532 ' ATTENDO FINO A CHE NON SCAVALLANO
' TEMPERATURA...SI FA LA MEDIA
FOR I=1 TO NUM_ELEMENTI_MEDIA
TEMP=TEMP+ CADS1*CAD_TO_TEMP
IF !INPBIT(PULSANTE_SET) THEN :622
LA=0
OUTBIT(LUCE_DISPLAY)=1
IF PULSANTE_PREMUTO THEN :622
PULSANTE_PREMUTO=1
RESET_TIMER
:622
NEXT I
TEMP/=NUM_ELEMENTI_MEDIA
' FINE DELLA MEDIA

GOTO :MAIN
:CHECK_PULSANTE
CLR MENU
IF INPBIT(PULSANTE_SET) THEN :1020 ' Prima pressione del pulsante set
IF !PULSANTE_PREMUTO THEN :1016
LA+=TIMER
'PRINT "LA="&LA
IF LA<0.5 THEN :1018
PULSANTE_PREMUTO=0
:1016 LA=0
OUTBIT(LUCE_DISPLAY)=0
:1018 RESET_TIMER
:1019 RETURN ' Torno al menù principale
:1020 PULSANTE_PREMUTO=1
OUTBIT(LUCE_DISPLAY)=1
LA=0
IF TIMER <1.0 THEN :1019
FRQ 440,10
:1025 LCDCLEAR
LCDWRITE="WAITING..."
WAITMS 500
:1028 IF INPBIT(PULSANTE_SET) THEN :1028 ' attendo rilascio pulsante set
LCDCLEAR
:MENU FRQ 440,10
MENU++
IF MENU<>NUMERO_VOCI_MENU THEN :1035
MENU=1
:1035 LCDCLEAR
GOSUB :VIS_MENU
GOSUB :STATOPRESSIONEPULSANTE
IF STATO_PULSANTE = 2 THEN :SOTTOMENU
IF STATO_PULSANTE = 3 THEN :RITORNO
GOSUB :ATTENDI_RILASCIO_PULSANTE
GOTO :MENU
:SOTTOMENU 'VOCE MENU
LCDCLEAR
IF MENU=1 THEN :SOTTOMENU_SVEGLIA
IF MENU=2 THEN :SOTTOMENU_ORARIO
IF MENU=3 THEN :SOTTOMENU_ORARIO_SVEGLIA


:SOTTOMENU_SVEGLIA '--------------------------------------------------------
:1096 GOSUB :SET_STR_SVEGLIA
LCDPOS=&H11
LCDWRITE= "SET SVEGLIA "& STRSV
GOSUB :ATTENDI_RILASCIO_PULSANTE
WAITMS 200
GOSUB :STATOPRESSIONEPULSANTE
IF STATO_PULSANTE = 2 OR STATO_PULSANTE = 3 THEN :1110 'SALVO LO STATO DELLA CELLA E POI TORNO AL MENU
SV=!SV
GOTO :1096
:1110 CELL=CELLA_STATO_SVEGLIA
WEEPROM=SV
GOSUB :EMETTI_SUONO_CONFERMA_MODIFICA
GOTO :MENU ' TORNO AL MENU



:RITORNO WAITMS 500
LCDCLEAR
RESET_TIMER
RETURN
:VIS_MENU
IF MENU=1 THEN :VIS_SVEGLIA_ON_OFF
IF MENU=2 THEN :VIS_SET_ORARIO
IF MENU=3 THEN :VIS_SET_ORARIO_SVEGLIA

:VIS_SVEGLIA_ON_OFF STR_MENU="SVEGLIA (" &STRSV & ")"
GOTO :1700
:VIS_SET_ORARIO STR_MENU="ORARIO"
GOTO :1700
:VIS_SET_ORARIO_SVEGLIA STR_MENU="ORARIO SVEGLIA"
GOTO :1700
:1700 LCDWRITE=STR_MENU
RETURN
:SOTTOMENU_ORARIO
FDATE=0
STRDATA=DATE
ORA=MID(STRDATA,10,2)
MINUTI=MID(STRDATA,13,2)
GIORNO=MID(STRDATA,1,2)
MESE=MID(STRDATA,4,2)
ANNO=MID(STRDATA,7,2)
GOSUB :VIS_ORARIO_DISPLAY
GOSUB :ATTENDI_RILASCIO_PULSANTE '
'GOSUB :STATOPULSANTE
GOTO :MODIFICA_ORARIO 'IF STATO_PULSANTE=1 THEN :MODIFICA_ORARIO
'IF STATO_PULSANTE=2 THEN 1025 ' TORNO AL MENU
GOTO :RITORNO

:VIS_ORARIO_DISPLAY
LCDPOS=&H11
LCDWRITE=ORA & ":" & MINUTI & " " & GIORNO & "." & MESE &"." & ANNO
RETURN
:VIS_ORARIO_SVEGLIA_DISPLAY
LCDPOS=&H11
LCDWRITE=ORASV & ":" & MINUTISV
RETURN
:STATOPRESSIONEPULSANTE
RESET_TIMER
:1910 IF TIMER >3.0 THEN :2080
IF !INPBIT(PULSANTE_SET) THEN :1910 ' ATTENDO PRESSIONE PULSANTE
:STATOPULSANTE ' STATO_PULSANTE TORNA 1 SE VIENE PREMUTO, 2 SE PREMUTO A LUNGO
:2000 IF !INPBIT(PULSANTE_SET) THEN :2000 ' ATTENDO PRESSIONE PULSANTE
RESET_TIMER
:2049 IF TIMER >1.0 THEN :2070 ' PULSANTE PREMUTO A LUNGO
IF INPBIT(PULSANTE_SET) THEN :2049 ' ATTENDO IL RILASCIO DEL PULSANTE
STATO_PULSANTE=1
RETURN
:2070 STATO_PULSANTE=2
RETURN
:2080 STATO_PULSANTE=3
RETURN

:ATTENDI_RILASCIO_PULSANTE ' TORNA SE VIENE RILASCIATO IL PULSANTE
:2110 IF INPBIT(PULSANTE_SET) THEN :2110 '
RETURN
:SET_STR_SVEGLIA
IF SV THEN :2299
STRSV="OFF"
RETURN
:2299 STRSV="ON "
RETURN
:MODIFICA_ORARIO
CLR MOD_ORARIO
MPOS=0
:2515 BEEP
MPOS++
IF MPOS=1 THEN :MODIFICA_ORA
IF MPOS=2 THEN :MODIFICA_MINUTI
IF MPOS=3 THEN :MODIFICA_GIORNO
IF MPOS=4 THEN :MODIFICA_MESE
IF MPOS=5 THEN :MODIFICA_ANNO
IF MPOS=6 THEN :INVIO_ORARIO
GOTO :MENU
:INVIO_ORARIO
IF !MOD_ORARIO THEN :MENU
LCDCLEAR
LCDWRITE="NUOVO ORARIO?"
GOSUB :STATOPRESSIONEPULSANTE
IF STATO_PULSANTE = 1 THEN :SET_ORARIO
GOTO :MENU
:SET_ORARIO
STRDATE=GIORNO &"/"& MESE &"/"& ANNO & " " & ORA &":"& MINUTI &":00 1"
'PRINT "SETDATE"& STRDATE
SETDATE=STRDATE
LCDPOS=&H21
LCDWRITE="ORA MODIFICATA!"
GOSUB :EMETTI_SUONO_CONFERMA_MODIFICA
GOTO :MENU
:MODIFICA_ORA '-----------------------------------------------
GOSUB :VIS_ORARIO_DISPLAY
'LCDWRITE=" "
POS_SCRITTA_BLINK=&H11
SCRITTA_BLINK=ORA
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE =3 THEN :2515 ' PASSO AI MINUTI
IF STATO_PULSANTE =1 THEN :INCREMENTA_ORA ' MODIFICO L'ORA
GOTO :1025
:2639 SCRITTA_BLINK=ORA
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE=1 THEN :INCREMENTA_ORA
IF STATO_PULSANTE=3 THEN :2515 ' PASSO AI MINUTI
:INCREMENTA_ORA ORA=INT(ORA) + 1
SET MOD_ORARIO
IF ORA<24 THEN :2674
ORA=0
:2674 ORA= RIGHT("0" & ORA,2)
LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=ORA
WAITMS DELAY_PRESSIONE_PULSANTI
GOTO :2639

:MODIFICA_MINUTI '-----------------------------------------------
POS_SCRITTA_BLINK=&H14
SCRITTA_BLINK=MINUTI
GOSUB :VIS_ORARIO_DISPLAY
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE =3 THEN :2515 ' PASSO AL GIORNO
IF STATO_PULSANTE =1 THEN :INCREMENTA_MINUTI 'MODIFICO I MINUTI
GOTO :1025
:2839 SCRITTA_BLINK=MINUTI
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE=1 THEN :INCREMENTA_MINUTI
IF STATO_PULSANTE=3 THEN :2515 ' PASSO AL GIORNO
:INCREMENTA_MINUTI MINUTI=INT(MINUTI) + 1
SET MOD_ORARIO
IF MINUTI<60 THEN :2874
MINUTI=0
:2874 MINUTI= RIGHT("0" & MINUTI,2)
LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=MINUTI
WAITMS DELAY_PRESSIONE_PULSANTI
GOTO :2839
:MODIFICA_GIORNO '-----------------------------------------------
POS_SCRITTA_BLINK=&H18
SCRITTA_BLINK=GIORNO
GOSUB :VIS_ORARIO_DISPLAY
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE =3 THEN :2515 ' PASSO AL MESE
IF STATO_PULSANTE =1 THEN :INCREMENTA_GIORNO 'MODIFICO IL GIORNO
GOTO :1025
:2939 SCRITTA_BLINK=GIORNO
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE=1 THEN :INCREMENTA_GIORNO
IF STATO_PULSANTE=3 THEN :2515 ' PASSO AL GIORNO
:INCREMENTA_GIORNO GIORNO=INT(GIORNO) + 1
SET MOD_ORARIO
IF GIORNO<32 THEN :2974
GIORNO=1
:2974 GIORNO= RIGHT("0" & GIORNO,2)
LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=GIORNO
WAITMS DELAY_PRESSIONE_PULSANTI
GOTO :2939
:MODIFICA_MESE '-----------------------------------------------
POS_SCRITTA_BLINK=&H1B
SCRITTA_BLINK=MESE
GOSUB :VIS_ORARIO_DISPLAY
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE =3 THEN :2515 ' PASSO ALL'ANNO
IF STATO_PULSANTE =1 THEN :INCREMENTA_MESE 'MODIFICO IL MESE
GOTO :1025
:3039 SCRITTA_BLINK=MESE
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE=1 THEN :INCREMENTA_MESE
IF STATO_PULSANTE=3 THEN :2515 ' PASSO ALL'ANNO
:INCREMENTA_MESE MESE=INT(MESE) + 1
SET MOD_ORARIO
IF MESE<13 THEN :3074
MESE=1
:3074 MESE= RIGHT("0" & MESE,2)
LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=MESE
WAITMS DELAY_PRESSIONE_PULSANTI
GOTO :3039
:MODIFICA_ANNO '-----------------------------------------------
POS_SCRITTA_BLINK=&H1E
SCRITTA_BLINK=ANNO
GOSUB :VIS_ORARIO_DISPLAY
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE =3 THEN :2515 ' PASSO AL SOTTOMENU
IF STATO_PULSANTE =1 THEN :INCREMENTA_ANNO 'MODIFICO IL MESE
GOTO :1025
:3139 SCRITTA_BLINK=ANNO
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE=1 THEN :INCREMENTA_ANNO
IF STATO_PULSANTE=3 THEN :2515 ' PASSO AL SOTTOMENU
:INCREMENTA_ANNO ANNO=INT(ANNO) + 1
SET MOD_ORARIO
IF ANNO<50 THEN :3174
ANNO=1
:3174 ANNO= RIGHT("0" & ANNO,2)
LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=ANNO
WAITMS DELAY_PRESSIONE_PULSANTI
GOTO :3139
:SOTTOMENU_ORARIO_SVEGLIA '------------------------------
LCDCLEAR
LCDWRITE=ORASV & ":" & MINUTISV
CLR MOD_SVEGLIA
GOSUB :ATTENDI_RILASCIO_PULSANTE
MPOS=0
:3515 MPOS++
IF MPOS=1 THEN :MODIFICA_ORA_SVEGLIA
IF MPOS=2 THEN :MODIFICA_MINUTI_SVEGLIA
IF MPOS=3 THEN :SALVA_ORARIO_SVEGLIA
GOTO :MENU
:MODIFICA_ORA_SVEGLIA '-----------------------------------------------
ORASVOLD=ORASV
MINUTISVOLD=MINUTISV
GOSUB :VIS_ORARIO_SVEGLIA_DISPLAY
POS_SCRITTA_BLINK=&H11
SCRITTA_BLINK=ORASV
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE =1 THEN :INCREMENTA_ORA_SVEGLIA ' INCREMENTO L'ORA
IF STATO_PULSANTE =3 THEN :3515 ' PASSO AI MINUTI
GOTO :1025
:3639 SCRITTA_BLINK=ORASV
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE=1 THEN :INCREMENTA_ORA_SVEGLIA
IF STATO_PULSANTE=3 THEN :3515 ' PASSO AI MINUTI
:INCREMENTA_ORA_SVEGLIA ORASV=INT(ORASV) + 1
SET MOD_SVEGLIA
IF ORASV<24 THEN :3674
ORASV=0
:3674 ORASV= RIGHT("0" & ORASV,2)
LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=ORASV
WAITMS DELAY_PRESSIONE_PULSANTI
GOTO :3639
:MODIFICA_MINUTI_SVEGLIA '-----------------------------------------------
GOSUB :VIS_ORARIO_SVEGLIA_DISPLAY
POS_SCRITTA_BLINK=&H14
SCRITTA_BLINK=MINUTISV
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE =1 THEN :INCREMENTA_MINUTI_SVEGLIA ' INCREMENTO L'ORA
IF STATO_PULSANTE =3 THEN :3515 ' PASSO ALL'ORA...NO DEVO MEMORIZZARE LA SVEGLIA
GOTO :1025
:3839 SCRITTA_BLINK=MINUTISV
GOSUB :STATOPULSANTE_BLINK
IF STATO_PULSANTE=1 THEN :INCREMENTA_MINUTI_SVEGLIA
IF STATO_PULSANTE=3 THEN :3515 ' PASSO AI MINUTI
:INCREMENTA_MINUTI_SVEGLIA MINUTISV=INT(MINUTISV) + 1
SET MOD_SVEGLIA
IF MINUTISV<60 THEN :3874
MINUTISV=0
:3874 MINUTISV= RIGHT("0" & MINUTISV,2)
LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=MINUTISV
WAITMS DELAY_PRESSIONE_PULSANTI
GOTO :3839
:STATOPULSANTE_BLINK ' STATO_PULSANTE TORNA 1 SE VIENE PREMUTO, 2 SE PREMUTO A LUNGO
CLR NRBLK
RESET_TIMER
SET BLK
GOTO :4125
:4003 IF TIMER >0.5 THEN :4100 ' STAMPO CHAR
IF !INPBIT(PULSANTE_SET) THEN :4003 ' ATTENDO PRESSIONE PULSANTE
RESET_TIMER
:4049 IF TIMER >1.0 THEN :4070 ' PULSANTE PREMUTO A LUNGO
IF INPBIT(PULSANTE_SET) THEN :4049 ' ATTENDO IL RILASCIO DEL PULSANTE
STATO_PULSANTE=1
RETURN
:4070 STATO_PULSANTE=2
RETURN
:4080 STATO_PULSANTE=3
RETURN
:4100 BLK=!BLK
NRBLK++
IF NRBLK=4 THEN :4080
IF BLK THEN :4125
LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=SCRITTA_BLINK
GOTO :4140
:4125 LCDPOS=POS_SCRITTA_BLINK
LCDWRITE=RIGHT(" ",LEN(SCRITTA_BLINK))
:4140 RESET_TIMER
GOTO :4003
:SUONA_SVEGLIA '-----------------------------------
RESET_TIMER
VOL=0
:5001 FDATE=0
STR_DATE=DATE
VOLUME=INT(VOL)
VOL+=0.1 'AUMENTO IL VOLUME CON IL TEMPO CHE PASSA
IF VOL < 100 THEN :L001
VOL=100 ' LIMITO IL VOLUME AL VALORE MASSIMO
:L001 LCDPOS=&H21
LCDWRITE=" !!!SVEGLIA!!! "
LCDPOS=POS_ORA_DISPLAY
LCDWRITE=RIGHT(STR_DATE, 8) ' VISUALIZZO L'ORA
OUTBIT(LUCE_DISPLAY)=1
BEEP_OK
IF INPBIT(PULSANTE_SET) THEN :END_SVEGLIA
BEEP
IF INPBIT(PULSANTE_SET) THEN :END_SVEGLIA
BEEP_NOK
IF INPBIT(PULSANTE_SET) THEN :END_SVEGLIA
WAITMS 500
IF INPBIT(PULSANTE_SET) THEN :END_SVEGLIA
IF TIMER> MAX_TEMPO_SUONO_SVEGLIA THEN :END_SVEGLIA ' Se suona a lungo la sveglia la disattivo
GOTO :5001
:END_SVEGLIA
LCDCLEAR
LCDWRITE="STOP SVEGLIA"
VOLUME=100
WAITMS 1000
GOSUB :ATTENDI_RILASCIO_PULSANTE
CLR SV ' LEVO LA SVEGLIA
CELL=CELLA_STATO_SVEGLIA
WEEPROM=SV
GOSUB :SET_STR_SVEGLIA
LCDCLEAR
LA=0
PULSANTE_PREMUTO=1
RESET_TIMER
GOTO :MAIN
:SALVA_ORARIO_SVEGLIA '----------------
IF !MOD_SVEGLIA THEN :6025 ' Non è stata modificata la sveglia...non si deve salvare nulla
LCDCLEAR
LCDWRITE="NUOVO ORARIO?"
GOSUB :STATOPRESSIONEPULSANTE
IF STATO_PULSANTE = 1 THEN :SAVE_ORA_SVEGLIA
ORASV=ORASVOLD
MINUTISV=MINUTISVOLD
:6025 GOTO :MENU
:SAVE_ORA_SVEGLIA '---------------------
CELL=CELLA_ORA_SVEGLIA
WEEPROM=ORASV
CELL=CELLA_MINUTI_SVEGLIA
WEEPROM=MINUTISV
LCDPOS=&H21
LCDWRITE="NUOVA SVEGLIA!"
GOSUB :EMETTI_SUONO_CONFERMA_MODIFICA
WAITS 1
GOTO :MENU
:EMETTI_SUONO_CONFERMA_MODIFICA
BEEP
BEEP_OK
RETURN



Scarica allegato

ecocalendario.eab ( Numero download: 282 )



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


---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi: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.altervista.org/
http://pptea.altervista.org/

 

ecologix1971

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi: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


Gruppo:AMMINISTRATORE
Messaggi: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.altervista.org/
http://pptea.altervista.org/

 

ecologix1971

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi: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
 

Pagine: (2)   [1]   2    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum