Får inte koden att fungera för I2C

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5957
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Får inte koden att fungera för I2C

Inlägg av orvar-e »

Se bild. Ursäkta för den usla kvalitén, det är Paints fel.

Som man kan se så får jag "no matching function for call to LiquidCrystal_I2C"(int, int, int, osv)

Jag har kollat i LiquidCrystal_I2C.h - filen och allt finns där som borde finnas där.
Och filen ligger där den ska, annars så hade inte texten för LiquidCrystal_I2C.h sett ut som den gör.
Jag har provat lite olika koder för I2C displayer men fått samma meddelande varje gång.
Tar jag bort den raden som har hand om LiquidCrystal_I2C lcd(int, int, osv ......) så får jag samma meddelande.
Det är som den inte känner att filen är där vid kompilering.

Vad missar jag???
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
SeniorLemuren
Inlägg: 7779
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Får inte koden att fungera för I2C

Inlägg av SeniorLemuren »

Det är inte så att LiquidCrystal.h ställer till det, varför är den med, den används väl inte i koden? Klicka på kopiera felmeddelande och visa hela felmeddelandet så kanske man får bättre info om vad feletet är.
Sedan måste väl detta lib finnas med också misstänker jag

#include <Wire.h>
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: Får inte koden att fungera för I2C

Inlägg av Janson1 »

Även lcd.h är väl onödig?
kodar-holger
EF Sponsor
Inlägg: 916
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Får inte koden att fungera för I2C

Inlägg av kodar-holger »

På den rad där den visar att det är fel försöker du skapa ett nytt objekt av typen LiquidCrystal_I2C. Det kräver att du anropar dess konstruktor, vilket du gör, men argumentlistan du skickar med stämmer inte med den som krävs av konstruktorn för LiquidCrystal_I2C.

C++ tillåter vad som kallas funktionsöverlagring. Dvs. du kan göra flera funktioner med samma namn där bara antalet och typerna av argument är olika. Det skulle alltså kunna finnas flera olika konstruktorer i LiquidCrystal_I2C som alla heter LiquidCrystal_I2C. Men det gör det inte. I alla fall inte i den jag hittade på den världsomspännande nätet. Den har exakt en och den tar fyra argument.

Så ditt felmeddelande säger att kompilatorn hittar inte någon funktion att anropa som skall ha 8 argument.

Jag gissar (kvalificerat va. Jag läser ju din andra tråd med stort nöje) att du bytt display från en "vanlig" till en I2C. Det räcker då inte med att byta LiquidCrystal mot LiquidCrystal_I2C. Du måste också ändra i argumentlistan så att den matchar någon av dom/den som finns för objekttypen. Av koden i h-filen framgår vilka argument du skall använda.

Kod: Markera allt

/**
	 * Constructor
	 *
	 * @param lcd_addr	I2C slave address of the LCD display. Most likely printed on the
	 *					LCD circuit board, or look in the supplied LCD documentation.
	 * @param lcd_cols	Number of columns your LCD display has.
	 * @param lcd_rows	Number of rows your LCD display has.
	 * @param charsize	The size in dots that the display has, use LCD_5x10DOTS or LCD_5x8DOTS.
	 */
LiquidCrystal_I2C(uint8_t lcd_addr, uint8_t lcd_cols, uint8_t lcd_rows, uint8_t charsize = LCD_5x8DOTS);
Det är alltså inte vilka pinnar du är ansluten på som gäller nu, eftersom I2C kräver att du ansluter på speciella pinnar, utan bara information om själva displayen.
Användarvisningsbild
hawkan
Inlägg: 2585
Blev medlem: 14 augusti 2011, 10:27:40

Re: Får inte koden att fungera för I2C

Inlägg av hawkan »

Det är ju rätt, men kompliceras av att det finns olika varianter av LiquidCrystal_I2C bibliotek med olika konstruktorer. Jag tror problemet ligger där, att inte rätt bibliotek används.
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Får inte koden att fungera för I2C

Inlägg av GeekJoan »

Detta borde räcka:

Kod: Markera allt


#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.begin(16, 2);           // initialize the lcd
  lcd.setBacklight(255);
}

void loop()
{
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Yohoo!!");
}
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5957
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Får inte koden att fungera för I2C

Inlägg av orvar-e »

Det framgick inte tidigare men jag har en IC2 modul.


SeniorLemuren ...... Jag har kollat flera olika kod exempel, vissa har LiquidCristal.h med andra inte. Men jag tycker också att det ser lite märkligt ut, som kaka på kaka.
Alla funktioner som finns i LiquidCristal.h finns ju också i LiquidCrystal_I2C.h. Det gemensamma för alla koder jag testat är att de är missnöjda med LiquidCrystal_I2C.h
Sen har vi LCD.h........ :?: Vissa kodare har tagit med Wire.h också, jag är alldeles för okunnig för att kunna avgöra nått.

kodar-holger ..... Tänkte också att det kanske kunde finnas flera olika LiquidCrystal_I2C.h men med olika innehåll. Och jag tror dessvärre att det gör det.
LiquidCrystal_I2C.h
LiquidCrystal_I2C.h
http://www.archiduino.com/liquidcrystal ... ide-1-6-x/
Det är ju öppen källkod så varför inte.

hawkan ..... bara att testa olika bibliotek och hoppas på napp.

Jag har läst om adresser på lite olika ställen 0x27 är standard, 0x3F och 0x40 finns säkert fler. Men om man kör med en sådan modul som på bilden, spelar det då nån roll vad man har bakom den.
Displayen jag vill ha igång är 20x4, och verkar vara lite äldre om man tittar på komponent storleken. Hur vet att adressen är rätt?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
schnilsch
Inlägg: 76
Blev medlem: 11 juni 2014, 18:14:16

Re: Får inte koden att fungera för I2C

Inlägg av schnilsch »

Du får köra en I2C scanner sketch.
Har för mig att det finns ett exempel i arduino-iden, annars är det bara att googla "Arduino i2c scanner".
Den spottar ut alla I2C-enheter som är anslutna.
Användarvisningsbild
rvl
Inlägg: 5719
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Får inte koden att fungera för I2C

Inlägg av rvl »

orvar-e skrev:Hur vet att adressen är rätt?
Som sades med scanner, eller så får du se vad det står modulens IC och titta i databladet ...eller söka en rätt färsk tråd (högst några veckor gammal) här på forumet.
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: Får inte koden att fungera för I2C

Inlägg av Janson1 »

Om nu coden kompileras och laddas in så går det ju att prova sig fram med att kortsluta enligt mönster A0-A1-A2 på I2C kortet tills det ev fungerar...
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Får inte koden att fungera för I2C

Inlägg av GeekJoan »

Testade du koden jag skrev ovan?
Den funkar på de displayer som jag testat. Då har dock i2c kortet suttit där när jag köpt displayen, men det borde inte spela så stor roll. Adressen är nog inte samma dock.
i2c.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5957
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Får inte koden att fungera för I2C

Inlägg av orvar-e »

Ursäkta dröjsmålet familj, jobb och onödigt mycket snö att skotta. Har testat nu.
Det går att kompilera och ladda ner programmet utan klagomål, men hittills har jag inte fått upp några tecken på displayen.
Har vridit på potten på I2C-kortet utan märkbar framgång.
Jag har även förstått hur man ska bygga upp ett bibliotek, har gjort fel innan.

Testade en I2C-scanner, och jag fick fram standard adressen 0x27.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5957
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Får inte koden att fungera för I2C

Inlägg av orvar-e »

Backlight funkar endast till eller från, värde mindre än 1 = av, resterande värden = fullt flås.
Det innebär iaf att det jag har kontakt med modulen på rätt adress.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5957
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Får inte koden att fungera för I2C

Inlägg av orvar-e »

Nu har jag testat 3 olika displayer och två olika I2C moduler och ännu en kod, men får inte några tecken på displayen.
Går att ladda ner, men det duger inte längre. :(
Blir lite syrak på det här. :ledsen: :ledsen:

Kod: Markera allt

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


// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
	// initialize the LCD
	lcd.begin();

	// Turn on the blacklight and print a message.
	lcd.backlight();
	lcd.print("Hello, world!");
}

void loop()
{
	// Do nothing here...
}
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Får inte koden att fungera för I2C

Inlägg av GeekJoan »

Skriv vilka ingångar du använder så kan jag testa din kod på en av mina displayer.
Skriv svar