Arduino If Abfrage?

3 Antworten

Irgendwie erschließt sich mir der Sinn eines Arduinos in deinem Vorhaben nicht ganz, du willst das High-Signal eines Tasters dazu nutzen um ein exakt identisches High-Signal am Arduino auszugeben.

Am besten ist immer erst mal den bisherigen Code hier zu posten.

Die Referenz des Arduino ist eigendlich selbsterklären und es gibt genug beispiele dabei. Wie erzeugst Du den Ton denn, den du ausgeben willst? Es ist ja nicht nur damit getan, einen Ausgang auf HIGH zu schalten, damit ein Lautsprecher was macht, sondern du musst eine Frequenz erzeugen. Machst Du das mit "Tone"?

If (Taster == High){
"Befehl für Tonausgabe hier einfügen"
}
else
{
"Tonausschaltbefehl"
}

wäre die ungefähre Schreibweise, was Du suchst...


Luegu 
Fragesteller
 18.04.2019, 19:01

Also ich hab nur so nen Piepteil das nur einen Ton erzeugen kann wie is da der Befehl um den einzuschalten?

sry für meine Unwissenheit aber ich hab erst gestern damit angefangen

0
RareDevil  18.04.2019, 19:06
@Luegu

Erst mal, hast Du überhaupt schon einen Code geschrieben? Also Ein/Ausgangspins definiert ect? Dein bisheriger Code wäre dann immernoch hilfreich...

Dann weiß ich, ob Du nur den Befehl noch brauchst, oder auch die ganzen anderen Definitionen.... Also einmal den Sketch kopieren und hier einfügen, den Du schon hast. Bitte mit den Texttool für CODE, wie ich das auch gemacht habe. Ist übersichtlicher...

0
Luegu 
Fragesteller
 18.04.2019, 19:07
@RareDevil

Bis jetzt hab ich das:

#define BEEP 12

#define BUTTON 16

void setup()

{

 pinMode(12, OUTPUT);

 pinMode(16, INPUT);

}

void loop()

{

}

0
Luegu 
Fragesteller
 18.04.2019, 19:13
@Luegu

Das BEEP und BUTTON hab ich nur gemacht damit ich besser drauskomm

0
RareDevil  18.04.2019, 19:18
@Luegu

Wenn Du Namen definierst, musst Du nicht mehr die Nummern angeben, sondern kannst auch mit den Namen arbeiten... Nur nebenbei...

#define BEEP 12
#define BUTTON 16

void setup()
{
 pinMode(12, OUTPUT);
 pinMode(16, INPUT);
}

void loop()
{
if (BUTTON == HIGH){
  tone(BEEP, 3000);
}
else
{
  noTone(BEEP);
}
}

Du kannst statt BEEP und BUTTON auch die Nummern der Pins schreiben, wenn Dir das besser gefällt...

Glaube, für tone() brauchst Du keinen Ausgang definieren, zumindest im Beispiel ist das nicht gemacht. Demnach müsstest Du nur den Eingang definieren...

0
Luegu 
Fragesteller
 18.04.2019, 19:19
@RareDevil

Welchen eingang?

schon mal danke viel mal

0
RareDevil  18.04.2019, 19:27
@Luegu

Man sollte nicht paar sachen gleichzeitig machen.. Hab nen dicken Fehler im Code... (digitalRead vergessen)

#define BEEP 12
#define BUTTON 16

void setup()
{
 pinMode(16, INPUT);
}

void loop()
{
if (digitalRead(BUTTON == HIGH)){
  tone(BEEP, 3000);
}
else
{
  noTone(BEEP);
}
}

So sollte es passen... BEEP als Output musst Du nicht im Setup festlegen... tone setzt den automatisch als Ausgang... Wenn BEEP nicht reagiert, musst Du ggf statt BEEP bei tone und noTone die Ziffer 12 eintragen... Hab mit #define noch nicht gearbeitet. Ka, ob das so auch geht... Fehler gibt es zumindest keine

0
Luegu 
Fragesteller
 18.04.2019, 19:29
@RareDevil

Ok danke viel mal ich probiers direkt mal aus :D

0
Luegu 
Fragesteller
 18.04.2019, 19:31
@RareDevil

So piept der "Tonerzeuger einfach ununterbrochen und der Knopf macht farnichts liegt das dann an der Verkabelung?

0
RareDevil  18.04.2019, 19:45
@Luegu

Kann sein. Wie hast Du den Taster denn angeschlossen? Mit PullDown-Widerstand?

0
Luegu 
Fragesteller
 18.04.2019, 19:50
@RareDevil

Was ist das? sry dass ich so dumm bin xD

0
RareDevil  18.04.2019, 20:04
@Luegu

Das hat mit Dumm gar nichts zu tun. Es fehlen nur die Grundlagen, da DU ein paar Schritte überspringst... Meist fängt man an, und lernt erst mal die Grundlagen (Am besten mit einem Tutorial, das Schritt für Schritt die Funktionen und Besinderheiten erklärt)

Machen wir es kurz. Ein nicht beschalteter Eingang hat beim Arduino und anderen Mikrokontrollern keinen definierten Zustand. Wenn Du also einen Taster von + zum Eingang schaltest, ist der Eingang HIGH wenn Du den Taster drückst, lässt Du ihn los, ist er alles, nur nicht mehr HIGH oder LOW. Der reagiert auf alles. Deshalb nimmt man einen Widerstand und schaltet den Eingang damit auf Masse. Dann ist er immer LOW bis der Taster gedrückt wird.

Hat man keinen Widerstand, kann man sich eines Tricks bedienen (eig immer besser). Man definiert den Eingang mit "INPUT_PULLUP" als HIGH. Es wird intern ein Widerstand geschaltet, damit der Eingang immer HIGH ist, ohne das was angeschlossen ist. Den Taster schaltet man zwischen Masse und Eingang. Drückt man ihn, ist der EIngang dann LOW, lässt man ihn los, ist er wieder HIGH. Man muss nur dran denken, das man LOW abfragen muss, weil bei Betätigung eben der Eingang von 5V (3,3V je nach Typ) auf Masse gezogen wird.

Also Taster auf Minus bzw Masse legen und das andere Ende an den Eingang 16. Dann den neuen Code verwenden: (Hab Dir mal Anmerkungen mit reingeschrieben, um die Schritte besser zu verstehen)

#define BEEP 12 //Pin12 wird der Name BEEP zugewiesen
#define BUTTON 16 //Pin16 wird der Name BUTTON zugewiesen

void setup()
{
 pinMode(16, INPUT_PULLUP); //Pin16 wird als Eingang definiert und der interne Widerstand aktiviert
}

void loop()
{
if (digitalRead(BUTTON == LOW)){ //prüft Eingang auf LOW-Signal (Taster wurde gedrückt und schaltet auf Masse)
  tone(BEEP, 3000); // Tone wird auf BEEP (Pin12) ausgegeben, und zwar mit 3000Hz)
}
else // Wenn die Bedingung nicht erfüllt ist, wird stattdessen folgender Befehl ausgegeben
{
  noTone(BEEP); //BEEP wird deaktiviert, die Tonausgabe stoppt
}
}
1

Welches Modell von Arduino. Es gibt viele Modelle vom Arduino (Nano, Mega, etc.)

Woher ich das weiß:eigene Erfahrung – Hobby und Erfahrung

Luegu 
Fragesteller
 18.04.2019, 18:01

Ich glaube nano also ich habe bei Werkzeuge das Board adafruit Feather HUZZA esp8266 ausgewählt und da kann ich meine Codes hochladen mit

0
RareDevil  18.04.2019, 18:52
@Luegu

Es ist schade, das Du nicht mal weißt, welches Board du gekauft hast... Nano und esp8266 sind zumindest absolut unterschiedlich... Wenn du einen esp8266 einstellen musst, wird es auch ein esp8266 sein, und kein Nano... ;)

0
Luegu 
Fragesteller
 18.04.2019, 18:59
@RareDevil

Ich habs net gekauft sondern von nem Informatiker in nem Plastiksack geschenkt bekommen mit ein wenig Zubehör

0