Go Down

Topic: No output using DFRobot Arduino LCD shield (Read 2033 times) previous topic - next topic

zolofy

Feb 20, 2011, 03:28 pm Last Edit: Feb 20, 2011, 03:32 pm by zolofy Reason: 1
I've got some problem here when I combined my microcontroller which is Arduino Duemilanove 328 and my Arduino LCD Shield, here all the product specification, result and my source code.

Product Specification







More about product specification

Code: [Select]
http://www.robotshop.com/dfrobot-lcd-keypad-shield-arduino-3.html

My Result



Code: [Select]

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {

lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("hello, world!");
}

void loop()
{}


Is there any mistake that I've been made?

floresta

#1
Feb 20, 2011, 10:55 pm Last Edit: Feb 20, 2011, 10:58 pm by floresta Reason: 1
Quote
Is there any mistake that I've been made?

You don't need the lcd.setCursor(0,0); statement, but it won't hurt either.

Your LCD controller is not being initialized properly, hence the row of blocks on the top line of the display.  This would happen if your LiquidCrystal lcd() statement was incorrect but yours is correct for the 'Pin Allocation' information that you posted.  This would also happen if the R/W line were not dealt with properly.

When I Googled 'dfrobot lcd shield' I found the source of your information on the fourth Google hit.  The first two hits I got are different and are the same as the link that you posted, each mentioned that pin 10 is also used so I thought that this could be how the R/W pin is implemented.  Their wiring diagram, which they mistakenly call a schematic, shows R/W grounded so there is a discrepancy here which has to be checked out.

I would start by checking the solder connections between the LCD board and the shield.  


Don

zolofy

I've already checked it twice plus I've checked with another same LCD shield which is the result also doesn't change at all.

liudr

Is your arduino working? Have you tested it with blink?

zolofy

Yes it is working, I've already done several program using my Arduino Microcontroller.

RogerW

#5
Feb 22, 2011, 01:46 am Last Edit: Feb 22, 2011, 07:03 am by RogerW Reason: 1
Try this code.  It works on my lcd shield. Make sure you have
the LiquidCrystal.h    library loaded.  I did not see it on your
sample code.  I am using an Arduino Uno.  don't know  if that
is operationally different from your processor.



RWW
Code: [Select]
//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons
Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
adc_key_in = analogRead(0);      // read the value from the sensor
// my buttons when read are centered at these valies: 0, 144, 329, 504, 741
// we add approx 50 to those values and check to see if we are close
if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
if (adc_key_in < 50)   return btnRIGHT;  
if (adc_key_in < 195)  return btnUP;
if (adc_key_in < 380)  return btnDOWN;
if (adc_key_in < 555)  return btnLEFT;
if (adc_key_in < 790)  return btnSELECT;  
return btnNONE;  // when all others fail, return this...
}

void setup()
{
lcd.begin(16, 2);              // start the library
lcd.setCursor(0,0);
lcd.print("Push the buttons"); // print a simple message
}
 
void loop()
{
lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
lcd.print(millis()/1000);      // display seconds elapsed since power-up


lcd.setCursor(0,1);            // move to the begining of the second line
lcd_key = read_LCD_buttons();  // read the buttons

switch (lcd_key)               // depending on which button was pushed, we perform an action
{
  case btnRIGHT:
    {
    lcd.print(" RIGHT");
    break;
    }
  case btnLEFT:
    {
    lcd.print("  LEFT");
    break;
    }
  case btnUP:
    {
    lcd.print("    UP");
    break;
    }
  case btnDOWN:
    {
    lcd.print("  DOWN");
    break;
    }
  case btnSELECT:
    {
    lcd.print("SELECT");
    break;
    }
    case btnNONE:
    {
    lcd.print("  NONE");
    break;
    }
}

}



zolofy

OK problem solved, my ATMega 328 IC got some problem.

liudr


OK problem solved, my ATMega 328 IC got some problem.


Well, you said your arduino was working? A slight change of story, ah?

So how did you figure out the 328 was not working, just for the sake of all that tuned in to your problem?

Go Up