Duemilanove + GLCD + Ethernet shield

Salve

Da qualche giorno stavo lavorando su un piccolo progetto, una specie di rss reader.
Ho fatto la stupidata di lavorare prima sulla parte del codice che riguardava il display e poi quella che riguardava internet.
Quando ho unito i due sketch (parte display + parte ethernet) mi sono accorto che il mio GLCD (ks0107) usa alcuni piedini in comune con lo shield ethernet...
Infatti il codice unito mi da output strani... il display si vede male e l'ethernet shield non fa quello che deve fare.

Credo che il fatto che i due hardware usino pin comuni mi ha incasinato un bel pò la vita.

Conoscete worckaround?

Ho il seguente hardware: duemilano, ks0107 e ethernet shield

In realtà avrei anche un arduino pro, avevo pensato di fare il wiring del glcd sul pro, l'ethernet shield sul duemilanove e far comunicare i due arduino via seriale...

Dipende a quali pin ti riferisci (che non dici) la ethernet usa il 10 per la selezione SPI, se è questo puoi sempre spostare il pin e assegnarne un altro alla ethernet modificando l'hardware piegando il reoforo verso l'esterno con un filo saldato che va ad un altra porta, poi una modifica software. Oppure sposta quelli del display, quali sono i pin in comune?

Secondo gli schemi qui riportati (Arduino Playground - GLCDks0108) dovresti avere liberi il pin 3 e il pin A5. Sostituisci il pin 10 e 11 con quei due.
Dovrai, naturalmente, modificare i #define di assegnamento dei pin.

Altrimenti puoi sempre convertire LCD da parallelo a SPI --> GHI Electronics – Where Hardware Meets Software

PaoloP:
Secondo gli schemi qui riportati (http://www.arduino.cc/playground/Code/GLCDks0108/) dovresti avere liberi il pin 3 e il pin A5. Sostituisci il pin 10 e 11 con quei due.
Dovrai, naturalmente, modificare i #define di assegnamento dei pin.

Altrimenti puoi sempre convertire LCD da parallelo a SPI --> GHI Electronics – Where Hardware Meets Software

Grazie PaoloP

Avevo pensato anche io a rendere il display seriale, ma la conversione hardware avrebbe implicato la soppressione di parecchie funzioni grafiche rendendo il display solo di tipo testo.

Quindi bisognerebbe modificare un pò la libreria del glcd?
Quando si tratta di modificare librerie vado sempre nel pallone.... ora mi cimento...

pablos:
Oppure sposta quelli del display, quali sono i pin in comune?

Facciamo la domanda al contrario: quali sono i pin usati effettivamente dalla ethernet shield?

Trisonic:

pablos:
Oppure sposta quelli del display, quali sono i pin in comune?

Facciamo la domanda al contrario: quali sono i pin usati effettivamente dalla ethernet shield?

Le ethernet shield, ufficiale o compatibili, usano il bus SPI che è mappato sui pin 11, 12 e 13 di Arduino. In più per utilizzare la shield server il pin 10 che ha funzione di abilitare o disabilitare l'ethernet. Se c'è anche l'SD a bordo servirebbe anche il pin 4 ma se non occorre puoi fare a meno.
In base alla scheda, il collegamento tra shield e Arduino avviene tramite il connettore ICSP che presenta gli stessi pin sopra elencati o tramite i pin stessi.
L'ufficiale si collega tramite ICSP, ma i pin 10, 11, 12 e 13, non sono comunque utilizzabili per altri scopi perché presentano gli stessi segnali.

Comunque le modifiche da fare non credo siano cosi pesanti.
Quale libreria stai usando? link?

PaoloP:
Comunque le modifiche da fare non credo siano cosi pesanti.
Quale libreria stai usando? link?

Speriamo.
Uso la libreria glcd v3, e se non erro anche qui si usa il bus spi.
Ti linko la libreria, così se viene modificata ad hoc, potrebbe servire a qualcun'altro: Google Code Archive - Long-term storage for Google Code Project Hosting.

Ok. Ci sono 2 file da modificare.

in glcd/glcd_Config.h

/*
  * autoconfig includes - (comment this out if using manual configurations, see below)
 */
#include "config/ks0108_Panel.h"          // automatically configure library for a ks0108 panel
//#include "config/ks0108-192x64_Panel.h"   // automatically configure library for a ks0108 192x64 panel

/*
 * If you want to explicitly select a manual configuration, you can edit the desired manual configuration
 * to fill in or modify the configuration information to meet your needs.
 * You can also use these files as a template to make customized copies to hold specific configurations.
 *
 * Remember that to activate your manual configuration you uncomment the #include for the desired file
 * and make sure that all the other config  #includes are commented (including the autoconfig above) 
 */

//#include "config/ks0108_Manual_Config.h"       // generic ks0108 configuration

//#include "config/Modadm12864f_Manual_Config.h" // configuration for BGMicro 128x64 display with pinout diagram
//#include "config/Modvk5121_Manual_Config.h"    // configuration for vk5121 122x32 display with pinout diagram
//#include "config/Modmt12232d_Manual_Config.h" // configuration for Russian mt12232 display with pinout diagram

devi commentare #include "config/ks0108_Panel.h" e togliere il commento da //#include "config/ks0108_Manual_Config.h"

in glcd/config/ks0108_Manual_Config.h

/* Data pin definitions
 */
#define glcdData0Pin        8
#define glcdData1Pin        9
#define glcdData2Pin        10
#define glcdData3Pin        11
#define glcdData4Pin        4
#define glcdData5Pin        5
#define glcdData6Pin        6
#define glcdData7Pin        7

/* Arduino pins used for Commands
 * default assignment uses the first five analog pins
 */
#define glcdCSEL1        14
#define glcdCSEL2        15
// uncomment the following if more than two chip select pins are needed
//#define glcdCSEL3        3   // third chip select line on pin 3 if needed
//#define glcdCSEL4        2   // fourth chip select if needed

#define glcdRW            16
#define glcdDI            17
#define glcdEN            18
// Reset Bit  - uncomment the next line if reset is connected to an output pin
//#define glcdRES            19    // Reset Bit

devi modificare i pin in base agli spostamenti dei collegamenti che stai effettuando.
Ad esempio puoi mettere 3 al posto di 11 e andare a collegare il cavetto che arriva adesso al pin 11 al pin 3.
Stessa cosa per il pin 10 con A5 (dovrai scrivere 19), spostando quindi il collegamento dal pin 10 al pin A5.

PaoloP:
devi modificare i pin in base agli spostamenti dei collegamenti che stai effettuando.
Ad esempio puoi mettere 3 al posto di 11 e andare a collegare il cavetto che arriva adesso al pin 11 al pin 3.
Stessa cosa per il pin 10 con A5 (dovrai scrivere 19), spostando quindi il collegamento dal pin 10 al pin A5.

Sei arrivato un attimo prima di me!

Oggi vedo bene cosa mi lascia l'ethernet shield e cosa posso dare al glcd.

Vi aggiorno.

Ok, ora i due hardware convivono pacificamente.

Ho fatto queste modifiche sul wiring:

10 -> 2
11 -> 3

E ho cambiato i define come descritto sopra...

Perfect! XD

Bene.
Non avevo notato che anche il pin 2 era libero. :wink: