PrintIn senden auf Tastendruck

Hallo Leute,

ich habe folgendes Problem und zwar würde ich gerne den printIn "Hello World" erst senden wenn ich eine taste drücke. es funktioniert aber nicht sondern sendet dauernd automatisch.
könnt ihr mir bitte helfen.

MfG

Kai

// attiny85 uses software serial
#include <SoftwareSerial.h>

define rxPin 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

SoftwareSerial _bluetoothSerial = SoftwareSerial(rxPin, txPin);
int taster = 0;

void setup() {

pinMode(taster, INPUT);

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

delay(100);
}

void loop() {
if (digitalRead(taster) == HIGH);

_bluetoothSerial.println("Hello Zero Tiny!");

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

pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors

Schau mal hier

Beispiele sind ja auch in der IDE

Dein Taster ist an Eingang 0 angeschlossen?

"int taster = 0;"

Hab zur kontrolle noch ne LED, die leuchtet wenn ich den taster drücke aber er sendet hat nicht Hello World.

Nimm doch den IDE Beispiel-Sketch und bastle ihn etwas um:

/*
 Input Pullup Serial

 This example demonstrates the use of pinMode(INPUT_PULLUP). It reads a
 digital input on pin 2 and prints the results to the serial monitor.

 The circuit:
 * Momentary switch attached from pin 2 to ground
 * Built-in LED on pin 13

 Unlike pinMode(INPUT), there is no pull-down resistor necessary. An internal
 20K-ohm resistor is pulled to 5V. This configuration causes the input to
 read HIGH when the switch is open, and LOW when it is closed.

 created 14 March 2012
 by Scott Fitzgerald

 http://www.arduino.cc/en/Tutorial/InputPullupSerial

 This example code is in the public domain

 */

void setup() {
  //start serial connection
  Serial.begin(9600);
  //configure pin2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);

}

void loop() {
  //read the pushbutton value into a variable
  int sensorVal = digitalRead(2);
  //print out the value of the pushbutton
  Serial.println(sensorVal);

  // Keep in mind the pullup means the pushbutton's
  // logic is inverted. It goes HIGH when it's open,
  // and LOW when it's pressed. Turn on pin 13 when the
  // button's pressed, and off when it's not:
  if (sensorVal == HIGH) {
    digitalWrite(13, LOW);
  }
  else {
    digitalWrite(13, HIGH);
  }
}

Kaih85:
Hab zur kontrolle noch ne LED, die leuchtet wenn ich den taster drücke aber er sendet hat nicht Hello World.

Oben hast du geschrieben es sendet selber dauernd?!

Und merk dir, dass du den Text schon gesendet hast, bis zum nächsten Taster loslassen :wink:
Das ist besser als den Taster über eine Sekunde lang drücken zu müssen, bis er wieder gelesen wird...

Wenn du die Ports "D0 und D1" auch extern (z.B. für einen Taster) verwendest, kannst du den serialMonitor nicht nutzen.

Du solltest Taster oder andere Elemente immer erst ab D2 nutzen.

Sorry, gilt natürlich nicht für Attiny, hatte ich überlesen.

jep!

zur info ich benutze nur arduino IDE. ich versuche einen ATTiny85 so zu programmieren das ich eine taste drücke und er mir dann das Hello World auf dem PC in RealTerm anzeigt. auf dem Board was ich benutzte is noch ne LED die leuchtet wenn ich den taster drücke!

Kaih85:
Hab zur kontrolle noch ne LED, die leuchtet wenn ich den taster drücke aber er sendet hat nicht Hello World.

Hast du die LED am Eingang? Hmm...

Würde zur Kontrolle besser den seriellen Monitor verwenden...

Schau dir mal die Geschichte mit den Pull Down Wiederstand an. Würde am Eingang die LED weglassen...

ok! led is wech.

stimmt den das programm? bin mir nicht sicher ob das im Loop so stimmt.

Kaih85:
ok! led is wech.

stimmt den das programm? bin mir nicht sicher ob das im Loop so stimmt.

Schaltet der Taster gegen LOW oder HIGH?

Eigentlich reicht es, den Strichpunkt nach der IF-Abfrage zu löschen.

Aber so ist es sicherer:

void loop() {
  if (digitalRead(taster) == HIGH){ 
    _bluetoothSerial.println("Hello Zero Tiny!");    
  } 

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

Warum?
Die IF-Abfrage wirkt auf die erste Anweisung nach der schliessenden Klammer ")".
Wenn da dann steht ");" dann ist der Strichpunkt die erste - leere - Anweisung.

Alles, was in geschweiften Klammern "{ ..}" ist, wird als EINE Anweisung gesehen.

GUNTHERB!!!! DU bist ein GEILER!!!!!!!

DANKE

Kaih85:
GUNTHERB!!!! DU bist ein GEILER!!!!!!!

Ich nehm' das jetzt mal als Kompliment. :kissing: