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
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
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
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 ....
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
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
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
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 » ?
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 ») ?
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) :
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/
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 !
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.
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