LCD prints different numbers, with digitalReal

Hi guys,
I’m making a scoreboard which i control using an RF with 3 buttons.
most // text is in dutch, but isn’t important.

My problem is that i need to print 00, 15 , 30 , 40 etc

Right now even when i just start up the LCD it just says 330 of 336

Can i use the atoi function? I tried it, but doesn’t seem to work.

The code for displaying value to number is all the way at the bottom.

// Bibliotheken
#include <Wire.h>  
#include <LiquidCrystal_I2C.h>

// Setup scherm (027x -> adres I2C, 16 kolommen breed, 2 rijen hoog)
LiquidCrystal_I2C lcd(0x27, 16, 2);

// I/O (Input/Output)
int aPin = 2;
int bPin = 3;
int cPin = 4;


// Variabelen
int aState;               // C0py status from input
int bState;
int cState;


int huidigeWaarde1 = 0;  // When we start display value "0"
int huidigeWaarde2 = 0;

int telWaarde1= 0;
int telWaarde2= 0;

int displayWaarde1;
int displayWaarde2;



void setup(){
Serial.begin(9600);

//Declareren wat bv aPin hierboven is -> Input of Output
pinMode(aPin, INPUT);
pinMode(bPin, INPUT);
pinMode(cPin, INPUT);
pinMode(LED_BUILTIN, OUTPUT);    //Led_Builtin -> Inwendige LED op arduino, en we willen die aansturen dus OUTPUT

//Screen action
lcd.init();   
lcd.backlight();
lcd.setCursor(7,1);
lcd.print(":");
lcd.setCursor(1,0);
lcd.print("Team_1");
lcd.setCursor(9,0);
lcd.print("Team_2");
}


void loop(){

//omzetten ingang naar variabel
aState = digitalRead(aPin);
bState = digitalRead(bPin);
cState = digitalRead(cPin);

// Hieronder alles voor aPin en bPin

// aPin van 0 naar 15
if (aState == HIGH & telWaarde1 == 0) {
    telWaarde1++;
    }
    
// bPin van 0 naar 15
if (bState == HIGH & telWaarde2 == 0) {
    telWaarde2++;
    }

// aPin van 15 naar 30
if (aState == HIGH & telWaarde1 == 1) {
    telWaarde1++;
    }
    
// bPin van 15 naar 30
if (bState == HIGH & telWaarde2 == 1) {
    telWaarde2++;
    }

// aPin van 30 naar 40
if (aState == HIGH & telWaarde1 == 2) {
    telWaarde1++;
    }

// bPin van 30 naar 40
if (bState == HIGH & telWaarde2 == 2) {
    telWaarde2++;
    }

// aPin van 40 naar 0 -> gewonnen en als bPin ook 30 en minder heeft -> nieuwe set
if (aState == HIGH & telWaarde1 == 3 & (telWaarde2 == 0 || telWaarde2 == 1 || telWaarde2 == 2)){
    telWaarde1 = 0;
    telWaarde2 = 0;
    }

// bPin van 40 naar 0 -> gewonnen en als bPin ook 30 en minder heeft -> nieuwe set
if (bState == HIGH & telWaarde2 == 3 & (telWaarde1 == 0 || telWaarde1 == 1 || telWaarde1 == 2)){

    telWaarde1 = 0;
    telWaarde2 = 0;
    }

// aPin van 40 naar advangtage als bPin ook 40 heeft
if (aState == HIGH & telWaarde1 == 3 & telWaarde2 == 3) {
    telWaarde1= 4;
    }

// bPin van 40 naar advangtage als aPin ook 40 heeft
if (bState == HIGH & telWaarde1 == 3 & telWaarde2 == 3) {
    telWaarde2= 4;
    }

// AUTOMATISCH aPin en bPin terug naar 40 als beide advantage hadden
if (telWaarde1 == 4 & telWaarde2 == 4) {
    telWaarde1= 3;
    telWaarde2= 3;
    }

// aPin van advantage naar gewonnen als bPin 40 heeft
if (aState == HIGH & telWaarde1 == 4 & telWaarde2 == 3) {
    telWaarde1= 0;
    telWaarde2= 0;
    }
    
// bPin van advantage naar gewonnen als aPin 40 heeft
if (bState == HIGH & telWaarde2 == 4 & telWaarde1 == 3) {
    telWaarde1= 0;
    telWaarde2= 0;
    }



if (telWaarde1 == 0){
   huidigeWaarde1 = 0;
   }
if (telWaarde1 == 1){
   huidigeWaarde1 = 15;
   }
if (telWaarde1 == 2){
   huidigeWaarde1 = 30;
   }
if (telWaarde1 == 3){
   huidigeWaarde1 = 40;
   }
if (telWaarde1 == 4){
   huidigeWaarde1 = 88;
   }
   
   
if (telWaarde2 == 0){
   huidigeWaarde2 = 0;
   }
if (telWaarde2 == 1){
   huidigeWaarde2 = 15;
   }
if (telWaarde2 == 2){
   huidigeWaarde2 = 30;
   }
if (telWaarde2 == 3){
   huidigeWaarde2 = 40;
   }
if (telWaarde2 == 4){
   huidigeWaarde2 = 88;
   }

if (telWaarde1 == 3 & telWaarde2 == 3){
   huidigeWaarde1 = 50;
   huidigeWaarde2 = 50;  
   }
   

// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde1 == 0){
    displayWaarde1 = "00";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde2 == 0){
    displayWaarde2 = "00";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde1 == 15){
    displayWaarde1 = "15";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde2 == 15){
    displayWaarde2 = "15";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde1 == 30){
    displayWaarde1 = "30";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde2 == 30){
    displayWaarde2 = "30";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde1 == 40){
    displayWaarde1 = "40";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde2 == 40){
    displayWaarde2 = "40";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde1 == 50){
    displayWaarde1 = "deuce";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde2 == 50){
    displayWaarde2 = "deuce";
    }

// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde1 == 88){
    displayWaarde1 = "AA";
    }
    
// Displaywaarde vervangen van cijfer 88 naar AA
if (huidigeWaarde2 == 88){
    displayWaarde2 = "AA";
    }

//waarde neerschrijven
lcd.setCursor(3,1);
lcd.print(displayWaarde1);
lcd.setCursor(11,1);
lcd.print(displayWaarde2);

 Serial.print("displayWaarde1:");
 Serial.print(displayWaarde1);
 Serial.print(" displayWaarde2:");
 Serial.println(displayWaarde2);

delay(300);


}

Hello,

displayWaarde1 and displayWaarde2 are of type int, but you try to store a char array in them. Change their type to char arrays and use function strcpy .

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.