Mi presento

Buon giorno a tutti, mi chiamo andrea, lavoro a Trieste, ma son di udine ed ho la mia bella età.

Ho da un pò aquistato arduino uno, e devo dire che è un bel oggetino, e mi sto divertendo a imparare a programmarlo, dovrei aver aquistato pure il libro..ma non arriva bho, cosi magari chiederò a voi che certamente ne sapete più di me (io son elettronico e non molto informatico :) ) alcune cose, magari che a voi sembreranno banali e stupide...ma abbiate pazienza.

la prima domanda che vorei porvi è la seguente:

se devo settare per esempio alti più uscite contemporaneamente (es 13, 12, 11 ,10) devo scrivere digitalWrite(13, HIGH),...., digitalWire (10, HIGH) ovvero bit per bit, oppure ce un istruzione o cumunque un modo per fare il tutto senza dover ogni volta riscrivere tutto?

Grazie 1000 da Andrea

Ciao e benvenuto! :slight_smile:
Le prime due soluzioni che mi vengono in mente sono:

  1. Utilizzare un ciclo for:
for(int i=10; i<14; i++)
   digitalWrite(i, HIGH);

oppure

  1. Creare una funzione simile a questa:
void pin_High()
{
   for(int i=10; i<14; i++)
      digitalWrite(i, HIGH);
}

da richiamare in qualsiasi punto del programma con il comando:

pin_High();

si quelal con il for mi era venuta in mente mente scrivevo prima :) Pensavo ci fosse magari un "qualcosa" magari che ne so passando un byte (0x0000000) e far si che l'intero set vada a zero, ma senza usare "trucchetti", si insomma gia pronto all'uso (è sulo una curiosità ecco grazie :D

Non ho capito molto… :~

Martinix:
Pensavo ci fosse magari un “qualcosa” magari che ne so passando un byte (0x0000000)

Passandolo in che modo e a chi? :slight_smile:

Martinix:
e far si che l’intero set vada a zero,

Da quel che ho capito, basterebbe creare questa funzione:

void pin_Change(int comando)
{
   for(int i=10; i<14; i++)
      digitalWrite(i, comando);
}

“Pronta all’uso”, da utilizzare quando e quante volte vuoi, semplicemente con:

pin_Change(HIGH);

oppure

pin_Change(LOW);

Martinix:
ma senza usare “trucchetti”, si insomma gia pronto all’uso (è sulo una curiosità ecco grazie :smiley:

Non so se questo è un “trucchetto”, ma spero comunque che ti sia utile… :slight_smile:

bisogna andare "sotto il cofano" di arduino.

I pin del microcontrollore sono mappati internamente a dei registri a 8 bit che si chiamano PORTA PORTB PORTC se scrivi un numero in PORTB modifichi contemporaneamente tutti i pin dall'8 al13

devi studiare qui http://www.arduino.cc/en/Reference/PortManipulation

m

Credo che le funzioni per agire sui singoli bit esistano "a basso livello", ma questo livello è "nascosto" dalle librerie Arduino per semplificare la programmazione; cioe', invece di ricordarti su quale registro sta un pin, basta che ti ricordi il numero del pin, e ci pensa la libreria ad accedere al bit giusto del registro giusto. Quindi probabilmente se cerchi setPin() nei sorgenti, trovi le funzioni primitive su cui si basa.

[quote author=Massimo Banzi link=topic=52432.msg374245#msg374245 date=1297867098] bisogna andare "sotto il cofano" di arduino.

I pin del microcontrollore sono mappati internamente a dei registri a 8 bit che si chiamano PORTA PORTB PORTC se scrivi un numero in PORTB modifichi contemporaneamente tutti i pin dall'8 al13

devi studiare qui http://www.arduino.cc/en/Reference/PortManipulation

m [/quote] Si mi ero espresso da cani, ma era proprio questo che volevo sapere (e cercavo)specie come settare contemporaneamente (senza ritardi) i vari bit)....wonderful!! e mi interessava molto :) un occhio a quanto linkato me lo darò volentieri grazie 1000 a tutti by Andrea

Senza dubbio quello che ti serve e' questo che ha scritto Massimo

Facciamo un esempio: Se vuoi mangiare i tortellini con la ricotta puoi comprarli in negozio e farteli con la salvia. Puoi anche comprare farina, uova, ricotta, spinaci no, i spinaci no, li prendi dal giardino dove li stai coltivando giá da primavera, sale ecc e farti prima la pasta, il riempimento e poi i tortellini prima di bollirli.

Nel primo caso é semplice, ma devi prendere quello che hanno nel negozio (quello di rio gianni che non ti piacciono tanto). Nel secondo caso sei lí mezza giornata per fare i tortellini con la antica e segreta ricetta di Tua nonna ma sei libero di scegliere tutto a Tuo piacere.

Il C++ di Arduino Ti da la possibilitá di mettere un uscita su HIGH o LOW senza conoscere tutto il retroscena. Cosa buona per chi inizia o non é interessato ai particolari.

Puoi anche usare i comandi a basso livello ( basso inteso vicino al hardware del controller) e avere piú libertá di schelta ma anche la necessitá di sapre in modo piú dettagliato cosa devi fare. Devi anche sapere manipolare i singoli bit per accendere un solo pin.

Tutti 2 le possibilitá sono valide, ma non per tutti.

Ciao Uwe

si si certo, è ovvio che manipolare i bit è cosa più complessa (un pò mi ricordo dello z80 che studiai a scuola credo nel neolitico...) solo che a volte mi pongo delle domande e fin che non trovo una risposta non so darmi pace (vedessi al lavoro) di solito passa tempo ma alla fine la trovo. E la risposta di MAssimo è stata illuminate! XD è chiaro che manipolare i bit cosi è cosa un pò più complessa (ma eccitante) ma l'importante è che si possa fare e che sia documentato.

Approposito (domanda fuori post) io avevo ordinato il librone di arduino a novembre/dicembre ma ancora dovel l'ho orinato dicono che son in attesa che arrivi dal fornitore o roba del genere...devo preoccuparmi? Non ce ancora o non lo hanno loro? buona giornata a tutti.

Federico: Senza dubbio quello che ti serve e' questo che ha scritto Massimo

E grazie al cavolo!! :)

Va bhe, partiamo dal presupposto che nessuno e' infallibile! Magari neanche Massimo :-)

provato il metdo sopra citato, e funziona alla grande!!! Grazie a tutti x l’aiuto!

By Andrea