ecran lcd 16x2 i2c avec attiny

bonjour a tous
j'ai quelque problèmes pour afficher des infos sur un écran i2c 16x2
avec un attiny85 et l'IDE 1.0.1
j'ai tester la librairies tiny wire M mais malheureusement elle me sort de belles erreurs
j'ai gratter sur le site ardui mais rien de concluant même en changeant la libraires liquid crystal

voici les message d'erreur si vous avez une idée

Tiny85_Temp_LCD.pde:-1: error: invalid conversion from 'int' to 't_backlighPol'
Tiny85_Temp_LCD.pde:-1: error: initializing argument 3 of 'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, t_backlighPol)'
C:\Program Files (x86)\arduino\arduino-1.0.1\libraries\LiquidCrystal/LiquidCrystal_I2C.h: In function 'void setup()':
C:\Program Files (x86)\arduino\arduino-1.0.1\libraries\LiquidCrystal/LiquidCrystal_I2C.h:154: error: 'int LiquidCrystal_I2C::init()' is private
Tiny85_Temp_LCD.pde:-1: error: within this context

un grand merci a vous

Sans code ça va être dur ....

sur quel os de base?
comment as tu rajouté le attiny85?
quel code du sktech?
t'as un lien sur le lcd i2C ?
est ce qu'en changeant de board tu as la meme erreur?

apriori y'a un souci ou conflit sur la librairie. comment l'a tu rajoutée? en sous repertoire de LiquidCristal?

oups j'oublie toujours une partie moi
os ==> win7
le attiny85 a été ajouté avec le fichier Arduino-Tiny fournit ( me semble car ca date ) sur le site arduino.cc
le code du sketch de le librairie tiny wire M

/* ATtiny85 as an I2C Master   Ex2        BroHogan                           1/21/11
 * I2C master reading DS1621 temperature sensor. Display to I2C GPIO LED.
 * SETUP:
 * ATtiny Pin 1 = (RESET) N/U                      ATtiny Pin 2 = (D3) N/U
 * ATtiny Pin 3 = (D4) to LED1                     ATtiny Pin 4 = GND
 * ATtiny Pin 5 = SDA on DS1621  & GPIO            ATtiny Pin 6 = (D1) to LED2
 * ATtiny Pin 7 = SCK on DS1621  & GPIO            ATtiny Pin 8 = VCC (2.7-5.5V)
 * NOTE! - It's very important to use pullups on the SDA & SCL lines!
 * DS1621 wired per data sheet. This ex assumes A0-A2 are set LOW for an addeess of 0x48
 * PCA8574A GPIO was used wired per instructions in "info" folder in the LiquidCrystal_I2C lib.
 * This ex assumes A0-A2 are set HIGH for an addeess of 0x3F
 * LiquidCrystal_I2C lib was modified for ATtiny - on Playground with TinyWireM lib.
 * TinyWireM USAGE & CREDITS: - see TinyWireM.h
 */

//#define DEBUG
#include <TinyWireM.h>                  // I2C Master lib for ATTinys which use USI
#include <LiquidCrystal_I2C.h>          // for LCD w/ GPIO MODIFIED for the ATtiny85

#define GPIO_ADDR     0x3F              // (PCA8574A A0-A2 @5V) typ. A0-A3 Gnd 0x20 / 0x38 for A
#define DS1621_ADDR   0x48              // 7 bit I2C address for DS1621 temperature sensor
#define LED1_PIN         4              // ATtiny Pin 3
#define LED2_PIN         1              // ATtiny Pin 6

int tempC = 0;                          // holds temp in C
int tempF = 0;                          // holds temp in F

LiquidCrystal_I2C lcd(GPIO_ADDR,16,2);  // set address & 16 chars / 2 lines


void setup(){
#ifdef DEBUG
  pinMode(LED1_PIN,OUTPUT);
  pinMode(LED2_PIN,OUTPUT);
  Blink(LED1_PIN,2);                    // show it's alive
#endif
  TinyWireM.begin();                    // initialize I2C lib
  Init_Temp();                          // Setup DS1621
  lcd.init();                           // initialize the lcd 
  lcd.backlight();                      // Print a message to the LCD.
  lcd.print("Hello, Temp!");
  delay (2000);
}


void loop(){
  Get_Temp();                           // read current temperature
  lcd.clear();                          // display it
  lcd.print("C: ");
  lcd.print(tempC,DEC);
  lcd.setCursor(7,0);
  lcd.print("F: ");
  lcd.print(tempF,DEC);
#ifdef DEBUG
  Blink(LED1_PIN,tempC/10);             // blink 10's of temperature on LED 1
  delay (1000);
  Blink(LED2_PIN,tempC%10);             // blink 1's of temperature on LED 2
#endif
  delay (4000);                         // wait a few sec before next reading
}


void Init_Temp(){ // Setup the DS1621 for one-shot mode
  TinyWireM.beginTransmission(DS1621_ADDR);
  TinyWireM.send(0xAC);                 // Access Command Register
  TinyWireM.send(B00000001);            // Using one-shot mode for battery savings
  //TinyWireM.send(B00000000);          // if setting continious mode for fast reads
  TinyWireM.endTransmission();          // Send to the slave
}


void Get_Temp(){  // Get the temperature from a DS1621
  TinyWireM.beginTransmission(DS1621_ADDR);
  TinyWireM.send(0xEE);                 // if one-shot, start conversions now
  TinyWireM.endTransmission();          // Send 1 byte to the slave
  delay(750);                           // if one-shot, must wait ~750 ms for conversion
  TinyWireM.beginTransmission(DS1621_ADDR);
  TinyWireM.send(0xAA);                 // read temperature (for either mode)
  TinyWireM.endTransmission();          // Send 1 byte to the slave
  TinyWireM.requestFrom(DS1621_ADDR,1); // Request 1 byte from slave
  tempC = TinyWireM.receive();          // get the temperature
  tempF = tempC * 9 / 5 + 32;           // convert to Fahrenheit 
}


#ifdef DEBUG
void Blink(byte led, byte times){ // poor man's GUI
  for (byte i=0; i< times; i++){
    digitalWrite(led,HIGH);
    delay (400);
    digitalWrite(led,LOW);
    delay (175);
  }
}
#endif

le lcd i2C ( juste le rajout sur un ecran qui trainer mais qui fonctionne sur une uno)
http://www.ebay.com/itm/130992878814?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

le même problème survient quand je sélectionne attiny peut importe le model

la librairie est une librairie annexe qui s'appel tiny wire M qui "normalement" est prévu pour ça

merci a vous

il y a plusieur version de LiquidCrystal_I2C.
un lien sur celle que tu a utilisé?

tu envoi "LiquidCrystal_I2C lcd(GPIO_ADDR,16,2)"
alors que 'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, t_backlighPol)'

essai quelque chose comme

...
LiquidCrystal_I2C lcd(GPIO_ADDR);
void setup()
{
  lcd.begin(16,2);
...

la librairie liquidcrystal date de trop loin je me rappel plus ou je les récupérer
j'aurais bien dit adafruit mais sur l'actuelle qu'il propose ce n'est pas les même fichier

j'ai essayer ton idée ca a changer le problème mais ca reste sur une erreur qui revient

C:\Program Files (x86)\arduino\arduino-1.0.1\libraries\LiquidCrystal/LiquidCrystal_I2C.h: In function 'void setup()':
C:\Program Files (x86)\arduino\arduino-1.0.1\libraries\LiquidCrystal/LiquidCrystal_I2C.h:154: error: 'int LiquidCrystal_I2C::init()' is private
Tiny85_Temp_LCD.pde:-1: error: within this context

toujours init() is private

le lien adafruit que tu as donnée porte sur une lib qui supporte l'i2c.
retire ton repertoire
C:\Program Files (x86)\arduino\arduino-1.0.1\libraries\LiquidCrystal/
et remplace par la lib d'adafruit.
dans le sous-dossier exemples, test HelloWorld_i2c.pde

Attention : visiblement la lib adafruit est faite pour un MCP23008, l'adaptateur LCD-i2c que tu as normalement c'est un PCF8574, pas sûr que les protocoles de com soit identiques ....

prend la lib qui te convien ici :
http://playground.arduino.cc/Code/LCDi2c

j'ai fait tel que les explications deja données.
j'ai copier du repertoire d'examples le HelloWorld, ca compil sans soucis.

apres plusieurs essaie je pense que je me suis mal exprimé
j'utilise la lib lcd i2c sans aucun problemes avec une uno, une mega et une nano
la dessus aucun soucis ca marche au poil

mon seul problemes est de la faire fonctionner sur un ATTINY 85
je pense a un problème sur le fichier board.txt mais c'est bizarre car la librairie tinywireM est censé fonctionner sans d'autre modif

concernant la lib adafruit ce n'est pas la lib complete qu'il fournissent mais le rajout a faire dans la lib originelle
car si je mets juste le fichier de adafruit il ne me la trouve pas

merci a vous

tu a un probleme de versions de librairies. c'est vrai qu'elles portent le meme nom.

sur une installation quasy fraiche de l'ide 1.0.5:
installation des boards attiny_master.zip de High-Low Tech – Programming an ATtiny w/ Arduino 1.6 (or 1.0)
dans repertoire sketchbook\hardware ou arduino-1.0.5\hardware (je detail pas la procedure, tu dois savoir), aucune incidence.
ERRATA
il y a bien une incidence avec l'ide 1.0.5 sous linux, ne pas mettre le hardware dans ~/sketchbook/ mais dans ~/arduino-1.0.5/hardware

les librairies tiny master et slave d'ici: Arduino Playground - USIi2c

NE PAS PRENDRE LA LiquidCrystal_i2c_85V1 DE CETTE PAGE.
la librairie lcd_i2c d'ici: playground.arduino.cc/Code/LCDi2c
ERRATA
faire des essais avec l'une ou l'autre de ces librairies

mettre ces librairies a la racine de arduino-1.0.5\librairies

c'est tout, ca devrai suffire.

Bonjour Jean,

Sur la page « High-Low Tech Group :: MIT Media Lab », il réfère à « damellis/attiny
», mais sans indiquer ou placer ce nouveau dossier.

Alors, comme cela est ambigu pour moi, pourriez-vous m'indiquer ou installer le nouveau dossier « attiny » de cette archive « attiny-master », avec son dossier : « variants » et fichier « boards.txt » ?

Merci !

L'ami René

Rebonjour,

J'ai probablement trouvé, j'ai essayé dans le dossier « /usr/share/arduino/hardware » et en ouvrant l'IDE Arduino, je retrouve les nouvelles définitions des Tiny.

Dois-je enlever les anciennes versions à 1, 8 et 16 MHz (effacer le dossier « tiny ») ?

L'ami René

Rebonjour,

J'ai trouvé une de mes sources de problème ! J'utilisais des chartes des broches des Tiny84 et Tiny85 erroné et/ou incomplet. En voici les liens (donc à ne pas utiliser) :

http://www.ledsandchips.com/upload/cards/attiny.jpg


Voir en pièces jointes

Est-ce que vous auriez une charte équivalente, mais qui ne comporte pas d'erreurs ou d'omissions comme ces deux dernières ?

Merci !

L'ami René

soit tu place
~/arduino-1.0.5/hardware/arduino/variants/attiny/tiny8 et tiny14
et tu rajoute tes boards a la suite du fichier ~/arduino-1.0.5/hardware/arduino/boards.txt

soit tu rajoute un dossier dans sketchbook et tu y met l'integralité
~/sketchbook/hardware/attiny/
ca semble mieux, car on peut changer/upgrader de version d'ide sans avoir a refaire les modifs.

la meme chose pour les librairies, tu peut les mettre dans ~/sketchbook/libraries/

!!! MAIS !!!
apres plusieurs essais entre hier et aujourd'hui, il doit y avoir des restrictions:
je n'ai pas eu de problemes a deplacer les librairies dans /sketchbook/, mais les boards, oui.

... il semble qu'une board de /sketchbook/ ne peut pas appeler les librairies de ~/arduino-1.0.5/libraries/ ... ???
et en tout cas pour cette archive « attiny-master », j'ai du la placer dans ~/arduino-1.0.5/hardware/arduino/

voir: http://arduino.cc/en/Guide/Libraries

Bonjour Monsieur Jean, 8)

Merci pour cette rapide réponse !

J'ai déjà un partage des bibliothèques entre versions des IDE Arduino « /home/rene/Arduino/libraries ». Et cela serait bien d'y ajouter « /home/rene/Arduino/hardware ». J'ai déjà essayé, mais moi aussi j'ai rencontré des incohérences !

Je vais vous suivre dans cette voie, mais pardonnez-moi d'attendre votre retour d'expérience, car actuellement, j'ai d'autres champs d’investigations à faire.

J'apprécierais que vous nous communiquiez les fruits de vos propres investigations. Encore pardon, pardon ! :disappointed_relieved:

L'ami René

j'avais l'abitude de ne rien mettre dans sketchbook, et je n'ai jamais eu de soucis.
ce post m'a fait tester les librairies et les boards dans sketchbook, et je constate qu'il n'y a pas de soucis avec les librairies,
mais qu'il y en a avec les boards.
au moins avec l'ide 1.01 et 1.05 sur l'archive attiny-master.

je viens de recevoir mon DUE, je vais donc tester l'ide 1.5.7
et ca commence bien: j'ai pas mon repertoire sketchbook.

ok,

les librairies et les boards fonctionnent dans sketchbook avec l'ide1.5.7
les boards pour 1.5.7 dans sketchbook ne perturbent pas l'ide1.0.5

de retour après moulte essaie
de mon coté je suis partie sur une base saine complète
une machine virtuelle avec l'IDE 1.0.5r2 récupérer sur arduino.cc
les librairies et fichier board que tu donne au dessus
et j'ai encore et toujours des erreurs

In file included from Tiny85_Temp_LCD.pde:18:
D:\dl\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:80: error: conflicting return type specified for 'virtual void LiquidCrystal_I2C::write(uint8_t)'
D:\dl\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'

finalement je me demande si ya vraiment quelqu’un qui a déjà utilisé un attiny avec un écran i2c
je pense que je vais arrêter de me torturer avec ca et passer direct sur une nano ou une micro ca m'éviteras des emmerde mais
bon c'est dommage quand meme

reli mon descriptif, il faut que t'essai avec l'une ou l'autre des librairie LiquidCrystal_I2C.

include tinyWire uniquement si la cible est attiny, avec une uno tu passe sur la wire traditionnelle.