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
Von BlinkWithoutDelay zu Wechselton...
26.02.2016, 09:36 (Dieser Beitrag wurde zuletzt bearbeitet: 26.02.2016 10:20 von Clubsport.)
Beitrag #1
Von BlinkWithoutDelay zu Wechselton...
Hallo zusammen,

kann mir mal jemand einen Denkanstoß bitte geben....? Angel
Wie komme ich vom Beispielcode "BlinkWithoutDelay" auf die Ausgabe zwei unterschiedlich hoher Töne ?
Mit delay habe ich das wunderbar hinbekommen, allerdings läuft ja dann nix anderes mehr....

Meine Idee war einfach den Status quasi so zu belassen ( high, low ) , und dann das ganze irgendwie auf zwei unterschiedliche Frequenzen zu mappen..... ?

Grüße, Clubbi

Nachtrag :

Ich habe es jetzt folgendermaßen gelöst, vielleicht nicht die "feine Englische" , aber es läuft Cool :

Code:
/* Martinshorn
*/

// constants won't change. Used here to set a pin number :
const int HornPin =  8;      // the number of the horn pin

// Variables will change :
int HornTone = 440;             // frequency played on the pin (Hz)

unsigned long previousMillis = 0;        // will store last time frequency was updated

// constants won't change :
const long interval = 1000;           // interval at which to change frequency (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(HornPin, OUTPUT);
}

void loop() {

  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    // save the last time you changed the frequency
    previousMillis = currentMillis;

    // if the frequency is 440Hz change to 585Hz and vice-versa:
    if (HornTone == 440) {
      HornTone = 585;
    } else {
      HornTone = 440;
    }

    // set the tone with the actual frequency:
    tone(HornPin, HornTone);
  }
}

Grüße, Clubbi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.02.2016, 22:10
Beitrag #2
RE: Von BlinkWithoutDelay zu Wechselton...
(26.02.2016 09:36)Clubsport schrieb:  Hallo zusammen,

kann mir mal jemand einen Denkanstoß bitte geben....? Angel
Wie komme ich vom Beispielcode "BlinkWithoutDelay" auf die Ausgabe zwei unterschiedlich hoher Töne ?
Mit delay habe ich das wunderbar hinbekommen, allerdings läuft ja dann nix anderes mehr....

Meine Idee war einfach den Status quasi so zu belassen ( high, low ) , und dann das ganze irgendwie auf zwei unterschiedliche Frequenzen zu mappen..... ?

Grüße, Clubbi

Nachtrag :

Ich habe es jetzt folgendermaßen gelöst, vielleicht nicht die "feine Englische" , aber es läuft Cool :

Code:
/* Martinshorn
*/

// constants won't change. Used here to set a pin number :
const int HornPin =  8;      // the number of the horn pin

// Variables will change :
int HornTone = 440;             // frequency played on the pin (Hz)

unsigned long previousMillis = 0;        // will store last time frequency was updated

// constants won't change :
const long interval = 1000;           // interval at which to change frequency (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(HornPin, OUTPUT);
}

void loop() {

  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    // save the last time you changed the frequency
    previousMillis = currentMillis;

    // if the frequency is 440Hz change to 585Hz and vice-versa:
    if (HornTone == 440) {
      HornTone = 585;
    } else {
      HornTone = 440;
    }

    // set the tone with the actual frequency:
    tone(HornPin, HornTone);
  }
}

Grüße, Clubbi

NACHTRAG 2 :

Wie kann ich das ganze realisieren, daß das nach einmaligem Tastendruck als Schleife 3x durchläuft.....?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.02.2016, 22:21
Beitrag #3
RE: Von BlinkWithoutDelay zu Wechselton...
(27.02.2016 22:10)Clubsport schrieb:  
(26.02.2016 09:36)Clubsport schrieb:  Hallo zusammen,

kann mir mal jemand einen Denkanstoß bitte geben....? Angel
Wie komme ich vom Beispielcode "BlinkWithoutDelay" auf die Ausgabe zwei unterschiedlich hoher Töne ?
Mit delay habe ich das wunderbar hinbekommen, allerdings läuft ja dann nix anderes mehr....

Meine Idee war einfach den Status quasi so zu belassen ( high, low ) , und dann das ganze irgendwie auf zwei unterschiedliche Frequenzen zu mappen..... ?

Grüße, Clubbi

Nachtrag :

Ich habe es jetzt folgendermaßen gelöst, vielleicht nicht die "feine Englische" , aber es läuft Cool :

Code:
/* Martinshorn
*/

// constants won't change. Used here to set a pin number :
const int HornPin =  8;      // the number of the horn pin

// Variables will change :
int HornTone = 440;             // frequency played on the pin (Hz)

unsigned long previousMillis = 0;        // will store last time frequency was updated

// constants won't change :
const long interval = 1000;           // interval at which to change frequency (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(HornPin, OUTPUT);
}

void loop() {

  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    // save the last time you changed the frequency
    previousMillis = currentMillis;

    // if the frequency is 440Hz change to 585Hz and vice-versa:
    if (HornTone == 440) {
      HornTone = 585;
    } else {
      HornTone = 440;
    }

    // set the tone with the actual frequency:
    tone(HornPin, HornTone);
  }
}

Grüße, Clubbi

NACHTRAG 2 :

Wie kann ich das ganze realisieren, daß das nach einmaligem Tastendruck als Schleife 3x durchläuft.....?

Ich würde mit einer IF-Formel prüfen ob der Knopf gedrückt ist, wenn ja, dann 3x den ton mit einem delay dazwischen, das man es hört, wenn nix dann den Ausgang low.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.02.2016, 22:38
Beitrag #4
RE: Von BlinkWithoutDelay zu Wechselton...
Hmmm, delay wollte ich da eigentlich raushalten.... Confused
Aber wie begrenze ich das Ganze auf 3 Wiederholungen....? Einfach drei mal hintereinander die Sequenz im Skript runtertippen ??

Grüße, Clubbi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.02.2016, 22:43
Beitrag #5
RE: Von BlinkWithoutDelay zu Wechselton...
(27.02.2016 22:38)Clubsport schrieb:  Hmmm, delay wollte ich da eigentlich raushalten.... Confused
Aber wie begrenze ich das Ganze auf 3 Wiederholungen....? Einfach drei mal hintereinander die Sequenz im Skript runtertippen ??

Grüße, Clubbi
Genau so würde ich es machen.
Ich würde den Delay nur einbauen, wenn du 3 mal den selben Ton hast. Wenn du 3 unterschiedliche Töne benutzt, dann würde ich das auch weglassen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.02.2016, 23:44 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2016 23:46 von hotsystems.)
Beitrag #6
RE: Von BlinkWithoutDelay zu Wechselton...
Damit du den Sketch nicht mit "delays" verunstalten musst, habe ich dir mal ein Beispiel geschrieben. Aktuell "jault" die Sirene 4 mal, nachdem der Taster gedrückt wurde.

Code:
/* Martinshorn
*/

// constants won't change. Used here to set a pin number :
const int HornPin =  8;      // the number of the horn pin
const int Taster = 9;       // Pin D9 des Tasters

// Variables will change :
int HornTone = 440;             // frequency played on the pin (Hz)

unsigned long previousMillis = 0;        // will store last time frequency was updated
unsigned int HornOn = 0;
int a = 0;

// constants won't change :
const long interval = 1000;           // interval at which to change frequency (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(HornPin, OUTPUT);
  pinMode(Taster, INPUT_PULLUP);
}

void loop() {

  if (digitalRead(Taster) == LOW) {
    HornOn = 1;
    a = 0;
  }

  if (HornOn == 1) {
    HornLoop();
  }
  else {
    noTone(8);
  }
}

void HornLoop() {

  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    // save the last time you changed the frequency
    previousMillis = currentMillis;
    // if the frequency is 440Hz change to 585Hz and vice-versa:
    if (HornTone == 440) {
      HornTone = 585;
    } else {
      HornTone = 440;
      a++;
      if (a == 4) {         // Anzahl max. Toene
        HornOn = 0;
      }
    }
  }

  // set the tone with the actual frequency:
  tone(HornPin, HornTone);
}

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.03.2016, 16:55
Beitrag #7
RE: Von BlinkWithoutDelay zu Wechselton...
Was macht das Martinshorn?

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.03.2016, 07:18
Beitrag #8
RE: Von BlinkWithoutDelay zu Wechselton...
Hallo Hotsystems,

danke erstmal für dein Codebeispiel ! Shy Smile
Ich bin ehrlich gesagt noch nicht dazu gekommen das mit einzubauen, da ich viel beruflich unterwegs war...
Ich hätte mich dann auf jeden Fall noch gemeldet, keine Sorge - ich mag es nämlich auch nicht, wenn Leute nur Infos abgreifen und dann nicht mal ein DANKE oder eine Rückmeldung hinbekommen... Cool

Grüße, Clubbi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


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