Hi
Some time ago I used a library for an LCD i2C with Attiny 85, but now I can't find the library.
With this library (LiquidCrystal_attiny) only the first letter in a row appears on my LCD
I can recommend the hd44780 library for I2C LCDs with tiny85 processors. Using the default I2C pins (pin 0 > SDA, pin2 > SCL).
The hd44780 library is available through the IDE library manager. The hd44780 library is the, hands down, best library available for the hd44780 controlled LCDs. The hd44780 library is actively maintained unlike most of the versions of the LiquidCrystal_I2C libraries.
Here is a "Hello World!" example for the tiny85 and hd44780 library. I use the ATTinyCore core by Spence Konde (excellent core). This code has been successfully tested with a tiny85 and 16x2 I2C enabled LCD.
// hd44780 library see https://github.com/duinoWitchery/hd44780
// thehd44780 library is available through the IDE library manager
#include <Wire.h>
#include <hd44780.h> // main hd44780 header
#include <hd44780ioClass/hd44780_I2Cexp.h> // i2c expander i/o class header
hd44780_I2Cexp lcd; // declare lcd object: auto locate & auto config expander chip
// LCD geometry
const int LCD_COLS = 16;
const int LCD_ROWS = 2;
void setup()
{
lcd.begin(LCD_COLS, LCD_ROWS);
lcd.clear();
lcd.print("Hello World");
lcd.setCursor(0, 1);
lcd.print("Millis ");
}
void loop()
{
updateLCD();
}
void updateLCD()
{
static unsigned long lcdTimer = 0;
unsigned long lcdInterval = 500;
if (millis() - lcdTimer >= lcdInterval)
{
lcdTimer = millis();
lcd.setCursor(8, 1);
lcd.print(" "); // overwrite old data
lcd.setCursor(8, 1); // reset the cursor
lcd.print(millis());
}
}
Why do I get this error?
I can't find to update the library in boards manager.
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_init':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:88:16: error: 'SDA' undeclared (first use in this function)
digitalWrite(SDA, 1);
^~~
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:88:16: note: each undeclared identifier is reported only once for each function it appears in
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:89:16: error: 'SCL' undeclared (first use in this function); did you mean 'SPL'?
digitalWrite(SCL, 1);
^~~
SPL
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:92:7: error: 'TWSR' undeclared (first use in this function); did you mean 'ACSR'?
cbi(TWSR, TWPS0);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:92:3: note: in expansion of macro 'cbi'
cbi(TWSR, TWPS0);
^~~
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:92:13: error: 'TWPS0' undeclared (first use in this function); did you mean 'TWSR'?
cbi(TWSR, TWPS0);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:92:3: note: in expansion of macro 'cbi'
cbi(TWSR, TWPS0);
^~~
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:93:13: error: 'TWPS1' undeclared (first use in this function); did you mean 'TWPS0'?
cbi(TWSR, TWPS1);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:93:3: note: in expansion of macro 'cbi'
cbi(TWSR, TWPS1);
^~~
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:94:3: error: 'TWBR' undeclared (first use in this function); did you mean 'TWSR'?
TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;
^~~~
TWSR
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:102:3: error: 'TWCR' undeclared (first use in this function); did you mean 'TWBR'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA);
^~~~
TWBR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:102:14: error: 'TWEN' undeclared (first use in this function); did you mean 'TWCR'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:102:26: error: 'TWIE' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:102:38: error: 'TWEA' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_disable':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:114:3: error: 'TWCR' undeclared (first use in this function); did you mean 'EECR'?
TWCR &= ~(_BV(TWEN) | _BV(TWIE) | _BV(TWEA));
^~~~
EECR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:114:17: error: 'TWEN' undeclared (first use in this function); did you mean 'TWCR'?
TWCR &= ~(_BV(TWEN) | _BV(TWIE) | _BV(TWEA));
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:114:29: error: 'TWIE' undeclared (first use in this function); did you mean 'TWEN'?
TWCR &= ~(_BV(TWEN) | _BV(TWIE) | _BV(TWEA));
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:114:41: error: 'TWEA' undeclared (first use in this function); did you mean 'TWEN'?
TWCR &= ~(_BV(TWEN) | _BV(TWIE) | _BV(TWEA));
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:117:16: error: 'SDA' undeclared (first use in this function)
digitalWrite(SDA, 0);
^~~
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:118:16: error: 'SCL' undeclared (first use in this function); did you mean 'SPL'?
digitalWrite(SCL, 0);
^~~
SPL
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_setAddress':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:130:3: error: 'TWAR' undeclared (first use in this function); did you mean 'TIFR'?
TWAR = address << 1;
^~~~
TIFR
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_setFrequency':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:141:3: error: 'TWBR' undeclared (first use in this function); did you mean 'TIFR'?
TWBR = ((F_CPU / frequency) - 16) / 2;
^~~~
TIFR
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_readFrom':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:204:7: error: 'TWDR' undeclared (first use in this function); did you mean 'DWDR'?
TWDR = twi_slarw;
^~~~
DWDR
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:209:13: error: 'TWCR' undeclared (first use in this function); did you mean 'TWDR'?
} while(TWCR & _BV(TWWC));
^~~~
TWDR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:209:24: error: 'TWWC' undeclared (first use in this function); did you mean 'TWCR'?
} while(TWCR & _BV(TWWC));
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:210:16: error: 'TWINT' undeclared (first use in this function)
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:210:29: error: 'TWEA' undeclared (first use in this function); did you mean 'TWWC'?
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:210:41: error: 'TWEN' undeclared (first use in this function); did you mean 'TWEA'?
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:210:53: error: 'TWIE' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:213:65: error: 'TWSTA' undeclared (first use in this function); did you mean 'TWEA'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_writeTo':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:301:7: error: 'TWDR' undeclared (first use in this function); did you mean 'DWDR'?
TWDR = twi_slarw;
^~~~
DWDR
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:306:13: error: 'TWCR' undeclared (first use in this function); did you mean 'TWDR'?
} while(TWCR & _BV(TWWC));
^~~~
TWDR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:306:24: error: 'TWWC' undeclared (first use in this function); did you mean 'TWCR'?
} while(TWCR & _BV(TWWC));
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:307:16: error: 'TWINT' undeclared (first use in this function)
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:307:29: error: 'TWEA' undeclared (first use in this function); did you mean 'TWWC'?
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:307:41: error: 'TWEN' undeclared (first use in this function); did you mean 'TWEA'?
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:307:53: error: 'TWIE' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:310:65: error: 'TWSTA' undeclared (first use in this function); did you mean 'TWEA'?
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE) | _BV(TWSTA); // enable INTs
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_reply':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:397:5: error: 'TWCR' undeclared (first use in this function); did you mean 'EECR'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA);
^~~~
EECR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:397:16: error: 'TWEN' undeclared (first use in this function); did you mean 'TWCR'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:397:28: error: 'TWIE' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:397:40: error: 'TWINT' undeclared (first use in this function); did you mean 'TWIE'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:397:53: error: 'TWEA' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_stop':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:412:3: error: 'TWCR' undeclared (first use in this function); did you mean 'EECR'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO);
^~~~
EECR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:412:14: error: 'TWEN' undeclared (first use in this function); did you mean 'TWCR'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:412:26: error: 'TWIE' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:412:38: error: 'TWEA' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:412:50: error: 'TWINT' undeclared (first use in this function); did you mean 'TWIE'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:412:63: error: 'TWSTO' undeclared (first use in this function)
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_releaseBus':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:444:3: error: 'TWCR' undeclared (first use in this function); did you mean 'EECR'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT);
^~~~
EECR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:444:14: error: 'TWEN' undeclared (first use in this function); did you mean 'TWCR'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:444:26: error: 'TWIE' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:444:38: error: 'TWEA' undeclared (first use in this function); did you mean 'TWEN'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:444:50: error: 'TWINT' undeclared (first use in this function); did you mean 'TWIE'?
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT);
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'twi_handleTimeout':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:475:29: error: 'TWBR' undeclared (first use in this function); did you mean 'TIFR'?
uint8_t previous_TWBR = TWBR;
^~~~
TIFR
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:476:29: error: 'TWAR' undeclared (first use in this function); did you mean 'TWBR'?
uint8_t previous_TWAR = TWAR;
^~~~
TWBR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\compat\twi.h:36:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:29:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function 'TWI_vect':
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:505:10: error: 'TWSR' undeclared (first use in this function); did you mean 'ACSR'?
switch(TW_STATUS){
^
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:505:10: error: 'TWS7' undeclared (first use in this function); did you mean 'TWSR'?
switch(TW_STATUS){
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:505:10: error: 'TWS6' undeclared (first use in this function); did you mean 'TWS7'?
switch(TW_STATUS){
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:505:10: error: 'TWS5' undeclared (first use in this function); did you mean 'TWS6'?
switch(TW_STATUS){
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:505:10: error: 'TWS4' undeclared (first use in this function); did you mean 'TWS5'?
switch(TW_STATUS){
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:505:10: error: 'TWS3' undeclared (first use in this function); did you mean 'TWS4'?
switch(TW_STATUS){
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:510:7: error: 'TWDR' undeclared (first use in this function); did you mean 'TWSR'?
TWDR = twi_slarw;
^~~~
TWSR
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:530:10: error: 'TWCR' undeclared (first use in this function); did you mean 'TWDR'?
TWCR = _BV(TWINT) | _BV(TWSTA)| _BV(TWEN) ;
^~~~
TWDR
In file included from c:\users\bozgo\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
from C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:26:
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:530:21: error: 'TWINT' undeclared (first use in this function)
TWCR = _BV(TWINT) | _BV(TWSTA)| _BV(TWEN) ;
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:530:34: error: 'TWSTA' undeclared (first use in this function); did you mean 'TWS3'?
TWCR = _BV(TWINT) | _BV(TWSTA)| _BV(TWEN) ;
^
C:\Users\BoZgo\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:530:46: error: 'TWEN' undeclared (first use in this function); did you mean 'TWINT'?
TWCR = _BV(TWINT) | _BV(TWSTA)| _BV(TWEN) ;
^
exit status 1
Error compiling for board ATtiny25/45/85.
Text preformatat
`
The hd44780 library is in the IDE library manager (look in the Sketch menu).
What core are you using?
The ATTiny core is in the boards manager (Tools menu). Just type attiny in the search box.
Here are instructions on installing the ATTinyCore core. It really is the best that I have found and I have tried many.
Thank you very much sir!
I managed to use the LCD with what you recommended!
It goes great!
Have you ever used a low power library for attiny?
I would like to make a thermometer with attiny and bmp and when I press a button, atiiny to display for 5 seconds the temperature, humidity, atmospheric pressure, then enter low power.
Can you help me?
I did a project, years ago, the used sleep and the watchdog timer to reduce power use with a tiny85. When I get time will try to find it.
How long between wake ups?
The following code will put the Attiny85 in deep sleep mode. Unless you have configured the watchdog, external interrupt, etc or reset the MCU completely, it will never wake-up (no library needed)
asm("NOP");
MCUCR = 1<<SE | 1<<SM1 | 0<<SM0;
asm("NOP");
asm("SLEEP");
I solved the "falling asleep" problem with the help of @hzrnbgy. And it works great.
Now I have another problem that bothers me. I use a DHT 22 to read temperature and humidity, but it fails no matter what pin I put it on.
This is the code, what do you think?
// hd44780 library see https://github.com/duinoWitchery/hd44780
// thehd44780 library is available through the IDE library manager
#include <Wire.h>
#include <hd44780.h> // main hd44780 header
#include <hd44780ioClass/hd44780_I2Cexp.h> // i2c expander i/o class header
#include <DHT.h>;
hd44780_I2Cexp lcd; // declare lcd object: auto locate & auto config expander chip
// LCD geometry
const int LCD_COLS = 16;
const int LCD_ROWS = 2;
#define DHTPIN 0 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
int chk;
float humi; //Stores humidity value
float tempC; //Stores temperature value
void setup()
{
dht.begin();
lcd.begin(LCD_COLS, LCD_ROWS);
lcd.backlight();
lcd.init();
lcd.clear();
delay(1000);
// Print a message to the LCD.
lcd.setCursor(0,0);
lcd.print("Hello, world!");
delay(1000);
lcd.clear();
}
void loop()
{
//Read data and store it to variables hum and temp
float humi = dht.readHumidity(); // read humidity
float tempC = dht.readTemperature(); // read temperature
// check if any reads failed
if (isnan(humi) || isnan(tempC)) {
lcd.setCursor(0, 0);
lcd.print("Failed");
} else {
lcd.setCursor(0, 0); // start to print at the first row
lcd.print("Temp: ");
lcd.print(tempC); // print the temperature
lcd.print((char)223); // print ° character
lcd.print("C");
lcd.setCursor(0, 1); // start to print at the second row
lcd.print("Humi: ");
lcd.print(humi); // print the humidity
lcd.print("%");
}
delay(2000);
lcd.clear();
//lcd.noBacklight();
// SLeep fara biblioteca
//asm("NOP");
// MCUCR = 1<<SE | 1<<SM1 | 0<<SM0;
//asm("NOP");
//asm("SLEEP");
}
P.S.
I can use DHT22, or BMP280, but for BMP I couldn't find an easier example for it.
PB0 is the I2C SDA pin.
The init function does not belong with the hd44780 library.
There should be no semi colon after a #define
.
What clock rate are you running the tiny85 at? I did a bit of poking around on the net and it seems that the DHT libraries want a stable 16MHz to work right. I tried your code on an Uno (16MHz) with an I2C LCD and DHT22 and it works fine.
You may have to find a library that will work with the tiny85. Do a search for "tiny85 and dht22" or "dht22 library for tiny85" or use the BME280. The BMP280 does not do humidity, only temperature and barometric pressure.
Note that most BME280 sensors that I have seen are 3.3V devices so need 3.3V supply and level shifters on the I2C lines if used with a 5V processor.
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.