Quote:
Originally Posted by Barreled
What parts of your code would I have to modify so it works with an Arduino Uno and the DFRobot DFR0009 LCD Shield? I can't post links yet but if you google the shield it brings you to a page with the pin allocation and some sample code using the LiquidCrystal library.
I played around with the code for awhile but couldn't make much progress. The two changes I tried were to add this code around line 7000:
Code:
const uint8_t lcdRegisterSelect = (1 << PORTB0); // on PORTB, 8
const uint8_t lcdEnable = (1 << PORTB1); // on PORTB, 9
const uint8_t lcdBit3 = (1 << PORTD7); // on PORTD, 7
const uint8_t lcdBit2 = (1 << PORTD6); // on PORTD, 6
const uint8_t lcdBit1 = (1 << PORTD5); // on PORTD, 5
const uint8_t lcdBit0 = (1 << PORTD4); // on PORTD, 4
const uint8_t lcdBrightness = (1 << DDB2); // on PORTB, 10
const uint8_t lcdContrast = (1 << DDD1); // on PORTD, 1
And this code around line 7139:
Code:
// set direction to output LCD data on selected port B pins
DDRB |= (lcdEnable | lcdRegisterSelect | lcdBrightness);
// set direction to output LCD data on selected port D pins
DDRD |= (lcdBit3 | lcdBit2 | lcdBit1 | lcdBit0 | lcdContrast);
I wasn't able to get the LCD to give me anything intelligible. Does it look like I'm on the right track or this a much more difficult change than I expected it to be? I was thinking it should be pretty simple to change the LCD input pins, but all my coding experience has been high-level and this port registry stuff is new to me.
|
The port registry stuff is a lot of what allows MPGuino to conserve as much program space as it does. This DFR0009 board has a rather interesting setup, as it seems they actually used rational thought to assign the pinout to the LCD module, and they're actually using an analog mux circuit to encode the 5 buttons. I will look over the DFR0009 schematics and come out with a version that should work for you, in the next few days.