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!