LCD scrolling down problem I have a list of set-ups and I only have 2 rows in the lcd , I'm trying to scroll down for the moment and I'm doing this by changing the row in the setcursor function to either 0 or 1.

However since that I'll be having about 10 set-ups I used an equation that will change the rows to 0 and one for the ones I want to display and a negative number for those that I don't want to appear.
The problem is when setting the cursor's row to -1 or 2, it will ignore the one with row one (which is the 2nd row).

Is there a way that I can overcome this problem ? by setting it to a row that will not appear on my LCD?
I'm using #include &lt;LiquidCrystal.h&gt;
and I already set lcd.begin(16, 2);

int  colom[5] = {
    0-goDown,1-goDown,2-goDown,3-goDown,4-goDown  };
for (int i = 0; i &lt; 4; i++) {
    if (colom[i] &gt; 1) colom[i] = -1;
}

  lcd.setCursor(0, colom[0]);
  lcd.print("choise 1 ");
  lcd.setCursor(0, colom[1]);
  lcd.print("choise 2 ");
  lcd.setCursor(0, colom[2]);
  lcd.print("choise 3 ");
  lcd.setCursor(0, colom[3]);
  lcd.print("choise 4 ");
  lcd.setCursor(0, colom[4]);
  lcd.print("choise 5 ");


So here goDown is 0 so choice 1 and 2 should appear, but I'm only getting choice 1 and in the second row it's changing quickly between 2 and 5, it's not constant.

I thought about doing an if condition for each choice but that will be a lot of code to write and it won't be efficient for my application.
This is a bad strategy in general. You should not be issuing print calls for things you don't want to print and relying on the lcd library to filter for you because they're out of bounds.

Call print for only the choices you want to display.

char* menu[] = {
    "choice 1",
    "choice 2",
    "choice 3",
    "choice 4",
    "choice 5",
};
const int numMenuItems = sizeof menu / sizeof *menu;
const int numLcdRows = 2;


// start out at the top of the menu
int scrollPos = 0;

void drawMenu() {
    for (int i=0; i &lt; numLcdRows; ++i) {
        lcd.setCursor(0, i); 
        lcd.print(menu[i + scrollPos]);
    }
}


To scroll up or down, just adjust the scroll offset:

inline void scrollUp() {
    if (scrollPos &gt; 0)
        scrollPos--;
}

inline void scrollDown() {
    if (scrollPos &lt; numMenuItems - numLcdRows)
        scrollPos++;
}


Note this is untested code written for a library I've never seen (just inferring how it works from your post); it's for illustration purposes only.