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.
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.
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?
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?
/*
* 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.