Arduino

I2C LCD scherm 2×16 karakters met Arduino Mega

Sunday, December 8, 2013
I2C LCD scherm 2×16 karakters met Arduino MegaLike0

Eerder schreef ik al dat het I2C LCD schermpje werkte met een Arduino Uno. Op dat moment had ik ‘m nog niet werkend met een Arduino Mega 2560. Dat is me nu wel gelukt.

Ik weet niet precies waarom hij de vorige keer raar deed, maar dezelfde sketch werkte nu op het moment dat ik 5v en GND had aangesloten, en pin 20 en 21 (SDA en SCL respectievelijk) van de Mega. Het enige probleem was dat er regelmatig rare tekens op het scherm verschenen die ik niet zag op de Uno. Ik dacht eerst misschien dat er een clock probleem was (verkeerde baud-rates geven ook rare tekens op je serial output), maar toen ik een andere sketch uitprobeerde werkte deze wel zoals het hoort (zie sketch hieronder).

Uno en Mega 2560: een verschil in troep
Ik dacht dat er bij het plaatsen van mijn eerste sketch (die van de Uno) op mijn blog iets verkeerd was gegaan met de opmaak en dat dat de reden was dat de Mega troep weergaf – maar toen ik onderstaande Mega sketch zojuist op mijn Uno uitprobeerde, toen gaf deze juist de troep. Kortom – de Uno sketch werkt goed op de Uno maar geeft troep op de Mega – terwijl onderstaande Mega sketch goed werkt op de Mega 2560 maar troep weergeeft op de Uno. Ik heb nog geen tijd gehad om uit te zoeken waarom precies, maar ik vind het erg frappant.

De code een aangepaste versie van deze sketch omdat de pinnen niet overeen kwamen:


/* YourDuino.com Example Software Sketch
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include
#include
#include // F Malpartida's NewLiquidCrystal library

/*-----( Declare Constants )-----*/
#define I2C_ADDR 0x20 // Define I2C Address for the PCF8574A

#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

#define LED_OFF 0
#define LED_ON 1

/*-----( Declare objects )-----*/
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup() /*----( SETUP: RUNS ONCE )----*/
{
lcd.begin (16,2);

// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home (); // go home

lcd.setCursor ( 0, 0 ); // go to the 1st line
lcd.print("Momentje... ");
lcd.setCursor ( 0, 1 ); // go to the 2nd line
lcd.print("Initialiseren... ");

}

void loop() /*----( LOOP: RUNS OVER AND OVER AGAIN )----*/
{

// Reset the display
lcd.clear();
delay(1000);
lcd.home();

// Print our characters on the LCD
lcd.backlight(); //Backlight ON if under program control
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0,1); //Start at character 0 on line 1
lcd.print("16 by 2 Display");
delay(8000);
} // END Loop

0

Leave a Reply

Your email address will not be published.

Follow @ Guerrilla Games
Instagram has returned invalid data.