View Single Post
Old 01-27-2018, 10:46 PM   #153 (permalink)
t vago
MPGuino Supporter
t vago's Avatar
Join Date: Oct 2010
Location: Cedar Rapids, IA
Posts: 1,766

The Karen-Mobile - '05 Dodge Magnum SXT
Team Dodge
90 day: 26.72 mpg (US)

Fiat Dakota - '00 Dodge Dakota SLT RWD Quad Cab
90 day: 16.67 mpg (US)

The Red Sled - '01 Dodge Durango SLT 4WD
90 day: 16.96 mpg (US)
Thanks: 799
Thanked 681 Times in 437 Posts
Originally Posted by Barreled View Post
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:

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:

// 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.
The Fiat Dakota

The Karen-mobile

The Red Sled
  Reply With Quote