Forum: Mikrocontroller und Digitale Elektronik IRBox - Arduino Code verkleinern


von R. B. (dxx255)


Lesenswert?

Hallo
Ich möchte eine kleine Box bauen, welche auf das Signal einer 
gewöhnlichen IR Fernbedienung reagiert und dann eine Funksteckdose 
schaltet. Das Ganze funktioniert einwandfrei mit einem Arduino Uno. Nun 
möchte ich eine Platine herstellen. Da ich eigentlich nur zwei Pins 
benötige, dachte ich, dass ich einen Attiny 85 nutzen könnte. Dieser hat 
aber nur 8Kb Flash Speicher. Mein Code hat rund 11Kb. Ich wollte fragen, 
ob jemand eine Idee hat, um den Code zu verkleinern, dass er auf einen 
Attiny 85 passt.
Hier der Code:
1
#include <RCSwitch.h>
2
3
#include <IRremote.h>
4
5
int RECV_PIN = 11;
6
7
IRrecv irrecv(RECV_PIN);
8
9
decode_results results;
10
RCSwitch mySwitch = RCSwitch();
11
12
void setup() {
13
  Serial.begin(9600);
14
  mySwitch.enableTransmit(10);
15
  irrecv.enableIRIn();
16
}
17
18
void loop() {
19
  if (irrecv.decode(&results)) {
20
    /*if(results.value==0xF21169DD||results.value==0xC5F4A8B0){
21
       mySwitch.send(5308436, 24); 
22
    }
23
     if(results.value==0x95C6EAD7||results.value==0x8A353E12){
24
       mySwitch.send(5308437, 24); 
25
    }*/
26
    if(results.value==0xC708F){
27
       mySwitch.send(5308436, 24); 
28
    }
29
     if(results.value==0xCB04F){
30
       mySwitch.send(5308437, 24); 
31
    }
32
    irrecv.resume(); // Receive the next value
33
  }
34
 
35
}
Bitte um Hilfe

von R. B. (dxx255)


Lesenswert?

??

von tommy (Gast)


Lesenswert?

Beim ATTiny 85 auf den Bootloader verzichten?

von R. B. (dxx255)


Lesenswert?

Geht das? Kann ich das Hex-File direkt mittels ISP in den MC schreiben? 
Wie viel Speicherplatz kann man auf diese Weise einsparen?

von R. B. (dxx255)


Lesenswert?

Es sind nur noch 9.766 Bytes wenn ich die Zeile Serial.begin(9600) 
weglasse. Diese brauche ich sowieso nicht!

von Kaj (Gast)


Lesenswert?

Roman B. schrieb:
> Dieser hat
> aber nur 8Kb Flash Speicher.
Nein es sind 8KB, nicht 8Kb.

Roman B. schrieb:
> Mein Code hat rund 11Kb
Wenns wirklich 11Kb sind, und nicht 11KB, sehe ich da kein Problem.

Also, ohne jetzt zu wissen was in
1
#include <RCSwitch.h>
2
#include <IRremote.h>
drin steht, wenn das bisschen Code da oben 11KB sein sollen...
Wo steht das es 11KB sein sollen?

Grüße

von Arduino (Gast)


Lesenswert?

Ein Programm, das für einen Arduino Uno compiliert wurde läuft auf einem 
ATTiny 85 nicht. Und für einen ATTiny 85 zu compilieren wird auch nicht 
gehen, da es keinen Arduino mit diesem Prozessor gibt.
Daneben wird man den Code nicht verkleinern können, da die IR-Library 
nun mal mehr als 8kB braucht. Darin ist er Bootloader noch nicht mal 
enthalten.

Ergo: ATTiny 85 -> ATMega 328 und alles wird gut.

von Sean G. (atmega318)


Lesenswert?

Hau das Arduino Zeugs raus, das ist nämlich das ineffizienteste was es 
gibt. Nimm stattdessen IRMP, das braucht viel weniger.

von Markus (Gast)


Lesenswert?

Arduino schrieb:
> Und für einen ATTiny 85 zu compilieren wird auch nicht
> gehen, da es keinen Arduino mit diesem Prozessor gibt.

Sicher geht das compilieren. Und dann ohne bootloader mit ISP übetragen.
z.B.
http://www.hobbytronics.co.uk/arduino-attiny
http://www.sachsendreier.com/asw/clernen/arduinoasisp/arduinoasisp.html

von R. B. (dxx255)


Lesenswert?

Es geht sehr wohl mit der Arduino IDE für einen ATtiny zu komillieren. 
Siehe: http://code.google.com/p/arduino-tiny/
Aber wenn es sich sowieso vom Speicher her nicht ausgeht, dann muss ich 
wohl einen Atmega nutzen, auch wenn dieser ein bisschen zu "groß" für 
diese Aufgabe ist!
Danke für die Hilfe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.