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
  Problem mit SD Card Library BennIY 4 190 06.10.2016 18:38
Letzter Beitrag: Bitklopfer
  Problem mit SD.remove Eichner 6 211 22.08.2016 19:42
Letzter Beitrag: Eichner
  4x16 Tastermatrix Problem Michel 16 845 14.07.2016 10:02
Letzter Beitrag: StephanBuerger
  Problem mit Delay und Millis funnyzocker 1 458 26.06.2016 09:54
Letzter Beitrag: hotsystems
  2 Tasten drücken damit licht angeht tjard 11 549 19.06.2016 12:24
Letzter Beitrag: hotsystems
  Problem mit ESP8266 und EMail senden torsten_156 1 597 13.06.2016 21:14
Letzter Beitrag: torsten_156
  ESP8266_01 flashen - Problem torsten_156 12 1.048 30.05.2016 20:12
Letzter Beitrag: torsten_156
  Hardwareserial/Softserial: Problem mit Superklasse tuxedo0801 10 478 19.05.2016 12:25
Letzter Beitrag: amithlon
  ESP8266 HTML Problem arduino_weatherstation 1 494 25.04.2016 21:52
Letzter Beitrag: rkuehle
  Problem mit OLED 0.96" Display torsten_156 3 539 03.04.2016 15:10
Letzter Beitrag: hotsystems

Gehe zu:


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