ATtiny 45 "Print Befehl auf Knopfdruck!"

Gast #4368034
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);
}
Gast
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
}
Gast
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
Gast
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"?
Gast
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.
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.
Gast
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. =)
Gast
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
}
Persönliche Seite
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.
Gast
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
Gast
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.
Gast
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
Persönliche Seite
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.
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.
Gast
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
}
Gast
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?
Gast
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
Gast
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.
Gast
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?
Gast
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.
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.
(Firma: matzetronics)
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).
Gast
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.
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...
Gast
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.