Fablab Wiki

Arduino Genuino

Modifica


Info generiche

Usare i pin LOW come GND?

Leggendo uno schema elettrico sul pdf che ci ha passato Stefano ho trovato un circuito a mio avviso un po' strano dove il pin 13 di arduino impostato come output, quando è settato LOW funziona come pin GND. Incuriosito ho replicato il circuito e in effetti funziona, perchè in sostanza quello che conta è la differenza di potenziale. Però mi sono documentato e ho scoperto che in teoria sarebbe possibile usare sempre i pin output di arduino settati LOW come ground ma il punto è: conviene farlo? a quanto pare è meglio di no. Infatti questi pin possono sopportare una corrente inversa al massimo di 30-40mA, un po' pochino... quindi, a meno di non voler sfruttare questa possiblità per pilotare dei semplici led (l'esempio sul libro faceva proprio questo), è sempre meglio ricorrere alla GND migliore possibile a disposizione, cioè il pin apposito. Qui trovate i dettagli:
http://arduino.cc/forum/index.php/topic,19044.0.html

Arduino Fio + Xbee

Arduino Leonardo

Tipi di variabili in Arduino

Tratto dal tutorial Sparkfun:Introduction to data types in the Arduino

Le funzioni

https://www.arduino.cc/en/Reference/FunctionDeclaration

Le Union

Le union sono utili per convertire variabili grosse in piu' bytes o ricavarle da dati seriali.

Tutorial:1,2

Esempio:

float snelheid;

union u_tag 
    byte b[4];
    float fval;
 u;

u.b[0]  snelheidArray[0];
u.b[1]  snelheidArray[1];
u.b[2]  snelheidArray[2];
u.b[3]  snelheidArray[3];

snelheid  u.fval;

Gli Interrupt

a volte capita di voler far stare arduino in "ascolto" di un evento che può verificarsi casualmente, ma che è difficile captare perchè in quel frangente potrebbero essere in esecuzione altre funzioni. E' possibile gestire agevolmente questi eventi servendosi degli interrupt, ovvero delle "interrupt service routine". Si impostano cioè degli eventi che se accadono su determinati pin (tipicamente un paio, il 2 e il 3), interrompono quello che sta facendo arduino e mandano in esecuzione immediatamente una certa funzione pre-impostata.

Mi sembra una funzione molto utile che che finora non era uscita. Io la userò per "acchiappare" gli impulsi dei sensori di velocità del vento e della pioggia per calcolarne le intensità. Le funzioni attaccate al pin dell'interrupt hanno alcune limitazioni, in particolare al loro interno non funzionano i delay e i valori restituiti da millis() non incrementano. Inoltre le variabili usate al loro interno vanno definite come "volatile" il che se ho ben capito significa che vengono scritte e lette direttamente dalla ram e non su altri registri (il motivo è che durante l'interrupt arduino esce dal loop).