INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Problem Ton und Licht
11.08.2014, 21:08 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2014 21:19 von KiLLaWaFFeL.)
Beitrag #1
Question Problem Ton und Licht
Hallo zusammen .

Bin neu hier und habe auch grade erst mit dem Arduino angefangen.
Also hab ich noch nicht ganz so viel plan Wink

Ich habe jetzt eine Ampel "gebaut" und ein Programm dafür geschrieben.
Das funktioniert auch.

Aber...

Ich möchte nun einen Lautsprecher anbringen, der über die dauer der Grün Phase
piepst.

Hab es mit einer While Bedingung versucht aber das hat alles nicht so funktioniert wie ich wollte häng da schon 2 Tage dran und ihr seit meine letzte Hoffnung hab auch so nichts im netz dazu gefunden wäre für jede Hilfe dankbar .

Gruß KiLLaWaFFeL

Hier mal mein Programm ( bisher nur die Lichtfunktion )

int Ton=5;
int Rot=7;
int Gelb=8;
int Gruen=9;


void setup()

{
pinMode(Rot, OUTPUT);
pinMode(Gelb, OUTPUT);
pinMode(Gruen, OUTPUT);
pinMode(Ton, OUTPUT);
}

void loop()
{

digitalWrite(Rot, HIGH);
delay (5000);

digitalWrite(Gelb, HIGH);
delay (2000);

digitalWrite(Rot, LOW);
digitalWrite(Gelb, LOW);


digitalWrite(Gruen, HIGH);
delay(4000);
digitalWrite(Gruen, LOW);
digitalWrite(Gelb, HIGH);
delay (2000);
digitalWrite(Gelb, LOW);

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2014, 12:33
Beitrag #2
RE: Problem Ton und Licht
Moin KiLLaWaFFeL,
steht hinter der Groß-/Kleinschreibung des Namenseine bestimmte Bedeutung ?
Hier mal ein angepasster Code. Lies bitte auch die Links durch (leider englisch Huh ) damit du verstehst was passiert. Die Kommentare auch beachten.
Grüße Ricardo
Code:
/* Lautsprecher mittels 100 Ohm Widerstand an Ton-Pin
die andere Seite an GND
siehe:  http://arduino.cc/en/Tutorial/Tone
http://arduino.cc/en/pmwiki.php?n=Reference/Tone
http://arduino.cc/en/Reference/NoTone */
// Die Pins
const int Ton=5;
const int Rot=7;
const int Gelb=8;
const int Gruen=9;
// Die Tonfrequenz
const unsigned int freq=2000;

void setup()
{
  pinMode(Rot, OUTPUT);
  pinMode(Gelb, OUTPUT);
  pinMode(Gruen, OUTPUT);
  pinMode(Ton, OUTPUT);
}
void loop()
{
  digitalWrite(Rot, HIGH);
  xdelay (5000);
  digitalWrite(Gelb, HIGH);
  xdelay (2000);
  digitalWrite(Rot, LOW);
  digitalWrite(Gelb, LOW);
  digitalWrite(Gruen, HIGH);
  // Ton einschalten
  tone(Ton,freq);
  xdelay(4000);
  // Ton ausschalten
  noTone(Ton);
  digitalWrite(Gruen, LOW);
  digitalWrite(Gelb, HIGH);
  xdelay (2000);
  digitalWrite(Gelb, LOW);
}
/* Ersatzfunktion für delay()
delay() hält den Code und viele Komponenten
des Arduino an.
xdelay() verhindert dies */
void xdelay(unsigned long i)
{
  unsigned long last=millis();
  while(millis() - last < i) ;
}

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2014, 13:39
Beitrag #3
RE: Problem Ton und Licht
Hi Ricardo,
ich habe mir mal die Implementierung der delay()-Funktion (in wiring.c) betrachtet. Mir ist nicht ganz klar, weshalb Deine xdelay()-Version weniger blockierend sein sollte. Es sieht sogar so aus, als ob in der delay()-Funktion ein "yield-Konzept" vorgesehen ist, welches möglicherweise von manchen Libraries verwendet wird. Das würdest Du mit dem xdelay() aushebeln.
Könntest Du das mal erklären?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2014, 14:13 (Dieser Beitrag wurde zuletzt bearbeitet: 12.08.2014 14:17 von rkuehle.)
Beitrag #4
RE: Problem Ton und Licht
Hallo Thorsten,

ich habe mir die Implemntierung von delay() nicht extra angesehen, sondern mich einfach nur an den Text von http://arduino.cc/en/pmwiki.php?n=Reference/Delay
gehalten:
Zitat:... the use of delay() in a sketch has significant drawbacks. No other reading of sensors, mathematical calculations, or pin manipulation can go on during the delay function, so in effect, it brings most other activity to a halt.
Wieder ohne nachzuschauen vermute ich mal, dass tone() bzw. noTone() durchaus davon betroffen sind. Kann aer auch falsch sein Huh
Da KiLLaWaFFeL während des delay sowieso nix anderes im Code macht, kann hier ruhig mit while() gearbeitet werden. Um den Unterschied zur echten delay() darzustellen, könnte man anstatt der while-Schleife in einer unterfunktion auch ein if-Statement im Loop() setzen und bei (noch) Nichtzutreffen der Bedingung im else-Zweig andere abzuarbeitende Aufgaben einhängen (das nutze ich auch selbst so).

Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.08.2014, 15:04
Beitrag #5
RE: Problem Ton und Licht
(12.08.2014 14:13)rkuehle schrieb:  ich habe mir die Implemntierung von delay() nicht extra angesehen, sondern mich einfach nur an den Text von http://arduino.cc/en/pmwiki.php?n=Reference/Delay
gehalten:
Das bedeutet im Prinzip nur, dass während die delay()-Funktion abläuft kein anderes "normales" Coding des Sketch abläuft. (Interrupts gehen natürlich trotzdem noch.) Das gilt aber für jede Funktion auf dem Arduino, da wir ja kein Multithreading haben. ...also hilft es nichts, das delay() selbst nachzubauen.
Ich finde das ganze in der Referenz-Doku eigentlich ziemlich überflüssig bzw. verwirrend. Es gilt für jedes Stückchen Coding, dass parallel dazu nichts läuft. Warum sollte delay() da was besonderes sein? ...und woher sollte der Arduino wissen, was dazu parallel laufen soll?

Zitat:Wieder ohne nachzuschauen vermute ich mal, dass tone() bzw. noTone() durchaus davon betroffen sind. Kann aer auch falsch sein Huh
Ganz bestimmt sind die beiden nicht betroffen. Die meisten Anfänger-Anleitungen mit tone() verwenden delay() für die Dauer des Tons. Außerdem hätte ansonsten Deine Version dasselbe Problem.

Zitat:Da KiLLaWaFFeL während des delay sowieso nix anderes im Code macht, kann hier ruhig mit while() gearbeitet werden.
...und noch einfacher mit delay(). SCNR.

Zitat:Um den Unterschied zur echten delay() darzustellen, könnte man anstatt der while-Schleife in einer unterfunktion auch ein if-Statement im Loop() setzen und bei (noch) Nichtzutreffen der Bedingung im else-Zweig andere abzuarbeitende Aufgaben einhängen (das nutze ich auch selbst so).
Ja, dann wird's sinnvoll, sich seine eigene delay()-Funktion zu basteln.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 20:28 (Dieser Beitrag wurde zuletzt bearbeitet: 13.08.2014 20:36 von KiLLaWaFFeL.)
Beitrag #6
RE: Problem Ton und Licht
hey zusammen.

zunächst hat die groß und klein schreibung in meinem namen keine besondere bedeutung. Benutze den so schon ewigkeiten.

erstmal vielen dank für eure antworten. Werde mich jetzt mal dran setzten und schauen wie das alles so funktioniert mit eurer hilfe .

nochmal vielen dank ich meld mich wieder Big Grin

*EDIT*

habe grade gesehen das der Ton anscheinend durchgehend piepst was ich nicht ganz erreichen wollte^^

mein wunsch war es dann das der ton während der Grün Phase an aus an aus usw.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.08.2014, 11:33
Beitrag #7
RE: Problem Ton und Licht
na dann stell mal deinen aktuellen Code rein und sage bitte in welchen zeitabständen der Ton an/ausgehen soll.

Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Bootloader update mit USBASP Problem sepp01 15 644 12.05.2018 17:23
Letzter Beitrag: sepp01
  C++ Library Datenübergabe Problem jose_ph 9 434 08.05.2018 14:10
Letzter Beitrag: Tommy56
  Problem mit der Textauswertung Franz54 13 498 15.04.2018 18:17
Letzter Beitrag: Tommy56
  Problem mit RIFD UID ParadoxDev 6 311 27.03.2018 12:04
Letzter Beitrag: ParadoxDev
  Problem mit OLED 0.96" Display torsten_156 5 1.821 07.03.2018 23:27
Letzter Beitrag: Tommy56
  Ucglib Library Problem Bully 26 1.192 05.03.2018 18:47
Letzter Beitrag: Tommy56
  Problem mit Wire.available() abfrage avoid 1 383 11.01.2018 13:40
Letzter Beitrag: Tommy56
  SerialComInstruments 4 Problem Darstellung Nextero 35 1.602 15.12.2017 18:51
Letzter Beitrag: ElEspanol
  Problem mit Nema17 und A4988 Philthy 6 540 08.12.2017 12:35
Letzter Beitrag: Tommy56
  Arduino -> Controllino [Problem gelöst] Cyrilsneer 17 1.473 27.11.2017 18:49
Letzter Beitrag: Franz54

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste