Netherlands
Offline
Newbie
Karma: 0
Posts: 40
|
 |
« on: November 17, 2012, 04:03:49 pm » |
Hallo Allen, Ik probeer hem eens op het NL-Forum, Ik ben bezig met een I2c schakeling , wat nu werkt, De LCD gekoppeld aan een PCF8574A , Nu heb ik in ROW 1 een scrollende text , dit werkt goed. Maar wil een vaste text in ROW 2 , dit werkt dus niet , deze scrollt namelijk ook mee wat dus niet de bedoeling is. Dit is mijn setup:  En dit is mijn Sketch: /* Scroll * this sketch scrolls text left when tilted * text scrolls right when not tilted. */
#include <Wire.h> #include <LiquidCrystal_I2C.h>
// initialize the library with the numbers of the interface pins
const int numRows = 2; const int numCols = 16;
const char textString[] = " * ArduinoPat * "; const int textLen = sizeof(textString) -1; // the number of characters
LiquidCrystal_I2C lcd(0x38,16,2);
void setup() { lcd.init(); lcd.backlight(); // set up the LCD's number of columns and rows: lcd.print(textString); }
void loop() { { // here if tilted left so scroll text left for (int position = 0; position < textLen; position++) { lcd.scrollDisplayLeft(); delay(150); } } { // here if previously tilted but now flat, so scroll text right for (int position = 0; position < textLen; position++) { lcd.scrollDisplayRight(); delay(150); } } } Ik hoop dat iemand mij hiermee op weg kan helpen, Alvast bedankt, ArduinoPat
|
|
|
|
« Last Edit: December 16, 2012, 12:54:33 pm by ArduinoPat »
|
Logged
|
Patrick ,The Netherlands
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 90
Posts: 9401
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #1 on: November 17, 2012, 04:54:18 pm » |
simpelste manier is om zelf de geshifte tekst naar regel 1 te schrijven maak een array van char waar de tekst in staat ,
shift deze en schrijf hem geheel weg naar regel 1.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Hamme, Belgium
Offline
Sr. Member
Karma: 3
Posts: 383
|
 |
« Reply #2 on: November 22, 2012, 04:38:17 am » |
een andere oplossing is beide regels constant opnieuw te schrijven en bij de onderste de positie niet te veranderen. lcd.setCursor(0,0); // set first line on the LCD lcd.print( "scrollende tekst"); lcd.setCursor(0,1); // set second line on the LCD lcd.print( "vaste tekst"); besef wel goed, dat met je delay's om te scrollen, je niets anders kan gaan doen naast het tonen van tekst op je LCD scherm, zolang de tekst aan het scrollen is. kijk eens naar blink without delay.
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Newbie
Karma: 0
Posts: 40
|
 |
« Reply #3 on: December 01, 2012, 03:28:47 pm » |
Beste JO3RI, Dit gaat helaas niet op , beide teksten scrollen ook met deze code ?? Ik heb al van alles geprobeerd, maar ben er nog niet uit  /* Scroll * this sketch scrolls text left when tilted * text scrolls right when not tilted. */
#include <Wire.h> #include <LiquidCrystal_I2C.h>
// initialize the library with the numbers of the interface pins
const int numRows = 2; const int numCols = 16;
const char textString[] = " * ArduinoPat * "; const int textLen = sizeof(textString) -1; // the number of characters
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() { lcd.init(); lcd.backlight(); // set up the LCD's number of columns and rows: lcd.setCursor(0, 1); lcd.print(textString); lcd.setCursor(0, 0); lcd.print("Vaste Tekst"); }
void loop() { { // here if tilted left so scroll text left for (int position = 0; position < textLen; position++) { lcd.scrollDisplayLeft(); delay(150); } } { // here if previously tilted but now flat, so scroll text right for (int position = 0; position < textLen; position++) { lcd.scrollDisplayRight(); delay(150); } } } Misschien iemnand nog een optie ??
|
|
|
|
|
Logged
|
Patrick ,The Netherlands
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 90
Posts: 9401
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #4 on: December 01, 2012, 04:00:50 pm » |
vrijwel altijd zitten de 2 regels in een lineair/ sequentieel geheugen, en is de scroll geimplementeerd als schuiven in het geheugen. En dan schuift alles .. probeer dit eens. #include <Wire.h> #include <LiquidCrystal_I2C.h>
const int numRows = 2; const int numCols = 16;
const char textString[] = " * ArduinoPat * "; const int textLen = sizeof(textString) -1; // the number of characters
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Vaste Tekst"); }
void loop() { for (int position = 0; position < textLen; position++) { lcd.setCursor(0,1); // of moet dit zijn 1,0? lcd.print(textString[position]) delay(150); } for (int position = textLen; position >0; position--) { lcd.setCursor(0,1); lcd.print(textString[position]) delay(150); } }
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Newbie
Karma: 0
Posts: 40
|
 |
« Reply #5 on: December 01, 2012, 04:19:04 pm » |
Goedenavond Rob, Helaas gaat dit ook niet lukken  Nu laat die de vaste tekst staan op rij 1 , en zie ik in rij 2 nu in het eerste blok steeds 1 letter weergeven ( van mijn scrolltext ) Ik denk wat ik wil niet gaat lukken , #include <Wire.h> #include <LiquidCrystal_I2C.h>
const int numRows = 2; const int numCols = 16;
const char textString[] = " * ArduinoPat * "; const int textLen = sizeof(textString) -1; // the number of characters
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Vaste Tekst"); }
void loop() { for (int position = 0; position < textLen; position++) { lcd.setCursor(0,1); // of moet dit zijn 1,0? lcd.print(textString[position]); delay(150); } for (int position = textLen; position >0; position--) { lcd.setCursor(0,1); lcd.print(textString[position]); delay(150); } } Maar voor als nog hartelijk dank voor jou input !!
|
|
|
|
|
Logged
|
Patrick ,The Netherlands
|
|
|
|
Forum Moderator
Hamme, Belgium
Offline
Sr. Member
Karma: 3
Posts: 383
|
 |
« Reply #6 on: December 13, 2012, 05:11:10 am » |
ik bedoelde dat je de cursor positie kan wijzigen en dus niet gebruikt maakt van de scroll functie die in de library zit. for (int i = -16; i < 32; i++) { lcd.setCursor(i,0); // set first line on the LCD lcd.print( "scrollende tekst"); lcd.setCursor(0,1); // set second line on the LCD lcd.print( "vaste tekst"); delay (150); }
Een andere mogelijkheid is om inderdaad een buffer te gebruiken, maar dan heb je er wel 2 nodig: eentje voor lijn 1 en eentje voor lijn 2. Die moeten dan beiden 17 bytes groot zijn. Je kopieert dan telkens de tekst naar een andere plaats in de buffer en toont telkens bufffer1 op lijn 1 en buffer2 op lijn2.
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 90
Posts: 9401
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #7 on: December 13, 2012, 10:30:16 am » |
2e poging #include <Wire.h> #include <LiquidCrystal_I2C.h>
const int numRows = 2; const int numCols = 16;
const char textString[] = " * ArduinoPat * "; const int textLen = sizeof(textString) -1; // the number of characters
LiquidCrystal_I2C lcd(0x27, numCols, numRows );
void setup() { lcd.init(); lcd.backlight();
// vaste text lcd.setCursor(0,1); lcd.print("vaste text"); }
void loop() { // scroll text for (int position = 0; position < textLen; position++) { lcd.setCursor(0, 0); lcd.print(&textString[position]) // was het & (adress) vergeten delay(100); } for (int position = textLen; position >0; position--) { lcd.setCursor(0,0); lcd.print(&textString[position]); delay(100); } }
probeer eens
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Newbie
Karma: 0
Posts: 40
|
 |
« Reply #8 on: December 16, 2012, 12:52:40 pm » |
Hoi Rob, Helemaal super , dit blijkt te werken !!!  Many thanks , Sorry voor late reply , Fijne dagen toegewenst en een prettige jaarwisseling voor 2013 Groet, Patrick, ArduinoPat, Maarssen
|
|
|
|
|
Logged
|
Patrick ,The Netherlands
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 90
Posts: 9401
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #9 on: December 16, 2012, 02:06:03 pm » |
Goed om te horen dat het werkt, net op tijd om een automatische Arduino nieuwjaars afteller te maken  Zoeen met een timer die terugloopt, nog 255 uur... 254 uur ... nog 5 4 3 2 1 Happy Newyear "
|
|
|
|
|
Logged
|
|
|
|
|
|