View Single Post
Old 01-27-2018, 11:46 PM   #153 (permalink)
t vago
MPGuino Supporter
 
t vago's Avatar
 
Join Date: Oct 2010
Location: Hungary
Posts: 1,808

iNXS - '10 Opel Zafira 111 Anniversary

Suzi - '02 Suzuki Swift GL
Thanks: 831
Thanked 709 Times in 457 Posts
Quote:
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:

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.
  Reply With Quote