Firmware

28 febbraio 2014

Il semplice programma scritto da me in PicBasic viene inserito nel micro-controllore e serve a fargli eseguire le varie operazioni durante l’ intero volo. Anche se non ve ne intendete di codice può essere interessante dargli un occhiata. In particolare vi consiglio di leggere i miei deliranti commenti (scritti in blu) così vi farete qualche risata 😉

 

 

‘****************************************************************
‘*  Name    : FlySoHigh.BAS                                     *
‘*  Author  : Siega Stefano                                     *
‘*  Notice  : Free to use                                       *
‘*            $$$$                                              *
‘*  Date    : 26/10/2013                                        *
‘*  Version : 2.1.0                                             *
‘*  Notes   : 16F628A                                           *
‘*          : Oscillatore interno                               *
‘****************************************************************
 
‘PREAMBOLO 🙂
‘dovete sapere che il programmatore medio
‘quando si mette a scrivere “codice” entra
‘in una specie di stato di trance. Comincia un viaggio
‘in un mondo surreale in cui ci sono solo lui
‘un monitor bianco e tante righine di scritte apparentemente
‘insensate e colorate che, quando durante la compilazione diventano
‘rosse (ERRORI), innescano nel programmatore momenti di
‘ira e imprecazione. Vi ricordo per tanto che probabilmente
‘parlando con un programmatore in pieno sviluppo non otterrete
‘nessuna risposta sensata.
‘e ora passiamo al codice =>
 
CMCON = 7               ‘Comparatore analogico OFF
                        ‘Oscillatore interno
p1 VAR porta.3          ‘pulsante 1 (non utilizzato) su porta a3
p2 VAR porta.4          ‘pulsante 2 (non utilizzato) su porta a4
set VAR porta.6         ‘Set relè su porta b0
reset VAR porta.7       ‘Reset relè 4 su porta b1
led1 VAR portb.2        ‘Led1 su porta b2 (anteriore)
led2 VAR portb.4        ‘Led2 su porta b4 (posterire)
led3 VAR portb.5        ‘Led3 su porta b5 (destro)
led4 VAR portb.6        ‘Led4 su porta b6 (sinistri)
led5 VAR portb.7        ‘Led5 su porta b7 (inferiore)
buzzer VAR portb.3      ‘Cicalina su porta b3 (suoneria)
th VAR WORD             ‘Variabile di tipo word (tempo 1/2 secondi)
tm VAR WORD             ‘Variabile di tipo word (tempo 10 minuti)
dc VAR WORD             ‘Variabile di tipo word (contatore decollo)
dv VAR WORD             ‘Variabile di tipo word (contatore volo)
b VAR WORD              ‘Variabile di tipo word (frequenza tono basso)
h VAR WORD              ‘Variabile di tipo word (frequenza tono alto)
m VAR WORD              ‘Variabile di tipo word (frequenza tono ritrovamento)
 
b=1500                  ‘Hertz tono basso
h=1900                  ‘Hertz tono alto
m=4300                  ‘Hertz tono ritrovamento
th=507                  ‘Tempo (1/2 secondo)
tm=591                  ‘Tempo (10 min)
dc=0                    ‘Contatore decollo (0)
dv=0                    ‘Contatore volo (0)   
 
‘prestart                livello logico basso per gli ingressi del relè
LOW reset
LOW set
 
‘start                   START
start:                  ‘Accendi un po’ i LED e
PAUSE th                ‘e fai suonare il
HIGH led1               ‘cicalino giusto per
HIGH led2               ‘farmi capire che
HIGH led3               ‘la batteria è stata attaccata
HIGH led4               ‘e che qualcosa sta funzionando
HIGH led5               ‘e setta la batteria ausiliaria come predefinita                
GOSUB bip              
HIGH set               
PAUSE th/2             
LOW set
LOW led1               
LOW led2               
LOW led3               
LOW led4               
LOW led5               
PAUSE 2*th             
GOSUB bipl             
PAUSE 500              
GOSUB ring             
PAUSE 150              
GOSUB ring             
PAUSE 500              
GOSUB bip3              ‘OK ora vai alla sequenza di decollo
 
‘decollo                 DECOLLO
decollo:                ‘Ora fai lampeggiare i LED
LOW led1                ‘in modo che durante il decollo
PAUSE th/2              ‘notturno il payload sia visibile
LOW led1                ‘finchè non è troppo lontano per essre visto
HIGH led2               ‘ad occhio nudo. Ripeti questa sequenza
PAUSE th/2              ‘per una decina di minuti.
LOW led2                ‘Non accendere il led frontale
HIGH led3               ‘(dalla parte della videocamera)
PAUSE th/2              ‘per non rovinare le riprese notturne.
LOW led3               
HIGH led4              
PAUSE th/2             
LOW led4               
HIGH led5              
PAUSE th/2             
LOW led5               
dc = dc+1              
IF dc >= 480 THEN      
    GOTO volo          
ELSE                   
    GOTO decollo        ‘Passa alla fase di volo
ENDIF                   ‘(basso consumo energetico)
 
‘volo                   VOLO: VERSO I 30,000 METRI!
volo:                   ‘Dormi (basso consumo) per 10 minuti
GOSUB bip               ‘dopo di che svegliati e fai suonare
SLEEP tm                ‘il cicalino per far sapere che continui
dv = dv+1               ‘a funzionare anche con il gelo la fuori.
testreset:             
IF dv = 7 THEN          ‘A metà volo setta la batteria interna per la
    GOSUB bip3          ‘videocamera e risparmia la batteria ausiliaria per         
    HIGH reset          ‘la fase di atterraggio e ritrovamento
    PAUSE th/2         
    LOW reset          
    PAUSE 1000         
ENDIF                  
IF dv >= 14 THEN        ‘poi rimettiti a dormire per altri 10 minuti.
    GOTO atterraggio    ‘Ripeti questa sequenza per 2 ore e 20.
ELSE                   
    GOTO volo          
ENDIF                   ‘Passa alla fase di atterraggio
 
‘questo programma è stato scritto
‘durante un sabato notte-domenica mattina
‘(a dire il vero preferivo essere in disco
‘ma mi hanno tirato il pacco)
‘con la compagnia di una birra fresca
‘e la tv accesa su un canale che parla di..
‘PUB INGLESI?.. a no.. paranormale..
‘alla salute allora!
 
‘YAUH OK ORA E’ TARDI IL RESTO DEL CODICE LO SCRIVERO’
‘UN ALTRO GIORNO…
 
‘FORSE…
 
‘————————————————————-
 
‘2/11/13 ECCOMI QUI A CONTINUARE LA PROGRAMAZIONE
‘ANDIAMO AVANTI:
 
‘atterraggio            PREGHIERINA PERCHE’ SIA MORBIDO…
atterraggio:
GOSUB c                
GOSUB c                 ‘ lettera
GOSUB c                 ‘ S
GOSUB p                
 
GOSUB l                
GOSUB l                 ‘ lettera
GOSUB l                 ‘ O
GOSUB p                
 
GOSUB l                 ‘ lettera
GOSUB c                 ‘ N
GOSUB p                
 
GOSUB l                
GOSUB l                 ‘ lettera
GOSUB l                 ‘ O
GOSUB p                
 
GOSUB p                 ‘ pausa
 
GOSUB l                
GOSUB l                 ‘ lettera
GOSUB c                 ‘ Q
GOSUB l                
GOSUB p                
 
GOSUB c                
GOSUB c                 ‘ lettera
GOSUB l                 ‘ U
GOSUB p                
 
GOSUB c                 ‘ lettera
GOSUB c                 ‘ I
GOSUB p                
 
GOSUB p                 ‘ pausa
 
GOSUB l                
GOSUB l                 ‘ due
GOSUB l                 ‘ punti
GOSUB c                 ‘ :
GOSUB c                
GOSUB c                
GOSUB p                
 
GOSUB l                
GOSUB c                 ‘ parentesi
GOSUB l                 ‘ tonda
GOSUB l                 ‘ )
GOSUB c                
GOSUB l                
GOSUB p                
                        ‘
PAUSE th*10            
                        ‘
GOTO atterraggio        ‘RIPETI CONTINUAMENTE SPERANDO NEL RITROVAMENTO!
 
 
‘ROUTINE
                       
c:                      ‘Tono morse/recupero corto
HIGH led1              
HIGH led2              
HIGH led3              
HIGH led4              
HIGH led5              
HPWM 1,128,m           
PAUSE th/5             
HPWM 1,128,0           
LOW led1               
LOW led2               
LOW led3               
LOW led4               
LOW led5               
PAUSE th/3             
RETURN                 
                       
l:                      ‘Tono morse/recupero lungo
HIGH led1              
HIGH led2              
HIGH led3              
HIGH led4              
HIGH led5              
HPWM 1,128,m           
PAUSE th/2             
HPWM 1,128,0           
LOW led1               
LOW led2               
LOW led3               
LOW led4               
LOW led5               
PAUSE th/3             
RETURN                 
                       
p:                      ‘Pausa morse
PAUSE th               
RETURN                 
                       
bip:                    ‘Tono Bip
HPWM 1, 128, b         
PAUSE 100              
HPWM 1, 128, h         
PAUSE 75               
HPWM 1, 128, 0         
PAUSE 50               
HPWM 1, 128, b         
PAUSE 100              
HPWM 1, 128, h         
PAUSE 75               
HPWM 1, 128, 0         
RETURN                 
                        
bipl:                   ‘Tono Bip lungo
HPWM 1, 128, b         
PAUSE 500              
HPWM 1, 128, 0         
RETURN                 
                        
ring:                   ‘Tono ring
HPWM 1, 128, b         
PAUSE 75               
HPWM 1, 128, h         
PAUSE 75               
HPWM 1, 128, b         
PAUSE 75               
HPWM 1, 128, h         
PAUSE 75               
HPWM 1, 128, b         
PAUSE 75               
HPWM 1, 128, h         
PAUSE 75               
HPWM 1, 128, b         
PAUSE 75               
HPWM 1, 128, h         
PAUSE 75               
HPWM 1, 128, 0         
RETURN                 
 
bip3:                   ‘tono bipx3
HPWM 1, 128, h         
PAUSE 500              
HPWM 1, 128, 0         
PAUSE 500              
HPWM 1, 128, h         
PAUSE 500              
HPWM 1, 128, 0         
PAUSE 500              
HPWM 1, 128, h         
PAUSE 500              
HPWM 1, 128, 0         
RETURN                 
 
‘FINE!

Rispondi