Go Down

Topic: call of overloaded 'write (int)' is ambigiuos (Read 346 times) previous topic - next topic

i_luv_arduino

When I try to compile I get this error
"call of overloaded 'write (int)' is ambigiuos"
Here is the parts of my code I think the error is in:
Code: [Select]
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


byte paddleup[8] = {
  0b10000,
  0b10000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};

byte paddletwo[8] = {
  0b00000,
  0b00000,
  0b10000,
  0b10000,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};

byte paddleone[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b10000,
  0b10000,
  0b00000,
  0b00000
};

byte paddledown[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b10000,
  0b10000

};
byte ballone[8] = {
  0b00000,
  0b00100,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};

byte balltwo[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00100,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};

byte ballthree[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00100,
  0b00000,
  0b00000
};
byte ballfour[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00100
};






void setup() {
  // set up the LCD's number of columns and rows:
  lcd.createChar(0, ballone);
  // create a new character
  lcd.createChar(1, balltwo);
  // create a new character
  lcd.createChar(2, ballthree);
  // create a new character
  lcd.createChar(3, ballfour); 
  // create a new character
  lcd.createChar(4, paddleup);
  // create a new character
  lcd.createChar(5, paddletwo);
  // create a new character
  lcd.createChar(6, paddleone);
  // create a new character
  lcd.createChar(7, paddledown); 
 

And the other part:
Code: [Select]
lcd.setCursor(6, 1);
lcd.write(0);
delay(100);
if (pushButton == HIGH); {
  x = x+1;
  }

pYro_65

It is saying it needs more information.

Code: [Select]
lcd.write(0);

This can match a couple of write methods, provide more context by casting it to what you desire ( have a look at the lcd library and what overloads it provides ).

Code: [Select]
lcd.write( ( byte ) 0 );
lcd.write( int(0) );
lcd.write( 0.0f );



johnwasser

I think the problem is that 0 can be interpreted as either a byte:
Code: [Select]

virtual size_t LCD::write(uint8_t)


or a null character pointer:
Code: [Select]

size_t Print::write(const char*)


Instead, use '\0' which is a character constant or cast it: (uint8_t)0
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e



pYro_65

yes, '\0' is a null character, there is a number of escape characters:

Quote
\' \" \? \\
\a \b \f \n \r \t \v


search google for a full explanation.

AWOL

Quote
so I can use '/0'?

No, you cannot - it is a multicharacter literal consisting of the characters '/' and '0'.
You can use '\0'.

OP - stop locking or deleting your threads.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Go Up