Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 11 giugno 10, 19:11   #1 (permalink)  Top
User
 
L'avatar di lol21
 
Data registr.: 16-11-2008
Residenza: Riva del Garda - TN
Messaggi: 429
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.

grazie a tutti

ciao
lol21
lol21 non è collegato   Rispondi citando
Vecchio 11 giugno 10, 19:26   #2 (permalink)  Top
User
 
L'avatar di illez
 
Data registr.: 06-08-2007
Residenza: Empoli
Messaggi: 1.813
L'I2C è piuttosto semplice, trovi esempi a bizzeffe.
Io a suo tempo avevo fatto qualcosa ma su pic.
__________________
.......
illez non è collegato   Rispondi citando
Vecchio 11 giugno 10, 19:47   #3 (permalink)  Top
User
 
L'avatar di BBC25185
 
Data registr.: 19-01-2007
Residenza: Dintorni di mestre (DINTORNI)
Messaggi: 2.589
Citazione:
Originalmente inviato da lol21 Visualizza messaggio
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.

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ò!!!

Ultima modifica di BBC25185 : 11 giugno 10 alle ore 19:50
BBC25185 non è collegato   Rispondi citando
Vecchio 11 giugno 10, 21:55   #4 (permalink)  Top
User
 
L'avatar di lol21
 
Data registr.: 16-11-2008
Residenza: Riva del Garda - TN
Messaggi: 429
ma se io usassi questo chip:
.: Robot Italy WebSite:. : Chip Multifunzione I2C [GPIO14] - 12,80EUR
come posso fare?

ciao
lol21
lol21 non è collegato   Rispondi citando
Vecchio 12 giugno 10, 00:46   #5 (permalink)  Top
User
 
L'avatar di illez
 
Data registr.: 06-08-2007
Residenza: Empoli
Messaggi: 1.813
a me quello sembra un pic preprogrammato....
ma te esattamente cosa vuoi fare?
Forse l'hai gia detto ma mi son perso
__________________
.......
illez non è collegato   Rispondi citando
Vecchio 12 giugno 10, 10:19   #6 (permalink)  Top
User
 
L'avatar di lol21
 
Data registr.: 16-11-2008
Residenza: Riva del Garda - TN
Messaggi: 429
allora, quello che devo fare è una serie di 12 terminali.
ogni terminale avrà 6 pulsanti.
quando si accende il terminale io devo vedere sul display (per ora 16x2 ma credo che passeremo alle 4 righe) una lista di 4 nomi che posso selezionare premendo i tasti "su" e "giù".
una volta selezionato premo il tasto "enter" e mi compare il dipslay con un numero progressivo (numero della volee) che aumenta quando dal pc richiamo i dati, e 3 "0". quando col tastierino destra e sinistra scelgo lo 0 questo si seleziona e ho la possibilità di aumentarne il valore col tsto su o diminuirlo col tasto giù. alla fine si visualizzerà anche il totale.
una volta completato devo poter premere il tasto menu e tornare alla schermata iniziale di selezione e poter effettuare la selezione, appunto, di un altro nome, se scelgo un nome già segnato devo poter ovviamente modificare i dati ma tenere memorizzati quelli vecchi, insomma non è che se rientro sulla stessa persona mi fa un reset dei punti.

... gli archeri tornano a tirare ....

io dal mio bel netbook o notebook schiaccio un pulsantino sullo schermo che interroga ogni terminale e salva nel computer i dati, li poi gestisto io l'interfaccia con il programma della fitarco
io pensavo di mettere su ogni palmare un arduino per la comodità, non pensavo a usarlo come master i2c. però se usassi il protocollo i2c ho visto che in molti chip posso collegarne solo 8 su una linea

quindi presupponendo di doverne mettere 2 per ogni palmare per 12 palmari avrei bisogno di 6 porte sull'arduino.

giusto? e dovrei poi dire che la porta 0 e 1 controlla il palmari da 1 a 4, la 2 e 3 da 5 a 8, le 4 e 5 da 9 a 12. it's right?

grazie a tutti intanto

ciao
lol21
lol21 non è collegato   Rispondi citando
Vecchio 12 giugno 10, 11:06   #7 (permalink)  Top
User
 
L'avatar di illez
 
Data registr.: 06-08-2007
Residenza: Empoli
Messaggi: 1.813
Vediamo se ho capito, sono un po' rinco, mi son svegliato ora : riassumendo ai minimi termini, devi leggere da 12 terminali il valore di 6 pulsanti e poi elaborarli.
Giusto?
Se è così, io userei su ogni terminale (il bersaglio? eri tu che tempo fa parlava di qualche programma per arceri o sbaglio?) un pcf8574. E basta.
Lo imposti con 6 porte come input e te ne avanzano 2 per farci quello che vuoi, come ingresso o uscita. Lo leggi via i2c, che è molto semplice.

Il master può essere l'arduino con il display e tutta la logica.
__________________
.......
illez non è collegato   Rispondi citando
Vecchio 12 giugno 10, 13:28   #8 (permalink)  Top
User
 
L'avatar di lol21
 
Data registr.: 16-11-2008
Residenza: Riva del Garda - TN
Messaggi: 429
esattamente, ma allo stesso tempo su ogni terminale ci deve essere un display

ciao
lol21
lol21 non è collegato   Rispondi citando
Vecchio 12 giugno 10, 19:00   #9 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da lol21 Visualizza messaggio
allora, quello che devo fare è una serie di 12 terminali...
Non hai detto qual'è la distanza tra il PC e i terminali...

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 13 giugno 10, 15:19   #10 (permalink)  Top
User
 
L'avatar di BBC25185
 
Data registr.: 19-01-2007
Residenza: Dintorni di mestre (DINTORNI)
Messaggi: 2.589
Citazione:
Originalmente inviato da MSchiepp Visualizza messaggio
Non hai detto qual'è la distanza tra il PC e i terminali...

Michele
Ricordo che l'unico limite del protocollo I2C è la capacità della linea che, mi pare, non deve essere superiore ai 100pF!!!

Per il resto, come ho già detto, bastano 4 fili per collegare tutti e 12 i terminali...
Basta collegarli in parallelo e fare una adeguata programmazzione dell'arduino Master che, praticamente, deve gestire tutto!!!
BBC25185 non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
Ho conosciuto il Campione del Mondo di Fritto Harryflex Elimodellismo in Generale 10 13 ottobre 09 20:01
ho conosciuto un MODELLISTA.... losisi Aeromodellismo Progettazione e Costruzione 18 26 febbraio 08 15:00



Tutti gli orari sono GMT +2. Adesso sono le 17:36.


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