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); }
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
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 | }
|
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
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"?
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.
Beim pinMode fehlt das ";" und bei der while loop ein "}".
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. =)
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 | }
|
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.
Hat er recht! verdammt! kannste mir das mal schreiben wie das geht bitte?
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.
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.
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
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
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.
Rektal Invasiver schrieb: > Da packt mich die Wut. Mich packt die Wut bei kompletter Lernverweigerung. "Hilf mir, aber bring' mir nichts bei".
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
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.
Für 20 Euro pro Stunde entwickle ich Dir das fertige Programm. Ansonsten: Lerne selbst.
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.
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.
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 | }
|
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?
Übrigens hat der ATtiny45 ein serielles Interfaces. Kann Arduino das etwa nicht nutzen?
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
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.
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?
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.
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).
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.
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...
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.
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!
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/
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?
Rektal Invasiver schrieb: > Pass nur auf, daß Dir die Arroganz nicht die Hemdknöpfe über der > geschwellten Brust wegreißt! Paul, reiß Dich zusammen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.