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
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 272 22.08.2017 15:17
Letzter Beitrag: Tommy56
  Problem mit LSM 303 Snörb 1 203 22.08.2017 14:16
Letzter Beitrag: Snörb
  Problem mit externem Interrupt manfred474 13 841 13.08.2017 08:54
Letzter Beitrag: MicroBahner
  Problem mit Klassen GuaAck 4 326 09.08.2017 09:28
Letzter Beitrag: MicroBahner
Question Problem mit TFT Sam217 8 629 20.07.2017 21:51
Letzter Beitrag: hotsystems
  Problem FastLED fliege_m 3 402 16.07.2017 16:56
Letzter Beitrag: Tommy56
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.225 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Smart Home Webserver Basic Authentication Problem Osotastic 21 1.145 20.02.2017 18:00
Letzter Beitrag: Tommy56
  Problem mit Sketch senden an Uno feuerwehr 5 905 31.01.2017 20:41
Letzter Beitrag: Tommy56
  Beim Hochladen USB Problem Nils 10 1.326 29.12.2016 21:05
Letzter Beitrag: renid55

Gehe zu:


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