Ich möchte einen ATtiny85 mit einem Arduino programmieren. Das bekomme
ich mit den gefundenen Tutorials soweit hin. Nun würde ich aber gerne
Daten, die über einen analogen Eingang des ATtiny85 rein kommen, im
seriellen Monitor anzeigen lassen. Dazu muss man den ATtiny85 wohl mit
8Mhz programmieren. Auch werde ich hin bekommen, denke ich. Aber wie
muss das im Sketch gemacht werden?
Es sind meine ersten Versuche, mich mit dem Programmieren anzufreunden,
nur leider komme ich da nicht weiter. Auch die Fehlermeldung bringt mich
nicht weiter. Kann mir jemand sagen, was genau da noch fehlt?
1
#include<SoftwareSerial.h>
2
3
voidsetup(){
4
Serial.begin(9600);
5
}
6
voidloop(){
7
Serial.println("HUHU");//schreibe nach seriell
8
delay(1000);// eine Sekunde waten
9
Serial.println(12345);//schreibe nach seriell
10
delay(1000);// eine Sekunde waten
11
}
sketch_jul17b.ino: In function ‘void setup()’:
sketch_jul17b:8: error: ‘Serial’ was not declared in this scope
sketch_jul17b.ino: In function ‘void loop()’:
sketch_jul17b:11: error: ‘Serial’ was not declared in this scope
Die IDE meckert nicht mehr. Ob es wirklich klappt, weiß ich erst, wenn
der ATtiny eingetroffen ist. Er ist noch auf dem Postweg.
Aber ich habe schon die nächsten Fragen:
Welche Pins (meine Nummerierung bezieht sich auf die klassische
Zählweise oben links 1, oben rechts 8) kann oder muss man für
SoftwareSerial nutzen? Ich habe ein Projekt gefunden, bei dem Pin 2 als
Rx und Pin 3 als Tx genommen wurde. Kann ich dafür auch andere Pins
nehmen? Für mein Projekt bräuchte ich nämlich eigentlich zwei analoge
Eingänge, aber nur einen digitalen Ausgang. Mir würde also z. B. die
Kombination Pin 5 und Pin 3 für SoftwareSerial besser passen. Aber geht
das überhaupt?
Leider konnte ich bisher keine Infos zu der Frage finden, wie die Ports
genutzt werden können. Mal abgesehen von so etwas:
http://electronicavm.files.wordpress.com/2012/06/microcontroller-reference-sheet-a4.png
Frank
schau mal in dem Beispiel was ich verlinkt hatte, dort ist auch eine
Beschreibung der Bibliothek.
Wie ich das sehe kannst du als TX jeden Pin nehmen, als RX nur PINs die
einen PinChangeInterupt unterstützen.
Sascha
Sascha Weber schrieb:> Wie ich das sehe kannst du als TX jeden Pin nehmen, als RX nur PINs die> einen PinChangeInterupt unterstützen.
Das können beim ATtiny85 alle Pins. Außer VCC und GND. ;-)
Danke für die Infos.
Ich bekomme den ATtiny85 zwar über den Arduino programmiert und das
Oszilloskop zeigt mir an, dass alles wunschgemäß funktioniet. Aber wie
muss ich ihn anschließen, damit ich die Daten über die serielle Konsole
auslesen kann?
Auch habe ich noch nicht ganz verstanden, wie ich die Pins definieren
soll. Es gibt sowohl einen digitalen Pin1 als auch einen analogen Pin1.
Ich habe es nun so versucht, bekomme aber keine Ausgabe:
1
#include<SoftwareSerial.h>
2
3
constintPortAnalogIn=A1;// Dies ist der analoge Eingang PIN7
4
constintPortAnalogOut=A2;// Dies ist der analoge Ausgang PIN3
5
constintPortDigitalOut=0;// Dies ist der digitale Ausgang PIN5
6
7
constintValueLow=698;// Dies ist der Wert, ab dem Low erkannt wird, Wertebereich 0 bis 1023
8
constintValueHigh=699;// Dies ist der Wert, ab dem High erkannt wird, Wertebereich 0 bis 1023
9
10
constintTimeOutLow=0;// Dies ist die Wartezeit für Low in Millisekunden
11
constintTimeOutHigh=400;// Dies ist die Wartezeit für High, ebenfalls in Millisekunden
12
13
SoftwareSerialmySerial(1,A3);
14
.
15
.
16
.
Gibt es einen Trick, mit dem die Werte auf den seriellen Monitor kommen?
Frank
Scherzkeks. Der Sketch läuft auf dem Arduino incl. Ausgabe auf dem
seriellen Monitor problemlos. Nur die Anpassung an den ATtiny85 will
nicht so recht laufen. Ich ging davon aus, dass es einen Fehler mit
meiner Benennung der Pins gibt, kann ihn aber nicht finden. Hier der
Rest des Sketches:
Dein gesuchter Trick nennt sich Debugging. Also versuchst du den Fehler
einzugrenzen um ihn beheben zu können. Erster Ansatzpunkt wird wohl die
Software-serielle Schnittstelle zu sein. Versuch doch erst einmal ein
Programm zu schreiben das etwas ausgiebt.
Wenn ich mich recht erinnere, werden die Pins in der Arduino Umgebung
als Nummern zwischen 0 (für PORTA0) bis 31 (PORTD7) durchnummeriert
(Vermutlich gibt es jetzt auch Erweiterungen für PORTE und höher). PORTB
des ATTiny wären dann die Pinnummern 8(PORTB0) bis 15(PORTB7).
Ob <SoftwareSerial.h> sich auch daran hält, weiss ich aber nicht.
@Gast: Wenn Du den Sketch gelesen hättest, dann hättest Du gesehen, dass
etwas ausgegeben wird.
@all: Das Problem ist gelöst. Es liegt am Arduino Uno. Es ist egal, ob
ich den Atmel im Sockel lasse oder entnehme, Reset nach GND mit einer
Brücke oder einem Kondensator verbinde, es kommt immer nur Datenmüll an.
Erst als ich auf die Idee kam, einen USB-TTL Adapter zu probieren,
klappte es. Der Text sah endlich so aus, wie er soll. Laut ersten
Messungen mit dem Oszilloskop verhalten sich die physischen Pins 3 (A2)
und 5 (0) genau so, wie es der Sketch vorgibt. Insofern scheinen auch
die Bezeichnung im Sketch richtig zu sein.
Vorher hatte ich den UNO (zwei verschiedene, um einen Hardwarefehler
auszuschließen) angeschlossen (5V, GND und D2). Es kam zwar etwas an,
aber das war nur eine wilde Mischung irgendwelcher Zeichen.
Erst der USB-TTL Wandler brachte Ordnung in das Zeichenchaos. Inzwischen
habe ich testweise den Nano auch mal angeklemmt. Wieso auch immer, damit
funktioniert es ebenfalls. Im Gegentest mit den UNOs bei exakt gleicher
Beschaltung geht es nicht. Ein Uno ist ein "Original", der andere UNO
und der Nano sind China-Nachbauten.
Frank
Hallo zusammen.
Ja ich ich weiss, etwas spät, aber vieleicht interesiert es doch noch
jemand.
Ich nenne es Trick 220 ;-)
Arduino Attiny
5V ------------------ 5V
RX ------220ohm------ TX
TX ------220ohm------ RX
GND ------------------ GND
Alles klar?