Sketch von Uno auf Attiny85

Guten morgen...
Ich bin noch ganz frisch in dieser Sache und habe da mal die frage wie ich einen Sketch der auf dem Uno läuft auf einen Attiny85 bekomme?!
Es soll die Temperatur vom LM35DZ ausgelesen werden und wenn die angegebene Temperatur erreicht wird betätigt der Servo die Lüftungsklappe im Wintergarten.
So weit so gut...
Nun dachte ich mir das ich ja nicht so viel Speicherplatz brauche und ein Attiny85 reicht und zudem noch billiger ist. Also habe ich mir die Datei für den Attiny geladen und den Blinksketch getestet...funzt...
Dann wollte ich den eigentlichen Sketch aufspielen und bekam folgende Fehlermeldung:
Temperatur_auslesen_LM35_ATTINY85.ino: In function 'void setup()':
Temperatur_auslesen_LM35_ATTINY85:15: error: 'Serial' was not declared in this scope
als Fehler wird mir der Befehl "Serial.begin(9600)" angezeigt aber diesen brauche ich doch damit der wert vom Sensor ausgelesen wird oder nicht?
Hab die ganze Nacht vor dem Pc gesessen und Google gequält aber ich stehe im moment echt auf dem Schlauch...
Hier mal mein Code der auf dem Uno läuft:

//Temperaturregelung Wintergarten//

#include <Servo.h>
Servo servo1;


float tempC;
int tempPin = 2; // Temperatursonsor an analog Pin 0 bei Arduino | bei ATTINY85 an pin 2
int ledPin = 0; // LED an Pin 13 bei Arduino | bei ATTINY85 an pin 0
int pos = 0; // Servoposition

// Setup

void setup()
{
 Serial.begin(9600); // öffnet den Serialport zur Comunikation mit dem Sensor 
 pinMode(ledPin, OUTPUT);
 servo1.attach(5);
}


void loop()
{
 tempC = analogRead(tempPin); // liest den Temperaturpin aus
 tempC = (5.0*tempC*100.0)/1024.0;
 Serial.println((byte)tempC);
  if (tempC >26)  // wenn die Temp über 26 C ist leuchtet die led
  {
    pos = 180; // Servo öffnet
   digitalWrite(ledPin, HIGH);
   servo1.write(pos);
  }
  else
  {
    pos = 0; // Servo schließt
    digitalWrite(ledPin, LOW);
    servo1.write(pos);
  }
  delay(1000);
}

würde mich sehr freuen wenn mir hier geholfen wird und bitte... zerlegt mich nicht gleich...ich bin noch ganz frisch :smiley:

MfG Micha

Der ATtiny85 hat kein HardwareSerial/ UART. Das geht aber z.B. mit der SoftwareSerial-Bibliothek.

hi,

so ziemlich alles, was auf dem 328er geht, kannst Du auch auf dem tiny machen. aber:
viel schwieriger, aufwändiger, sch.-sucherei, ärger, wenige tutorials usw. warum sollte man sich das antun?
zahl einen euro mehr und nimm den atmega8 oder gleich den 328.

das, meiner meinung nach, ärgerlichere daran ist, daß es keinen mega mit weniger beinchen gibt, oft braucht man ja kaum was...

gruß stefan

@Admin
Sorry habe das mit dem Code usw eben erst gelesen.

@ Eisbar
da muss ich dir zustimmen und ich bin echt am überlegen ob ich nicht bei dem 328er bleibe worauf mein code ja läuft. Warum ist das kleine Ding so verdammt umständlich?!?
Hab mir extra ein nettes Shield gebastelt um den 85er zu programmieren...

Habe mein Code nochmal überarbeitet und jetzt motzt die IDE über den Servo :0

//Temperaturregelung Wintergarten//


#include <SoftwareSerial.h>
const int rx=3;
const int tx=1;
SoftwareSerial mySerial(rx, tx);

#include <Servo.h>
Servo servo1;


float tempC;
const int tempPin = 2; // Temperatursonsor an analog Pin 0 bei Arduino | bei ATTINY85 an pin 2
const int ledPin = 0; // LED an Pin 13 bei Arduino | bei ATTINY85 an pin 0
int pos = 0; // Servoposition

// Setup

void setup()
{
  pinMode(rx,INPUT);
  pinMode(tx,OUTPUT);
 mySerial.begin(9600); // öffnet den Serialport zur Comunikation mit dem Sensor 
 pinMode(ledPin, OUTPUT);
 servo1.attach(5);
}


void loop()
{
 tempC = analogRead(tempPin); // liest den Temperaturpin aus
 tempC = (5.0*tempC*100.0)/1024.0;
 mySerial.println((byte)tempC);
  if (tempC >26)  // wenn die Temp über 26 C ist leuchtet die led
  {
   pos = 180; // Servo öffnet
   digitalWrite(ledPin, HIGH); // Led an
   servo1.write(pos);
  }
  else
  {
    pos = 0; // Servo schließt
    digitalWrite(ledPin, LOW); // Led aus
    servo1.write(pos);
  }
  delay(1000);
}

Die Fehlermeldungen lauten nun:

D:\Program Files (x86)\Arduino\libraries\Servo\Servo.cpp: In function 'void __vector_3()':
D:\Program Files (x86)\Arduino\libraries\Servo\Servo.cpp:105: error: cannot convert 'volatile uint8_t*' to 'volatile uint16_t*' for argument '2' to 'void handle_interrupts(timer16_Sequence_t, volatile uint16_t*, volatile uint16_t*)'
D:\Program Files (x86)\Arduino\libraries\Servo\Servo.cpp: In function 'void initISR(timer16_Sequence_t)':
D:\Program Files (x86)\Arduino\libraries\Servo\Servo.cpp:151: error: 'TCCR1A' was not declared in this scope
D:\Program Files (x86)\Arduino\libraries\Servo\Servo.cpp:152: error: 'TCCR1B' was not declared in this scope
D:\Program Files (x86)\Arduino\libraries\Servo\Servo.cpp:159: error: 'TIFR1' was not declared in this scope
D:\Program Files (x86)\Arduino\libraries\Servo\Servo.cpp:160: error: 'TIMSK1' was not declared in this scope

hi,

hast Du auch nicht vergessen, in der IDE wieder auf UNO zu stellen?

gruß stefan

  1. setze den pinMode auch für den Temperatur Pin
  2. entferne alles was Serial betrifft, der wird nicht benötigt für den Temperatursensir, der hängt nur an Pin 2 mehr nicht
  3. Versuch noch eine Hysteresekurve einzubauen damit der servo bei 27,9 und 28,0 nicht immer hin und her springt

@Eisbaer
warum auf uno umstellen? ich will es doch auf dem Attiny haben...da muss doch die IDE auf Attiny stehen...

@gloob
Punkt1=erledigt
Punkt2=ich dachte das ich den rx/tx brauche weil der Attiny keinen HardwareSerial hat?!?
Punkt3= :astonished:?!?

Du brauchst überhaupt keinen serial weder Hardware noch software

ok...hab das alles gelöscht...die IDE steht auf attiny85 und die Fehlermeldungen sind die gleichen

hi,

@Eisbaer
warum auf uno umstellen? ich will es doch auf dem Attiny haben...da muss doch die IDE auf Attiny stehen...

sorry, nach Deinem post dachte ich, Du nimmst jetzt doch den 328er.

gruß stefan

@Eisbaer
kein Problem :wink:
das kleine Sch...ding (Attiny85) hat mich die ganze Nacht wachgehalten und da kann ich nicht so einfach aufhören außer er beschreitet eine balistische Flugbahn durch das offene Fenster was aber nicht mehr all zu lange dauert! :0

Ich kann meine IDE nicht auf den Attiny85 umstellen. Daher habe ich es mal auf "Uno" stehen lassen und deinen oben stehenden Sketch kompiliert. Da kam keine Fehlermeldung.

Frank

@Gelegenheitsbastler
Moin...
das ist richtig. wenn ich meine auf Uno umstelle ist die Fehlermeldung bei mir auch weg.

@ALL
Hiermit melde ich das der Attiny sich soeben mit dem Pflaster im Hof verbunden hat und ich wie von Eisbaer empfohlen wieder auf nen 328er gehe.
Ich bedanke mich bei euch für eure Tipps und bin mir sicher das ich bald mal wieder eine Frage haben werde :smiley:

Na das nenne ich mal konsequent :wink:

Du könntest den 328er im Arduino fertig machen, rausnehmen und mit Minimalbestückung ohne Arduino-Board laufen lassen. Aber ich denke das weisst du schon längst.

Frank

endweder so oder ich mache mir dann an den standalone noch stiftleisten das ich ihn dort auch programmieren kann.
werde ihn dann so aufbauen

aber wenn ich mir das alles mal so durchrechne...
328er = 3-4,-
platine = 1,-
7805, buchse, kondensator, usw = 2,-
dann kann ich mir auch für 6,60 ein aruino nano im land des lächelns bestellen :0

hi,

gratuliere erstmal zum glücklichen absch(l)uß des attiny-projektes (ich hab' noch 10 von diesen kleinen scheißerchen herumliegen).

minimal heißt in diesem fall wirklich minimal. wenn Dir 8MHz genügen, brauchst Du außer einem atmega8 um 1,60 garnichts.

gruß stefan

lol danke!

brauch der nicht den quarz usw?

hi,

nein, einen mit 8MHz hat er ja eingebaut. nur wenn Du 16MHz willst, brauchst Du einen externen quarz.

aber Du hast schon recht. alles selber zu machen, statt gleich einen fertigen zu nehmen, hat ungefähr den gleichen sinn, wie es unbedingt auf einen tiny kriegen zu wollen.
kann man, muß man aber nicht...

gruß stefan

das mit dem 8MHz und dem Quarz wusste ich nicht...Danke!
ich denke das ich nächste woche mal 2 Nano`s bestelle. einen brauche ich ja noch für meine Qlocktwo die ich noch im Bau habe und den anderen zum testen :wink:
aber es ist echt schon hart das man für den Preis einen fertigen Arduino bekommt...

Die Aktion mit dem "Scheißerchen" wäre eigentlich was für Youtub gewesen...Attiny startet...Kater hinterher uns stoppt zum Glück auf der Fensterbank...keine 5 Sekunden später rauscht meine Nachbarin mit dem auto drüber! XD