Forum: Mikrocontroller und Digitale Elektronik ATtiny 45 "Print Befehl auf Knopfdruck!"


von Hans85 (Gast)


Lesenswert?

Hallo Leute,

ich hab ne Frage und zwar ich würde gerne einen ATtiny45 so 
programmieren das er auf Knopfdruck eine Ausgabe(Text) über TX macht. 
Das ganze soll erst dann wieder aufhöhren wenn ich den Taster loslasse, 
bis dahin soll er solange den Befehl senden bis ich loslasse!

Könnte mir da bitte jemand helfen da ich in dem Bereich uC ein Neuling 
bin.

Den Software UART konnte ich einrichten aber wie binde ich den Befehl so 
ein das er beim drücken gesendet wird?

MfG Hans

[c]
#include <SoftwareSerial.h>
#  define rxPin 3
#  define txPin 4
  SoftwareSerial _bluetoothSerial = SoftwareSerial(rxPin, txPin);


void setup() {

  // initialize serial communications at 9600 bps:
  _bluetoothSerial.begin(9600);

  delay(100);
}


void loop() {
  _bluetoothSerial.println("Hello Zero Tiny!");

  // delay for 1 second
  delay(1000);
}

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du könntest in deine Arduino loop() einfach eine
1
while (Knopfdruck) {
2
 bluetoothblabla...
3
 }
einbasteln.
Den Knopfdruck wirst du wohl als DigitalInput(sowienoch) konfigurieren 
müssen, wimre.

: Bearbeitet durch User
von Hans85 (Gast)


Lesenswert?

Also so?
1
#include <SoftwareSerial.h>
2
#  define rxPin 3
3
#  define txPin 4 // NOTE: pin 3 is equal to physical pin 2: see http://fc04.deviantart.net/fs70/f/2013/038/3/7/attiny_web_by_pighixxx-d5u4aur.png
4
  SoftwareSerial _bluetoothSerial = SoftwareSerial(rxPin, txPin);
5
#define BUTTON_PIN 7
6
7
void setup() {
8
 
9
  pinMode(BUTTON_PIN, INPUT)
10
  // initialize serial communications at 9600 bps:
11
  _bluetoothSerial.begin(9600); 
12
13
  delay(100); 
14
}
15
16
17
void loop() {
18
 while (BUTTON_PIN) {
19
  _bluetoothSerial.println("Hello Zero Tiny!");     
20
21
  // delay for 1 second
22
  delay(1000);  
23
}

von Hans85 (Gast)


Lesenswert?

Also wenn ich es mit Arduino überprüfe zeigt er mir Fehler an.
Ich bin echt ne Niete in so was!
kannste mir es bitte bitte so machen das es funktioniert. :)

mfg Hans

von asdf (Gast)


Lesenswert?

Hans85 schrieb:
> Also wenn ich es mit Arduino überprüfe zeigt er mir Fehler an.
> Ich bin echt ne Niete in so was!

Vor allem eine Niete, uns mal den Fehler mitzuteilen :-)
Oder hält er etwa ein Schild hoch, auf dem nur steht "Fehler"?

von Hans85 (Gast)


Lesenswert?

das wird angezeigt!
1
sketch_oct29a.ino: In function 'void setup()':
2
sketch_oct29a.ino:22:3: error: expected ';' before '_bluetoothSerial'
3
sketch_oct29a.ino: At global scope:
4
sketch_oct29a.ino:29:2: error: expected initializer before 'while'
5
sketch_oct29a.ino:33:8: error: expected constructor, destructor, or type conversion before '(' token
6
sketch_oct29a.ino:34:1: error: expected declaration before '}' token
7
Fehler beim Kompilieren.

von Thomas E. (thomase)


Lesenswert?

asdf schrieb:
> Oder hält er etwa ein Schild hoch, auf dem nur steht "Fehler"?

Wieso? Das ist doch offensichtlich.
1
#define BUTTON_PIN 7
2
...
3
while (BUTTON_PIN)

Er sendet ohne Taste.

Hans85 schrieb:
> kannste mir es bitte bitte so machen das es funktioniert.

Da steht es doch:

Matthias S. schrieb:
> Du könntest in deine Arduino loop() einfach einewhile (Knopfdruck)
> {
>  bluetoothblabla...
>  }einbasteln.
> Den Knopfdruck wirst du wohl als DigitalInput(sowienoch) konfigurieren
> müssen, wimre.

mfg.

von Helferlein (Gast)


Lesenswert?

Beim pinMode fehlt das ";" und bei der while loop ein "}".

von Helferlein (Gast)


Lesenswert?

Wollte grad noch fragen wieso er denn ohne Pin sendet, weil wird ja 
definiert. Dann hab ich mir aber mal kurz das Arduino pinout zum Attiny 
angeschaut. =)

von Hans85 (Gast)


Lesenswert?

Also jetzt passt alles! Hoffe es funktioniert auch am Attiny.
Vielen Danke Leute!!
1
 */
2
// attiny85 uses software serial
3
#include <SoftwareSerial.h>
4
#  define rxPin 3
5
#  define txPin 4 // NOTE: pin 3 is equal to physical pin 2: see http://fc04.deviantart.net/fs70/f/2013/038/3/7/attiny_web_by_pighixxx-d5u4aur.png
6
  SoftwareSerial _bluetoothSerial = SoftwareSerial(rxPin, txPin);
7
#  define BUTTON_PIN 7
8
9
void setup() {
10
 
11
  pinMode(BUTTON_PIN, INPUT);
12
  // initialize serial communications at 9600 bps:
13
  _bluetoothSerial.begin(9600); 
14
15
  delay(100); 
16
}
17
18
19
void loop() {
20
  
21
  while (BUTTON_PIN) {
22
 _bluetoothSerial.println("Hello World!");     
23
}
24
  // delay for 1 second
25
  delay(1000);  
26
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, das funktioniert nicht.

Das Ding sendet immer.

Obendrein hast Du eine Endlosschleife in loop() - die gehört da nicht 
hin.

Du willst jetzt herausfinden, wie man auf einem Arduino einen Eingang 
abfragt.

Derzeit rufst Du Deine print-Funktion auf, wenn der Wert 7 wahr ist. Da 
in C-artigen Sprachen jeder Wert als wahr angesehen wird, der nicht 0 
ist, ist das immer der Fall.

von Hans85 (Gast)


Lesenswert?

Hat er recht!

verdammt! kannste mir das mal schreiben wie das geht bitte?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hans85 schrieb:
> kannste mir das mal schreiben wie das geht bitte?

Du siehst in die Dokumentation zum Thema Taster abfragen. Oder 
siehst Dir eines der vermutlich zigtausend Youtube-Tutorials dazu an.

von Hans85 (Gast)


Lesenswert?

das zweite :)

von Thomas E. (thomase)


Lesenswert?

Hans85 schrieb:
> das zweite

Guck lieber in die Doku. Dabei lernst du mehr und nachhaltiger, als wenn 
du dir alle Youtube-Beiträge dazu ansiehst.

mfg.

von Hans85 (Gast)


Lesenswert?

wo find ich die den? oder meinste die vom Arduino?

von Hans85 (Gast)


Lesenswert?

Könnte mir bitte jemand bei dem Code helfen und ihn so schreiben das 
erpasst? ich blick hier net durch und ich brauch nur den Code.

Danke Leute schonmal für die nett und freundlich Hilfe hier!!!!


mfg Hans

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hans85 schrieb:
> Könnte mir bitte jemand bei dem Code helfen und ihn so schreiben das
> erpasst?

Nein. So funktioniert das hier nicht.

Lies selbst:

http://funduino.de/index.php/3-programmieren

von Rektal Invasiver (Gast)


Lesenswert?

Hans85 schrieb:
> ich blick hier net durch und ich brauch nur den Code.

Rufus Τ. F. schrieb:
> Nein. So funktioniert das hier nicht.

Da packt mich die Wut.

Er braucht in seinem Leben wahrscheinlich nur dieses eine Programm 
-sonst Nichts und nie wieder. Da stellt sich der Herr Moderator hin und 
gibt den Oberlehrer. Kotz!

Leider kann ich mit der Arduino-Sprache und/oder C nicht um, sonst wäre 
es mir ein Fest gewesen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rektal Invasiver schrieb:
> Da packt mich die Wut.

Mich packt die Wut bei kompletter Lernverweigerung.

"Hilf mir, aber bring' mir nichts bei".

von Hans85 (Gast)


Lesenswert?

Ich hab null Ahnung von dem Programmieren und brauch wirklich nur das 
eine Programm :)

Bis ich mich in die Materie eingelesen und verstanden habe bin ich alt 
und grau :)

Für die Profis is es doch mit sicherheit ein Kinderspiel! Währe euch 
sehr dankbar!!

mfg Hans

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Damit Du nicht im Inhaltsverzeichnis nachsehen musst:

Lies hier:

http://funduino.de/index.php/3-programmieren/nr-5-tastendruck

Da ist ein kommentiertes Beispiel, wie ein Taster ausgewertet wird.

Das kannst Du übernehmen, Du musst nur anstelle des LED-Krams Deine 
Ausgaben da einbauen.

von Stefan F. (Gast)


Lesenswert?

Für 20 Euro pro Stunde entwickle ich Dir das fertige Programm. 
Ansonsten: Lerne selbst.

von Hans85 (Gast)


Lesenswert?

wie lange dauert das?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du hast jetzt bereits deutlich mehr Zeit damit vergeudet, hier um 
"Hilfe" zu betteln, als es Dich gebraucht hätte, dem von mir geposteten 
Link zu folgen und dort nachzulesen, und das dort geschriebene auf Dein 
fast funktionierendes Progrämmchen anzuwenden.

Irgendwo hast Du das ja auch her, was Du Dir da zusammengereimt hast.

von Holger L. (max5v)


Lesenswert?

Lass dich nicht veräppeln.

Wenn man sich damit nicht auskennt, woher soll man wissen was man in dem 
Beispiel an welcher Stelle ersetzen soll ?

while (digitalRead(BUTTON_PIN) == HIGH)
{
  ...
}

Allerdings wärst du wirklich durch eine kleine Internetrecherche bereits 
fertig.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Holger L. schrieb:
> Wenn man sich damit nicht auskennt, woher soll man wissen was man in dem
> Beispiel an welcher Stelle ersetzen soll ?

Indem man liest und vergleicht.

Da stehen Kommentare, da ist ausführlichst beschrieben, wie so eine 
Tasterauswertung funktioniert.

Das hat nichts mit "veräppeln" zu tun.

von Hans85 (Gast)


Lesenswert?

Also So? ihr wisst noch das ich kein plan davon habe!

Ich frage mich wo es im internet was gibt welches nur ansatzweiße mit 
meinem Problem zu tun hat! Ich wollte euchg nicht belästigen mit meinen 
Fragen aber ich habe nix gefunden was mit Software UART, Taster und 
Print befehl ansatzweise zutun hat. Darum war meine letzte anlaufstelle 
hier bei euch!

1
#include <SoftwareSerial.h>
2
#  define rxPin 3
3
#  define txPin 4 
4
  SoftwareSerial _bluetoothSerial = SoftwareSerial(rxPin, txPin);
5
int taster=7;
6
int tasterstatus=0;
7
8
void setup() {
9
 
10
  pinMode(taster, INPUT);
11
  // initialize serial communications at 9600 bps:
12
  _bluetoothSerial.begin(9600); 
13
14
  delay(100); 
15
}
16
17
18
void loop() {
19
  
20
  while (digitalRead(taster) == HIGH)
21
{
22
  bluetoothSerial.println("Hello World!"); 
23
24
  // delay for 1 second
25
  delay(1000);  
26
}

von Mike A. (Gast)


Lesenswert?

Hans85 schrieb:
> Also So? ihr wisst noch das ich kein plan davon habe!

Warum greifst du dann zu einem Werkzeug, von dem du keinen Schimmer hast 
und zudem du auch nicht bereit bist, dir die Grundlagen anzueignen, die 
man beim Spielen mit den Beispielen normalerweise nach einem Nachmittag 
drauf hat?

von Stefan F. (Gast)


Lesenswert?

Übrigens hat der ATtiny45 ein serielles Interfaces.  Kann Arduino das 
etwa nicht nutzen?

von spess53 (Gast)


Lesenswert?

Hi

>Also So? ihr wisst noch das ich kein plan davon habe!

Ja, hast du oft genug betont.

Aber warum willst du etwas machen, wovon du keine Ahnung hast?

MfG Spess

von Rektal Invasiver (Gast)


Lesenswert?

spess53 schrieb:
> Ja, hast du oft genug betont.
>
> Aber warum willst du etwas machen, wovon du keine Ahnung hast?

Warum versuchst Du, zu antworten, wenn Du nicht helfen kannst?
Langeweile? Geltungsdrang?

Da gab es mal Einen, der ein Auto kaufte. Er konnte mühelos damit 
fahren, es aber nicht bis in's Kleinste durchschauen. Ja, das ist 
verwerflich! Leute, die nicht mindestens ein Maschinenbau-Diplom ihr 
Eigen nennen, sollten nur mit dem Holzroller fahren dürfen.

von asdf (Gast)


Lesenswert?

Rektal Invasiver schrieb:
> Da gab es mal Einen, der ein Auto kaufte. Er konnte mühelos damit
> fahren, es aber nicht bis in's Kleinste durchschauen. Ja, das ist
> verwerflich!

Hier in diesem Fall geht es aber gar nicht darum, dass jemand mit dem 
Auto fahren will. Er will sich ein Auto selber bauen, obwohl er es nicht 
kann. Dieser Vergleich passt viel besser, stimmts?

von Ulrich F. (Gast)


Lesenswert?

Rektal Invasiver schrieb:
> Warum versuchst Du, zu antworten, wenn Du nicht helfen kannst?
> Langeweile? Geltungsdrang?

Nach aufmerksamen lesen deiner Beiträge sehe ich, dass du genau das 
tust, worüber du dich aufregst.
Keinerlei Hilfe für unseren Hans85.

Wie war das noch gleich, mit dem Splitter im Auge des anderen und dem 
Balken vor dem eigenen Schädel?
;-)

PS:
Kann den Widerstand gut verstehen....
Ich helfe auch nur lernwilligen.
Fässer ohne Boden werden nicht gefüllt.

von F. F. (foldi)


Lesenswert?

Hans85 schrieb:
> wie lange dauert das?

Hans, Rufus hat dir zwei Beiträge höher doch schon den genauen Code 
gepostet. Brauchst du nur kopieren und nebenbei ist der schon fertig in 
der Arduino IDE. Unter den Beispielen findest du den.
Ist schon ein bisschen her, seit ich zum letzten Mal die Arduino IDE 
benutzt habe, aber das dürfte sich nicht geändert haben.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefan U. schrieb:
> Übrigens hat der ATtiny45 ein serielles Interfaces.  Kann Arduino das
> etwa nicht nutzen?

Asynchrones UART übers Tiny25/45/85 USI ist schon etwas komplizierter. 
Das Datenblatt verspricht zwar, das es etwas einfacher ist, als es 
komplett in Software zu machen, aber die Soft-UART ist ja beim Arduino 
SDK schon dabei (und läuft beim TE ja auch schon).

von F. F. (foldi)


Lesenswert?

Ulrich F. schrieb:
> PS:
> Kann den Widerstand gut verstehen....
> Ich helfe auch nur lernwilligen.
> Fässer ohne Boden werden nicht gefüllt.

Das kommt dabei raus.

von Stefan F. (Gast)


Lesenswert?

Ich hab noch per Email Kontakt zum TO. Inzwischen hat er weitere 
Anforderungen an das Programm genannt. Ich fasse mal zusammen:

- Am µC sind zwei Taster angeschlossen
- Und ein Bluetooth Modul HM-10 BLE
- Ein Taster löst das Pairing zum Empfänger aus
- Der andere Taster sendet einen Befehl an den Empfänger, um dort einen 
Ausgang auf High zu schalten
- Der Sender soll mit einer CR2032 Batterie betrieben werden- daraus 
ergeben sich weitere Anforderungen zur Energieverwaltung

Was noch fehlt:

- Schaltplan
- Gewünschte Bitrate
- Nennung der Befehle und wie sie terminiert werden
- Timing zwischen den Befehlen
- Fehlerbehandlung
- Konfiguration des Pairings
- Genaue Anforderungen an die Energieverwaltung
- Vermutlich fehlt ein Taster oder Timer, der den Ausgang am Empfänger 
zurück auf Low setzt.
- Fehlererkennung unf Fehlerbehandlung (z.B. wenn das Pairing 
fehlschlägt)
- Bereitstellung eines Prototypen (Hardware) - denn Debugging per Email 
oder Diskussionsforum scheint mir nicht ratsam.

Dass es mit 20 Euro nicht getan ist, habe ich ihm gerade geschrieben. 
Aber vielleicht hat ja hier jemand Lust, das Projekt kostenlos 
fortzuführen. Kommt ja gelegentlich vor. Ich helfe auch manchmal einfach 
aus Spaß an der Herausforderung - heute allerdings nicht.

> Für die Profis is es doch mit sicherheit ein Kinderspiel!

Ganz Recht, aber erst, wenn die Anforderungen sauber formuliert sind und 
nachdem die Machbarkeit geklärt ist.

von Holger L. (max5v)


Lesenswert?

Rufus Τ. F. schrieb:
> Indem man liest und vergleicht.
>
> Da stehen Kommentare, da ist ausführlichst beschrieben, wie so eine
> Tasterauswertung funktioniert.

Ja das ist klar. Aber wenn man komplett neu ist in dieser Welt, und man 
erstmal ein Ergebnis sehen möchte das zeigt das es voran geht benötigt 
man eben schnelle Hilfe ohne sich vorher zwei drei Wochen mit der 
Materie auseinander zu setzen. Dafür gibt es doch solche Module.

Was wirklich nervt ist diese ständige herumnörgelei, das schlecht machen 
anderer um sich selber auf ein Podest zu stellen.

Rufus Τ. F. schrieb:
> Das hat nichts mit "veräppeln" zu tun.

Das bezog sich übrigens auf die bezahlte Hilfe, da der Beitragsersteller 
darauf angesprungen ist. Ich war ein wenig schreibfaul, Samstagabend...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Holger L. schrieb:
> Aber wenn man komplett neu ist in dieser Welt, und man erstmal ein
> Ergebnis sehen möchte das zeigt das es voran geht

Dann arbeitet man so ein Tutorial durch, wie das, was ich verlinkt habe. 
Dafür braucht man keine "zwei drei Wochen", das ist an einem Nachmittag 
erledigt - das mit dem Taster ist schließlich schon der fünfte Schritt.

von Rektal Invasiver (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Dann arbeitet man so ein Tutorial durch, wie das, was ich verlinkt habe.
> Dafür braucht man keine "zwei drei Wochen", das ist an einem Nachmittag
> erledigt

Richtig. Hier sind solche Könner am Werk, die sich sogar ein Studium 
sparen könnten:
Da arbeitet man mal schnell ein Tutorial durch und ist wahlweise 
Informatiker oder E-Techniker -an einem Nachmittag.

Pass nur auf, daß Dir die Arroganz nicht die Hemdknöpfe über der 
geschwellten Brust wegreißt!

von chris_ (Gast)


Lesenswert?

Hallo Hans,

Dein letztes hier gepostetes Programm wird sich nicht kompilieren 
lassen. In der Loop fehlt eine "geschweifte Klammer zu". Zur jeden 
geöffneten Klammer muss es eine "schließende" Klammer geben.

Hier gibt es eine gute Erklärung zur Abfrage von Tastern:
http://starthardware.org/lektion-12-der-taster-und-if-abfrage/

von asdf (Gast)


Lesenswert?

Rektal Invasiver schrieb:
> Da arbeitet man mal schnell ein Tutorial durch und ist wahlweise
> Informatiker oder E-Techniker -an einem Nachmittag.

Schon wieder so ein hinkender Vergleich.
Meinst du, daß ein Informatiker nicht mehr können muß als einen Taster 
abzufragen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rektal Invasiver schrieb:
> Pass nur auf, daß Dir die Arroganz nicht die Hemdknöpfe über der
> geschwellten Brust wegreißt!

Paul, reiß Dich zusammen.

von Rektal Invasiver (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Paul, reiß Dich zusammen.

Nicht nur Paul spricht unbequeme Wahrheiten aus.

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.