BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Arduino, questo (s)conosciuto (https://www.baronerosso.it/forum/circuiti-elettronici/176959-arduino-questo-s-conosciuto.html)

Guglio 11 giugno 10 16:34

Citazione:

Originalmente inviato da lol21 (Messaggio 2104025)
beh, dovrei avere la possibilità di programmarlo più volte...
io invece ho trovato questo:
.: Robot Italy WebSite:. : ATmega328 with Arduino Bootloader [709217] - 4,80EUR

basta fargli un circuitino e poi programmarlo come se fosse un arduino questo? :blink:

ciao
lol21

Si quello è il pezzo che devi montare sul circuitino.. solo che deve già avere su il software di arduino

Guglio 11 giugno 10 16:54

Arduino - ArduinoISP
L'ultimo esempio è il tuo, così non devi nemmeno comprare un atmega con già il software di arduino installato.

lol21 11 giugno 10 17:36

un momento, ho capito lo standard i2c, in pratica con un chip da una trasmissione seriale ricevo un numero determinato di pin I/O comandabili appunto dal protocollo seriale del master e dello slave giusto? questo è comodo soprattutto per risparmiare porte, ad esempio sul sito da te segnalatomi c'è l'esempio del controllo dell'lcd, ma allora se io usassi solo un arduino come "server" e tutti i terminali avessero un pic o atmel o quellochecè come microprocessore potrei usare il suo standard i2c per la comunicazione dei dati al server... giusto? ma comunque su ogni terminale ci deve essere un microprocessore, non credo che un solo arduino riesca a controllare 12 lcd e 12 tastierini accoppiandone 2 sapendo che probabilmente dovrò avere visualizzazioni diverse.

infatti una cosa che prevede il mio progetto dal prossimo firmware è la possibilità di vedere il nome dell'arciere corrispondente a quel bersaglio, quindi nome e cognome, insomma deve rimanere memorizzato nel terminale oltre al punteggio anche il nome e cognome dell'arciere... un solo arduino non credo riesca a gestire tutti questi dati.

insomma mi ci vuole comunque un microcontrollore di mezzo... giusto? :wacko:

ciao
lol21

lol21 11 giugno 10 17:38

Citazione:

Originalmente inviato da Guglio (Messaggio 2104156)
Arduino - ArduinoISP
L'ultimo esempio è il tuo, così non devi nemmeno comprare un atmega con già il software di arduino installato.

uhm... in tal caso potrei utilizzare il software di arduino sull'atmega e usare quello come controllore tra la comunicazione i2c e l'lcd e tastierino del palmare...

ciao
lol21

BBC25185 11 giugno 10 17:54

Un solo Aurduino non riesca a gestire 12 lcd e 12 tastierini da 5 pulsanti???

Ma hai visto qualche filmato dove con l'arduino riescono a pilotare contemporaneamente 512 led (un cubo da 8x8x8 led) in modo da creare animazioni 3d???

In fondo è solo software da scrivere!!!
Comunque sia il Master è l'unità che si occupa di gestire il canale dati (è lui e solo lui che autorizza a mandare e ricevere dati)... quindi è un microcontrollore (o un computer... anche il PC ha un bus I2C (localizzato sulla porta VGA)!!!

I slave, invece, si occupano di mandare quello che chiede il master!!!

Per esempio... WiiMotionPlus...
Con l'arduino, usando l'I2C, può chiedere al motionplus di spedirgli i valori dei 3 giroscopi presenti al suo interno!!!
Poi, magari, visto che è collegato sullo stesso bus anche un GPS, l'arduino può richiedere e riceve i dati della posizione GPS...

Tutto questo collegato sugli stessi 2 fili!!!

Tecnicamente potrebbe essere gestito tutto interamente dal PC, senza ausilio dell'arduino!!! basterebbe collegare le espansioni I2C alla porta I2C della VGA e usare il PC per pilotare i 12 LCD e i 12 tastierini!!!
VGA monitor cable information

EDIT: Esistono anche i display LCD comandati da presa I2C...
I2C display

lol21 11 giugno 10 18:11

in parole povere io sul terminale mi troverei solo 2 (uno credo sia insufficiente) bus I2C e si connettono tutti all'arduino (o alla VGA) e l'arduino gestisce tutti i dati tramite sole 2 porte... la comodità è molta, avremmo un risparmio dal punto di vista economico altissimo e la parte più complicata si sposta sulla programmazione del solo arduino che deve però gestire 24 periferiche.

io con questo protocollo non ho mai lavorato, provo a buttare giù qualche riga di codice dai. :wink:

grazie a tutti

ciao
lol21

illez 11 giugno 10 18:26

L'I2C è piuttosto semplice, trovi esempi a bizzeffe.
Io a suo tempo avevo fatto qualcosa ma su pic.

BBC25185 11 giugno 10 18:47

Citazione:

Originalmente inviato da lol21 (Messaggio 2104228)
in parole povere io sul terminale mi troverei solo 2 (uno credo sia insufficiente) bus I2C e si connettono tutti all'arduino (o alla VGA) e l'arduino gestisce tutti i dati tramite sole 2 porte... la comodità è molta, avremmo un risparmio dal punto di vista economico altissimo e la parte più complicata si sposta sulla programmazione del solo arduino che deve però gestire 24 periferiche.

io con questo protocollo non ho mai lavorato, provo a buttare giù qualche riga di codice dai. :wink:

grazie a tutti

ciao
lol21

Piccola spiegazione tecnica sul bus I2C...
Per il collegamento I2C servono minimo 3 fili: GND, SDA, SCL...
GND, ovvero la massa di riferimento
SCL, ovvero il clock generato dal master e serve a sicronizzare i trasferimenti dei dati
SDA, ovvero la linea dove viaggiano i dati!!!

Praticamente dall'arduino partono 3 fili (GND, ANALOG 5 e 4) che devono essere portati alti da una resistenza di PullUp!!!
l'unico limite di questa tecnologia è che la capacità della linea non superi i 100 pF!!!

Comunque sia, per la comunicazione I2C, generalmente si usa un sistema di questo tipo:
Il Master trasmette all'indirizzo xx (dove xx è un numero a 7 bit) il codice di quello che voglio!!!
Il slave ha ricevuto il comando e prepara per la prossima comunicazione I2C il dato che interessa al master
Il Master, questa volta, apre un canale di lettura dove lo Slave precedentemente interrogato, invia il dato!!!

In codice arduino, ecco qualche esempio:
Configurazione Arduino come master:

#include <Wire.h> //Libreria per utilizzare l'I2C
void setup() {
Wire.begin(); //Questo comando inizializza l'arduino come unità I2C Master
}

Configurazione Arduino come Slave:


#include <Wire.h> //Libreria per utilizzare l'I2C
void setup() {
Wire.begin(0x04); // Questo comando inizializza l'arduino come unità I2C Slave con indirizzo 0x04
Wire.onReceive(Evento); //Questa riga qua serve a creare un evento per cui, appena il Master prova a inviare un dato, lui esegue la SubRoutine "Evento"
}

Il master che invia alla periferica I2C 0x04 due byte:

void loop()
{
Wire.beginTransmission(0x04); //Apre il canale di trasmissione con 0X04
Wire.send(Byte1); //Invia il 1° Byte
Wire.send(Byte2); //Invia il 2° Byte
Wire.endTransmission(); //Chiude il canale di trasmissione
Delay (100);
}

Lo Slave che riceve i due Byte dal master:

void Evento(int howmany) //SubRoutine "Evento" Sopra citata
{
byte Byte1 = Wire.receive();//Riceve il primo Byte
byte Byte2 = Wire.receive();//Riceve il secondo Byte
}

Più semplice di così non si può!!!

lol21 11 giugno 10 20:55

ma se io usassi questo chip:
.: Robot Italy WebSite:. : Chip Multifunzione I2C [GPIO14] - 12,80EUR
come posso fare?

ciao
lol21

illez 11 giugno 10 23:46

a me quello sembra un pic preprogrammato....
ma te esattamente cosa vuoi fare?
Forse l'hai gia detto ma mi son perso :rolleyes:


Tutti gli orari sono GMT +2. Adesso sono le 22:34.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002