Offline
Newbie
Karma: 0
Posts: 25
|
 |
« Reply #6 on: March 06, 2012, 05:57:00 pm » |
Hallo Uwe, danke Dir für die Hilfe.
Also, ich glaube das mit dem Schieberegister oder dem I2C Expander wird etwas aufwändiger nehme ich an?
Was ich mir jetzt noch überlegt habe ist, dass ich die 5 Analogeingänge die mein GLCD verbraucht ja auf den Mux legen könnte. So hätte ich 5 weitere Ausgänge ja frei, da die Analog-INs ja auch als Ausgang zu setzen sind.
Momentan ist meine Belegung wie Belegung1
Wenn ich die Analogpins des GLCD auf den Muxer lege, dann wäre es wie Belegung2
Kanal - Belegung1 - Belegung2 ----------------------------------------- A0 = MUX MUX A1 = GLCD - frei - A2 = GLCD - frei - A3 = GLCD - frei - A4 = GLCD - frei - A5 = GLCD - frei -
0 = MUX MUX 1 = MUX MUX 2 = - frei - -frei- 3 = - frei - -frei- 4 = GLCD GLCD 5 = GLCD ... 6 = GLCD 7 = GLCD 8 = GLCD 10= GLCD 11= GLCD 12= MUX 13= MUX
MUX1 = - frei - GLCD MUX2 = - frei - GLCD MUX3 = - frei - GLCD MUX4 = - frei - GLCD MUX5 = - frei - GLCD MUX6 = - frei - -frei- MUX7 = - frei - -frei- MUX8 = - frei - -frei- .....
Die Frage ist jetzt nur, wie sag ich der GLCD Library, das ich die Analog-Pins auf den Muxer lege. In der Config sieht das ja so aus:
/*********************************************************/ /* Configuration for assigning LCD bits to Arduino Pins */ /*********************************************************/ /* 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
#if NBR_CHIP_SELECT_PINS > 2 #define glcdCSEL3 3 // third chip select if needed #endif
#if NBR_CHIP_SELECT_PINS > 3 #define glcdCSEL4 2 // fourth chip select if needed #endif
#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
#endif //GLCD_PIN_CONFIG_H
Die Pins wären somit 14, 15, 16, 17, 18... diese müsste ich mit dem Muxer verknüpfen. Analoge Spannungen lese ich mit dem Muxer über folgendes Skript ein:
/* Ultra-Shield-BASIC2 */
int s0 = 0; // MUX-Kontroll-Pin s0 RX int s1 = 1; // MUX-Kontroll-Pin s1 TX int s2 = 12; // MUX-Kontroll-Pin s2 int s3 = 13; // MUX-Kontroll-Pin s3 int SIG_pin = 5; //MUX-Eingangs-Pin
#include <glcd.h> #include <fonts/allFonts.h>
//---------------------------------------------------------------------------------
void setup() { pinMode(s0, OUTPUT); // Pin 2 digital als Ausgang pinMode(s1, OUTPUT); // Pin 3 digital als Ausgang pinMode(s2, OUTPUT); // Pin 12 digital als Ausgang pinMode(s3, OUTPUT); // Pin 13 digital als Ausgang
// alle Kontroll-Pins auf 0 = Kanal 0 digitalWrite(s0, LOW); digitalWrite(s1, LOW); digitalWrite(s2, LOW); digitalWrite(s3, LOW); GLCD.Init(); GLCD.SelectFont(System5x7); }
//-----------------------------------------------------------------------------------
void loop() { int LeseMux(0) // lies Kanal Nr. 0 am Muxer }
//-----------------------------------------------------------------------------------------
// Funktion LeseMux
int LeseMux(int kanal) { int kontrollPin[] = {s0, s1, s2, s3}; // Array fuer Kontroll-Pins
int muxKanal[16][4]= // Array fuer Kanaele { {0,0,0,0}, //Kanal 0 {1,0,0,0}, //Kanal 1 {0,1,0,0}, //Kanal 2 {1,1,0,0}, //Kanal 3 {0,0,1,0}, //Kanal 4 {1,0,1,0}, //Kanal 5 {0,1,1,0}, //Kanal 6 {1,1,1,0}, //Kanal 7 {0,0,0,1}, //Kanal 8 {1,0,0,1}, //Kanal 9 {0,1,0,1}, //Kanal 10 {1,1,0,1}, //Kanal 11 {0,0,1,1}, //Kanal 12 {1,0,1,1}, //Kanal 13 {0,1,1,1}, //Kanal 14 {1,1,1,1} //Kanal 15 };
// durchlaufe die 4 s for(int zaehler = 0; zaehler < 4; zaehler ++) { digitalWrite(kontrollPin[zaehler], muxKanal[kanal][zaehler]); }
int wert = analogRead(SIG_pin); // lese Wert SIG-Pin //return the value return wert; }
Wer kann mir nun dabei helfen?
mfg moe
|