Hello,
I done all my prototyping on a Arduino IOT 33 with my min focused on that all my code is being ported to a Attiny85. My code is working as it should in the IOT33 and when i try to compile it for the Attiny85 i receive errors that extends to the libraries. The library IRremote said to be compatible with the Attiny series.
C:\Users\stefa\Documents\Arduino\libraries\IRremote\src\private/IRremoteBoardDefs.h:130:25: error: 'LED_BUILTIN' was not declared in this scope
#define BLINKLED LED_BUILTIN
and
C:\Users\stefa\Documents\Arduino\libraries\IRremote\src\irReceive.cpp:503:23: error: 'Serial' was not declared in this scope
printResultShort(&Serial);
#include <avr/io.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <IRremote.h>
unsigned long ir;
const int IR_PIN = 1; //11
IRrecv irrecv(IR_PIN);
decode_results results;
int ledpin = 0;// 9
int dimval = 193;
int ranval;// = random(50, 193);
int program;
// ------ ON/SLEEP -----
unsigned long tnow;
unsigned long tlater = 0;
bool on = false;
int IRon = 2155806975;
int IRoff = 2155823295;
// ------ DELAY -----
boolean ddelay = false;
int ddt = 1000;
unsigned long told = 0;
unsigned long tnew;
int fixedC = 0;
void sleep() {
GIMSK |= _BV(PCIE); // Enable Pin Change Interrupts
PCMSK |= _BV(PCINT1); // Use PB1 as interrupt pin
ADCSRA &= ~_BV(ADEN); // ADC off
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // replaces above statement
sleep_enable(); // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
sei(); // Enable interrupts
sleep_cpu(); // sleep
cli(); // Disable interrupts
PCMSK &= ~_BV(PCINT3); // Turn off PB3 as interrupt pin
sleep_disable(); // Clear SE bit
ADCSRA |= _BV(ADEN); // ADC on
sei(); // Enable interrupts
} // sleep
ISR(PCINT0_vect) {
// This is called when the interrupt occurs, but I don't need to do anything in it
}
void irr() {
if (irrecv.decode(&results)) {
//Serial.println(results.value);
//irrecv.printIRResultAsCVariables(&Serial);
if ((results.value) == IRon) {
tnow = millis();
on = true;
//Serial.println("ON");
}
if ((results.value) == IRoff) {
on = false;
analogWrite(ledpin, 0);
//Serial.println("OFF");
//sleep
}
irrecv.resume();
}
}
int ranset() {
ranval = random(80, 193);
}
int progSEL() { // 1=DIM, 2=FLICKER, 3=FIXED
program = random(1, 3);
}
void dim() {
if (ranval == dimval) {
program = 0;
} else if (ranval < dimval) {
analogWrite(ledpin, dimval);
dimval --;
} else if (ranval > dimval) {
analogWrite(ledpin, dimval);
dimval ++;
}
if (ddelay == false) {
told = millis();
}
ddelay = true;
ddt = random(5, 15);
Delay();
}
void flicker() {
if ( dimval > 60) {
dimval -= 5;
analogWrite(ledpin, dimval);
} else if (dimval <= 60) {
program = 0;
dim();
}
if (ddelay == false) {
told = millis();
}
ddelay = true;
ddt = random(5, 10);
Delay();
}
void Delay() {
tnew = millis();
if (ddelay = true) {
if (tnew - told > ddt) {
ddelay = false;
}
} else {
// do nothing
}
}
void setup() {
//Serial.begin(9600);
irrecv.enableIRIn();
progSEL();
//attachInterrupt(digitalPinToInterrupt(IR_PIN), encoderISR, CHANGE);
}
void loop() {
irr();
tlater = millis();
if(tlater - tnow < 21600000 & on == true){
if (ddelay == false) {
switch (program) {
case 0:
progSEL();
ranval = ranset();
//Serial.println("case 0");
break;
case 1:
dim();
//Serial.println("DIM");
break;
case 2:
flicker();
//Serial.println("FLICKER");
break;
}
} else {
Delay();
}
} else {
sleep();
}
}
For the attiny85 compiling and uploading, i have successfully burned bootloader and had the first prototype work without the IRremote library.
I have also tried to manually "#define BLINKLED 0", to try to override the "LEDBUILTIN", but with no success.
Any tips to overcome these errors?