Il mio amore per la scienza – e l’astronomia in particolare – mi è stato di stimolo per apprendere – e anche sperimentare – un’infinità di cose tra loro molto diverse. In gioventù toccò alla elettronica applicata alle onde radio 1 che mi avvicinò anche al mondo radioamatoriale. Poi fu la volta dei computer e della loro capacità di elaborazione (fondamentale in astronomia) ad attirare la mia attenzione. E se è vero che la vecchiaia è una seconda gioventù, alla soglia dei cinquanta non devo farmi cogliere impreparato.
Progettare un astroinseguitore (o tavoletta equatoriale) pone dei limiti progettuali piuttosto importanti, di cui il principale è senz’altro l’errore tangenziale nella velocità di guida che rischia di vanificare la bontà di qualsiasi buon lavoro di costruzione.
Per questo ho scelto di pilotare il motore con un sistema che fosse programmabile. Così posso decidere se, quando e quanto variare la velocità del braccio pilota. Ma essendo io quasi a digiuno di elettronica, di controllori programmabili e di robotica, da buon sperimentatore ho deciso di addentrarmi anche in questo campo, armato del buon spirito da autodidatta che da sempre mi si confà 2
Poter programmare una scheda come in questo caso un Arduino UNO R3 (clone) non è difficile; i programmi sono piuttosto semplici da leggere per chi sa programmare in C, anche a livello elementare.
Qui in fondo troverete lo sketch (si chiamano proprio così i programmi scritti per Arduino) infarcito ben bene di commenti 3 per rendere meglio l’idea su come esso funzioni. In pratica il programma istruisce Arduino a leggere lo stato di alcune porte per vedere se viene premuto un qualsiasi tasto e in tal caso accendere o spegnere il LED corrispondente, pilotato questo dalla commutazione di un’altra porta digitale della scheda.
Può apparire, ed in effetti lo è, un’operazione piuttosto banale ma comprendere come cambiare stato logico ad una porta digitale, poterne pilotare gli effetti (in questo caso accendere un LED) e come funziona tutta la circuiteria elettronica di contorno, non è poi così ovvio. Al posto dei LED potremmo scegliere di fare un’altra cosa, come azionare un motorino elettrico, controllarne la direzione e la velocità di rotazione. Oppure accendere una luce di casa, controllare una tapparella o ruotare una cupola di un osservatorio astronomico. Le possibilità sono infinite.
I materiali usati per il circuito descritto in questo articolo:
- una bread board (basetta sperimentale senza saldature) da 400 reofori.
- 4 resistenze da 1 kΩ 1/2 W.
- 4 pulsanti n.a. (normalmente aperti) del tipo SMD/SMT a 4 pin.
- 4 diodi LED di recupero.
Questi sono materiali poveri, incluso il costo di una scheda clone di Arduino UNO R3, che per le prove va più che bene, in totale sono appena 10 euro, tutto sommato una cifra davvero ridicola.
Spero così di stuzzicare la vostra curiosità così come è stata solleticata la mia, cieli sereni.
#define LED1 9 // Led 1 collegato alla porta digitale 9 #define LED2 10 // Led 2 collegato alla porta digitale 10 #define LED3 11 // Led 3 collegato alla porta digitale 11 #define LED4 12 // Led 4 collegato alla porta digitale 12 #define PULSANTE1 1 // Pulsante 1 collegato alla porta digitale 1 #define PULSANTE2 2 // Pulsante 2 collegato alla porta digitale 2 #define PULSANTE3 3 // Pulsante 3 collegato alla porta digitale 3 #define PULSANTE4 4 // Pulsante 4 collegato alla porta digitale 4 int porta1 = 0; // Azzera la variabile per la porta digitale 1 int porta2 = 0; // Azzera la variabile per la porta digitale 2 int porta3 = 0; // Azzera la variabile per la porta digitale 3 int porta4 = 0; // Azzera la variabile per la porta digitale 4 void setup() { // Inizializza il programma pinMode(LED1, OUTPUT); // Attribuisce lo stato di scrittura alla porta digitale 9 pinMode(LED2, OUTPUT); // Attribuisce lo stato di scrittura alla porta digitale 10 pinMode(LED3, OUTPUT); // Attribuisce lo stato di scrittura alla porta digitale 11 pinMode(LED4, OUTPUT); // Attribuisce lo stato di scrittura alla porta digitale 12 pinMode(PULSANTE1, INPUT); // Attribuisce lo stato di lettura alla porta digitale 1 pinMode(PULSANTE2, INPUT); // Attribuisce lo stato di lettura alla porta digitale 2 pinMode(PULSANTE3, INPUT); // Attribuisce lo stato di lettura alla porta digitale 3 pinMode(PULSANTE4, INPUT); // Attribuisce lo stato di lettura alla porta digitale 4 } void loop() { // Avvia il ciclo principale porta1 = digitalRead(PULSANTE1); // Legge lo stato del pulsante 1 e lo assegna alla variabile porta1 porta2 = digitalRead(PULSANTE2); // Legge lo stato del pulsante 2 e lo assegna alla variabile porta2 porta3 = digitalRead(PULSANTE3); // Legge lo stato del pulsante 3 e lo assegna alla variabile porta3 porta4 = digitalRead(PULSANTE4); // Legge lo stato del pulsante 4 e lo assegna alla variabile porta4 if (porta1 == HIGH) { // Se lo stato letto prima è ALTO allora digitalWrite(LED1, HIGH); // accendi il led 1 } else { // altrimenti digitalWrite(LED1, LOW); // spegni il led } if (porta2 == HIGH) { // Se lo stato letto prima è ALTO allora digitalWrite(LED2, HIGH); // accendi il led 2 } else { // altrimenti digitalWrite(LED2, LOW); // spegni il led } if (porta3 == HIGH) { // Se lo stato letto prima è ALTO allora digitalWrite(LED3, HIGH); // accendi il led 3 } else { // altrimenti digitalWrite(LED3, LOW); // spegni il led } if (porta4 == HIGH) { // Se lo stato letto prima è ALTO allora digitalWrite(LED4, HIGH); // accendi il led 4 } else { // altrimenti digitalWrite(LED4, LOW); // spegni il led } }
Note:
Note:
- L’idea originale partiva dalla consapevolezza che l’attività solare influenza la ionosfera terrestre, quindi studiare la propagazione delle emittenti nelle onde corte (intensità del segnale, distanza etc.) avrebbe potuto restituire informazioni sullo stato della nostra stella. In realtà le variabili in gioco sono tantissime e molto complesse ma l’idea l’ebbi a tredici anni ed era piuttosto originale. ↩
- Le mie conoscenze nel campo dell’elettronica sono molto elementari, quindi spero che vorrete perdonarmi se includo qualche strafalcione. ↩
- Io in genere odio scrivere i commenti nel mio codice, in genere sono piuttosto arruffone, pessima abitudine appresa agli albori dell’informatica casalinga, quando i programmi e la RAM erano in tutto appena 16 kB e si usavano le musicassette come memoria di massa. ↩
Condividi: