Pages: [1] 2   Go Down
Author Topic: Sketch von Uno auf Attiny85  (Read 1199 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

Code:
//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 :-D

MfG Micha
« Last Edit: July 26, 2013, 02:04:21 am by uwefed » Logged

Hamburg, Germany
Offline Offline
Sr. Member
****
Karma: 5
Posts: 291
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Der ATtiny85 hat kein HardwareSerial/ UART. Das geht aber z.B. mit der SoftwareSerial-Bibliothek.
« Last Edit: July 26, 2013, 01:16:00 am by markbee » Logged


Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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  smiley-mad

Code:
//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:
Code:
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
« Last Edit: July 26, 2013, 03:45:31 am by Micha81 » Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

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

gruß stefan
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: July 26, 2013, 04:01:22 am by gloob » Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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= smiley-eek?!?
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Du brauchst überhaupt keinen serial weder Hardware noch software
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

Quote
@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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Eisbaer
kein Problem  smiley-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! smiley-mad
Logged

NRW
Offline Offline
Full Member
***
Karma: 1
Posts: 129
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Anfänger, der sich am Mega versucht. (Wegen Pin-Mangel bin ich vom Uno auf den Mega umgestiegen) Aktuelles Projekt: http://mfc-wittgenstein.

Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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-grin
Logged

NRW
Offline Offline
Full Member
***
Karma: 1
Posts: 129
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Na das nenne ich mal konsequent smiley-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
Logged

Anfänger, der sich am Mega versucht. (Wegen Pin-Mangel bin ich vom Uno auf den Mega umgestiegen) Aktuelles Projekt: http://mfc-wittgenstein.

Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

endweder so oder ich mache mir dann an den standalone noch stiftleisten das ich ihn dort auch programmieren kann.
werde ihn dann so aufbauen
http://arduino.cc/en/Main/Standalone
Logged

Pages: [1] 2   Go Up
Jump to: