How do i scroll text faster on 16x2 lcd?

Here i'm trying to make a Home security system,but i want my screen to scroll text faster than it is.

:stuck_out_tongue:

Here take a look at my code:

#include <SPI.h>
#include <MFRC522.h>

#include <LiquidCrystal.h>
 
#define SS_PIN 53 //define RFID pins
#define RST_PIN 6 //define RFID pins
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED
#define BUZZER 2//buzzer pin
#define RELAY 7 //Relay pin
#define blight 10 //Backlight pin
#define presistor A8 //Photoresisitor pin
#define button 10 //button pin
#define sbutton 2 // 2nd button pin
#define gled 30
#define rled 31
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
LiquidCrystal lcd(12, 11, 38, 39, 40, 41); //define lcd pins
int value;
int buttonState = 0;
int val;
 
void setup() 
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(BUZZER, OUTPUT);//setup that shit
  pinMode(RELAY, OUTPUT);
  pinMode(button, INPUT);
  pinMode(sbutton, INPUT);
  pinMode(gled, OUTPUT);
  pinMode(rled, OUTPUT);
  noTone(BUZZER);
  Serial.println("Put your card to the reader...");
  Serial.println();
  lcd.begin(16, 2);
  lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski");
}
  
void loop() {

   val = digitalRead(button);  // read input value
  if (val == HIGH) {         // check if the input is HIGH (button released)
    noTone(BUZZER);  // turn LED OFF
    digitalWrite(rled, HIGH);
    digitalWrite(gled, LOW);
  } else {
    
    tone(BUZZER, 300);  // turn LED ON 
    digitalWrite(gled, HIGH);
    digitalWrite(rled, LOW);
  }

val = digitalRead(button);  // read input value
  if (val == HIGH) {         // check if the input is HIGH (button released)
    digitalWrite(RELAY , LOW);  // turn LED OFF
   
  } else {
    digitalWrite(RELAY, HIGH);  // turn LED ON
   
    
    lcd.clear();
    lcd.print("   Vratata e");
    lcd.setCursor(0,1);
    lcd.print("   otklucena");
    delay(4000);
    digitalWrite(RELAY, LOW);
    lcd.clear();
     lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski");
    
  }
  
   val = digitalRead(RELAY);  // read input value
  if (val == HIGH) {         // check if the input is HIGH (button released)
    digitalWrite(rled , HIGH);  // turn LED OFF
    digitalWrite(gled, LOW);
  } else {
    digitalWrite(gled, HIGH);
    digitalWrite(rled, LOW);   
    
  }
 
  
  
  
  if (value > 400) {
    delay(2000);
    digitalWrite(blight, LOW);
  }
    else {
      delay(2000);
    digitalWrite(blight, HIGH);
  }

  
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();

if (content.substring(1) == "A2 EF 39 D8") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
   
    delay(500);
    digitalWrite(LED_G, HIGH);
    digitalWrite(rled, HIGH);
    digitalWrite(RELAY, HIGH);
    digitalWrite(gled, LOW);
    tone(BUZZER, 500);
    delay(300);
    tone(BUZZER, 1000);
    delay(1000);
    noTone(BUZZER);
    lcd.clear();
    lcd.print("   Dobredojde");
    lcd.setCursor(0, 1);
    lcd.print("   Mama Lena");
    delay(5000);
    digitalWrite(LED_G, LOW);
    digitalWrite(RELAY, LOW);
    lcd.clear();
    lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski");
  }




  
 else if (content.substring(1) == "19 EE FB 28") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
   
    delay(500);
    digitalWrite(LED_G, HIGH);
    digitalWrite(RELAY, HIGH);
    digitalWrite(rled, HIGH);
    digitalWrite(gled, LOW);
    tone(BUZZER, 1000);
    delay(1000);
    noTone(BUZZER);
    lcd.clear();
    lcd.print("   Dobredojde");
    lcd.setCursor(0, 1);
    lcd.print("   Tato Zika");
    delay(5000);
    digitalWrite(LED_G, LOW);
    digitalWrite(RELAY, LOW);
    lcd.clear();
    lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski"); 
  }
  
 
else  {
    Serial.println(" Access denied");
    digitalWrite(LED_R, HIGH);
    tone(BUZZER, 500);
    delay(300);
    tone(BUZZER, 100);
    lcd.clear();
    lcd.print("Nepoznata karta");
    delay(1000);
    digitalWrite(LED_R, LOW);
    noTone(BUZZER);
    lcd.clear();
    lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski");
  }




  
}

Sorry here is my updated code,still dont know how tho. :frowning:

#include <SPI.h>
#include <MFRC522.h>

#include <LiquidCrystal.h>
 
#define SS_PIN 53 //define RFID pins
#define RST_PIN 6 //define RFID pins
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED
#define BUZZER 2//buzzer pin
#define RELAY 7 //Relay pin
#define blight 10 //Backlight pin
#define presistor A8 //Photoresisitor pin
#define button 10 //button pin
#define sbutton 2 // 2nd button pin
#define gled 30
#define rled 31
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
LiquidCrystal lcd(12, 11, 38, 39, 40, 41); //define lcd pins
int value;
int buttonState = 0;
int val;
 
void setup() 
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(BUZZER, OUTPUT);//setup that shit
  pinMode(RELAY, OUTPUT);
  pinMode(button, INPUT);
  pinMode(sbutton, INPUT);
  pinMode(gled, OUTPUT);
  pinMode(rled, OUTPUT);
  noTone(BUZZER);
  Serial.println("Put your card to the reader...");
  Serial.println();
  lcd.begin(16, 2);
  lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski");
}
  
void loop() {
 for (int positionCounter = 0; positionCounter < 29; positionCounter++)  {  
    lcd.scrollDisplayRight();    
 }
   val = digitalRead(button);  // read input value
  if (val == HIGH) {         // check if the input is HIGH (button released)
    noTone(BUZZER);  // turn LED OFF
    digitalWrite(rled, HIGH);
    digitalWrite(gled, LOW);
  } else {
    
    tone(BUZZER, 300);  // turn LED ON 
    digitalWrite(gled, HIGH);
    digitalWrite(rled, LOW);
  }

val = digitalRead(button);  // read input value
  if (val == HIGH) {         // check if the input is HIGH (button released)
    digitalWrite(RELAY , LOW);  // turn LED OFF
   
  } else {
    digitalWrite(RELAY, HIGH);  // turn LED ON
   
    
    lcd.clear();
    lcd.print("   Vratata e");
    lcd.setCursor(0,1);
    lcd.print("   otklucena");
    delay(4000);
    digitalWrite(RELAY, LOW);
    lcd.clear();
     lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski");
    
  }
  
   val = digitalRead(RELAY);  // read input value
  if (val == HIGH) {         // check if the input is HIGH (button released)
    digitalWrite(rled , HIGH);  // turn LED OFF
    digitalWrite(gled, LOW);
  } else {
    digitalWrite(gled, HIGH);
    digitalWrite(rled, LOW);   
    
  }
 
  
  
  
  if (value > 400) {
    delay(2000);
    digitalWrite(blight, LOW);
  }
    else {
      delay(2000);
    digitalWrite(blight, HIGH);
  }

  
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();

if (content.substring(1) == "A2 EF 39 D8") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
   
    delay(500);
    digitalWrite(LED_G, HIGH);
    digitalWrite(rled, HIGH);
    digitalWrite(RELAY, HIGH);
    digitalWrite(gled, LOW);
    tone(BUZZER, 500);
    delay(300);
    tone(BUZZER, 1000);
    delay(1000);
    noTone(BUZZER);
    lcd.clear();
    lcd.print("   Dobredojde");
    lcd.setCursor(0, 1);
    lcd.print("   Mama Lena");
    delay(5000);
    digitalWrite(LED_G, LOW);
    digitalWrite(RELAY, LOW);
    lcd.clear();
    lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski");
  }




  
 else if (content.substring(1) == "19 EE FB 28") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
   
    delay(500);
    digitalWrite(LED_G, HIGH);
    digitalWrite(RELAY, HIGH);
    digitalWrite(rled, HIGH);
    digitalWrite(gled, LOW);
    tone(BUZZER, 1000);
    delay(1000);
    noTone(BUZZER);
    lcd.clear();
    lcd.print("   Dobredojde");
    lcd.setCursor(0, 1);
    lcd.print("   Tato Zika");
    delay(5000);
    digitalWrite(LED_G, LOW);
    digitalWrite(RELAY, LOW);
    lcd.clear();
    lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski"); 
  }
  
 
else  {
    Serial.println(" Access denied");
    digitalWrite(LED_R, HIGH);
    tone(BUZZER, 500);
    delay(300);
    tone(BUZZER, 100);
    lcd.clear();
    lcd.print("Nepoznata karta");
    delay(1000);
    digitalWrite(LED_R, LOW);
    noTone(BUZZER);
    lcd.clear();
    lcd.print("    Familija");
    lcd.setCursor(0,1);
    lcd.print("    Kosteski");
  }




  
}
void loop() {
 for (int positionCounter = 0; positionCounter < 29; positionCounter++)  {  
    lcd.scrollDisplayRight(); 
delay(100);   
 }

try using a delay of say 100 ms .

GautamD:

void loop() {

for (int positionCounter = 0; positionCounter < 29; positionCounter++)  { 
    lcd.scrollDisplayRight();
delay(100); 
}




try using a delay of say 100 ms .

Instead of a delay of 100ms?

AWOL:
Instead of a delay of 100ms?

sorry. You could use the millis() function.

GautamD:
sorry. You could use the millis() function.

Or you could use a shorter delay, if you're not bothered about the wasted processor cycles.

Since you wrote all that code, not sure why 'you' cannot speed up the scrolling.

AWOL:
Or you could use a shorter delay, if you're not bothered about the wasted processor cycles.

Will using a shorter delay waste lesser process cycles @ AWOL?

How many processor cycles are wasted here?
delay(4,294,967,295);

The delay worked.Thanks guys! :slight_smile:

GautamD:
Will using a shorter delay waste lesser process cycles @ AWOL?

Pro rata, any delay wastes the same amount of processor cycles (ignoring end-effects for very short delays)
Using millis (aka "blink without delay" or cooperative multitasking) allows you to use those cycles for other things, whilst waiting for a timeout, but requires a complete rewrite.