c'era una volta un pin remoto....

Voi non lo volete sapere, ma col mio inganniere preferito, l'unico che dice cose intelligenti quando parla (devo ricordarmi di guardare bene bene da vicino la sua laurea, magari scopro cose interessanti)
dicevo, con lui stiamo facendo un "coso distribuito" per leggere le temperature nelle stanze di casa
avrebbe dovuto essere un Attiny con LM25, no DS18B20 No di piu' di potenza, no, anche a corrente, non solo a pile... col filo, via radio anche wifi ,,,,,
insomma un bel progettone che può servire a sviluppare qualunque cosa uno voglia, tanto si trova la maniera per metterlo dentro....
e quindi ho ripreso, il vecchio (si fa per dire) progetto dei pin remoti
che sembra andare abbastanza bene, ma manca la possibilità di leggere, comandare, impostare, decidere e frullare (no, frullare non è ancora previsto, ma chssa)
OK dico io, tanto l'idea mi girava già per la testa, stasera ci metto la letura remota, gli dico
Gielo dico e lo faccio
solo che tra le cavallette, la tintoria che non mi aveva consegnato il tight, il funerale di mia madre e l'alluvione non ho ancora avuto il tempo di provarlo (non è stata colpa mia, lo giuro suddio)
oggi sono stanco e non lo provo di certo, domani c'è veramente un funerale, e quindi non so se lo proverò
facciamo così: io metto qui il distillato del mio cerebro, se vi sembra di vedere grosse cappelle alazate la mano,
poi settimana prossima tento di collaudarlo e fare un resoconto
tenetevi orte, che arriva la
libreria di remotaggio V2.0, la vendetta del byte

oltre i 9 k, ci vediamo al prossimo messaggio

Cavolo, sforo sempre e comunque i 9k
vabbe', lo allego

remotaggio.h (20 KB)

Come funziona?
semplice, uguale uguale alla stagione dei pin remoti, di pochi mesi fa
ho aggiunto tre nuovi comandi
ipotizzando esista sulla macchina slave un array di byte la funzione
int remoteByteRead(char indirizzo, byte elemento)
restituisce il contenuto dell'elemento di indice "elemento" dell'array sulla macchina in indirizzo
due parole su questo indice:
per non cambiare il formato dati in ricetrasmissione ho riutilizzato il campo PIN, che parte dal carattere '0' per indicare 0, quindi la dimensione massima del vettore è di 78 elementi, vediamo di non sbordare
invece la funzione:
int remoteByteWrite(char indirizzo, byte elemento, byte valore)
imposta il valore dell'elemento di indice "elemento" al valore "valore"
e siccome "io ritorno sempre" ritorna il valore letto da quell'elemento, confermando così la'avvenuta scrittura
altre due parole su come si inizializza questo vettore:
basta definire, PRIMA di includere la libreria, la macro VETTOREBYTE a un numero diverso da zero (ma minore di 78)
la libreria dimensionerà un array di nome vettorebyte, dove in locale si potrà leggere o scrivere come un normale vettore, da remoto con le due funzioni citate
se invece si crea un array di puntatori a funzioni int f(int), con la funzione
int remoteFunBCall(char indirizzo, byte elemento, byte valore)
si chiama la funzione untata dall'elementesimo elemento dell'array di puntatori a funzioni
anche qui basta definire prima la macro VETTOREFUNZIONI perchè la libreria crei il vettorefunzioni di massimo 78 elementi
le funzioni che si vanno a creare per popolare l'array devono restituire byte (in realtà int con solo 4 cifre, causa formato di trasmissione) ed accettare un solo argomento byte
se non fosse necessario un argomento accettatelo e non fatene uso, se non fosse necessario un ritorno ritornate zero a vuoto

Dicevo: io stasera non la provo, andrà a settimana prossima, ma magari qualcuno più bravo di me avrà voglia di darci uno sguardo

buon fine settimana a tutti

Ok, collaudato, e tolto qualche bacherozzo
la cosa secondo me merita un post a parte

l'ho scaricata ma non ho ancora avuto il tempo di provarla :slight_smile:

prendi la nuova da qui:alla fiera degli Array un ascensore mio padre comprò........ - Software - Arduino Forum